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

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

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

configurações do sistema>teclado>atalhos

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

Responder1

Não tenho ideia de por que você faria isso e devo avisá-lo de que pode ser complicado recuperar os atalhos. Se isso é realmente o que você deseja fazer, os comandos abaixo desabilitarão todos os atalhos de teclado. Tanto aqueles configurados através da GUI do Unity quanto qualquer um que você possa ter configurado usandoccsm

A. Desative as teclas do 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_settingsno seguinte formato:

    schema key <TAB> value
    

    Por exemplo:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. Agora desative 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 todas as combinações de teclas 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. Esta etapa é necessária para poder lê-los corretamente na próxima.
    • while IFS=$'\t' read -r key val: percorra cada linha e leia a chave $ke seu valor em $val. $IFS=$'\t'significadividir em abaspara que a chave e o valor sejam lidos corretamente.
    • gsettings set $key ['']: na verdade, isso define o valor como em branco, desativando efetivamente seus atalhos.

    Observe que pode ser necessário sair e fazer login novamente para que isso tenha efeito.

  3. Recupere (alguns dos) seus atalhos

    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 @asno nome da chave e não sei como lidar com isso. Como eu disse, tudo isso não é uma ideia muito boa.

B. Desative seus atalhos personalizados definidos emccsm

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

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

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

Responder2

Baseei-me na resposta de @terdon e fizum script para fazer o mesmo, mas faz isso de uma forma um pouco mais amigável.

Você poderia usá-lo assim:

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

Como gosto de usar os atalhos de teclado padrão Alt-F4 e Alt-Tab (e seu reverso usando shift), isso removeria todos os atalhos de teclado, exceto estes.

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/

Responder3

Para o gnome no Ubuntu 18.04, descobri que isto funciona:

gsettings list-keys org.gnome.shell.keybindings | xargs -I@ gsettings set org.gnome.shell.keybindings @ ['']
gsettings list-keys org.gnome.mutter.keybindings | xargs -I@ gsettings set org.gnome.mutter.keybindings @ ['']
gsettings list-keys org.gnome.settings-daemon.plugins.media-keys | xargs -I@ gsettings set org.gnome.settings-daemon.plugins.media-keys @ ['']
gsettings set org.gnome.mutter overlay-key ''

Não tenho certeza se são todas as teclas de atalho, mas parece ser a maior parte delas

informação relacionada