
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
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']
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 atuaisperl -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$k
e 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.
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
@as
no 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