Desabilita todos os atalhos de teclado do Unity usando a linha de comando

7

Gostaria de saber como posso desativar TODOS os atalhos de teclado através do terminal. Eu sei que você pode desativá-los, indo para:

configurações do sistema > keyboard > atalhos

mas quero desativá-los via terminal. Alguém sabe como isso pode ser feito?

    
por user278551 06.05.2014 / 12:32

2 respostas

10

Não tenho ideia de por que você gostaria de fazer isso e devo avisá-lo que pode ser complicado recuperar os atalhos. Se isso é realmente o que você quer fazer, os comandos abaixo desabilitarão todos os atalhos de teclado. Ambos configurados através da GUI do Unity e qualquer um que você tenha configurado usando ccsm

Desativar os keyindings Unity

  1. Primeiro faça um backup das ligações atuais para que você possa reativá-las mais tarde

    gsettings list-recursively org.gnome.desktop.wm.keybindings | 
       perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' | 
        while IFS=$'\t' read -r key val; do echo -e "$key\t$val"; done > old_settings
    

    Isso criará um arquivo chamado old_settings no seguinte formato:

    schema key <TAB> value
    

    Por exemplo:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. Agora desabilite os atalhos

    gsettings list-recursively org.gnome.desktop.wm.keybindings | 
        perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' | 
            while IFS=$'\t' read -r key val; do gsettings set $key ['']; done
    

    Explicação

    • gsettings list-recursively org.gnome.desktop.wm.keybindings : lista todos os atalhos de teclado e seus valores atuais
    • perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' : isso simplesmente adiciona um caractere TAB ( \t ) separando o valor da chave. Este passo é necessário para poder lê-los adequadamente no próximo.
    • while IFS=$'\t' read -r key val : percorre cada linha e lê a chave em $k e seu valor em $val . $IFS=$'\t' significa dividido em guias para que a chave e o valor sejam lidos corretamente.
    • gsettings set $key [''] : isso realmente define o valor como em branco, desabilitando efetivamente seus atalhos.

    Note que você pode ter que sair e fazer login novamente para que isso tenha efeito.

  3. Obtenha (alguns de) seus atalhos de volta

    while IFS=$'\t' read -r key val; do 
        gsettings set "$key" "$val"
    done < old_settings 
    

    AVISO : Isso provavelmente não funcionará para todas as configurações, pois algumas delas parecem ter um parâmetro extra @as no nome da chave e não sei como lidar com isso. Como eu disse, isso não é uma boa idéia.

B. Desativar seus atalhos personalizados definidos em ccsm

gsettings set org.gnome.settings-daemon.plugins.media-keys active false

Desta vez, recuperá-los é fácil. Tudo que você precisa fazer é executar

gsettings set org.gnome.settings-daemon.plugins.media-keys active true
    
por terdon 06.05.2014 / 16:50
2

Eu construí sobre a resposta do @Terdon e fiz um script para fazer o mesmo , mas faz isso de uma maneira um pouco mais amigável.

Você poderia usá-lo assim:

gnome-key-bindings --unset-all --except 'close|switch-applications'

Como eu gosto de usar as atalhos de teclado padrão Alt-F4 e Alt-Tab (e a inversão usando shift), isso removeria todas as combinações de teclas, exceto estas.

Ele também tem um bom menu de ajuda:

List/disable/enable/set gnome-key-bindings

gnome-key-bindings [-h | option] [value]

Options
   --list              Lists all the current keybindings
   --set=key           Set a specific keybinding
   --unset=key         Unsets a specific keybinding
   --unset-all         Unsets all keybindings
   --except=REGEX      Filter out keys matching REGEX from being unset
   --print-default     Prints the default shortcuts per Ubuntu 18.04

Examples:

     Clearing all keys except a few:
       gnome-key-bindings --unset-all --except "close|switch-applications|switch-input-source|show-desktop"

     Setting a shortcut
       gnome-key-bindings --set=maximize "<Super>Up"    

Para usá-lo em sua própria máquina

curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/gnome-key-bindings -o gnome-key-bindings
curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/easyoptions.sh -o easyoptions.sh
curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/easyoptions.rb -o easyoptions.rb
chmod +x ./gnome-key-bindings
sudo mv ./gnome-key-bindings easyoptions.* /usr/local/bin/
    
por oligofren 01.05.2018 / 16:25