
Я хотел бы знать, как отключить ВСЕ сочетания клавиш через терминал. Я знаю, что их можно отключить, перейдя по ссылке:
системные настройки>клавиатура>сочетания клавиш
но я хочу отключить их через терминал. кто-нибудь знает, как это можно сделать?
решение1
Я понятия не имею, зачем вам это нужно, и должен предупредить, что вернуть сочетания клавиш может быть сложно. Если это действительно то, что вы хотите сделать, команды ниже отключат все сочетания клавиш. Как те, которые настроены через графический интерфейс Unity, так и те, которые вы могли настроить с помощьюccsm
A. Отключить ключевые слова Unity
Сначала сделайте резервную копию текущих привязок, чтобы вы могли включить их позже.
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
Это создаст файл
old_settings
следующего формата:schema key <TAB> value
Например:
org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
Теперь отключите сочетания клавиш.
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
Объяснение
gsettings list-recursively org.gnome.desktop.wm.keybindings
: здесь перечислены все сочетания клавиш и их текущие значенияperl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/'
: это просто добавляет символ TAB (\t
), отделяющий значение от ключа. Этот шаг необходим для того, чтобы иметь возможность правильно прочитать их в следующем.while IFS=$'\t' read -r key val
: пройти по каждой строке и прочитать ключ в$k
и его значение в$val
.$IFS=$'\t'
означаетразделить на вкладкичтобы ключ и значение были прочитаны правильно.gsettings set $key ['']
: это фактически устанавливает значение пустым, эффективно отключая ваши сочетания клавиш.
Обратите внимание, что для вступления изменений в силу вам, возможно, придется выйти из системы и войти в нее снова.
Верните (некоторые) из ваших ярлыков
while IFS=$'\t' read -r key val; do gsettings set "$key" "$val" done < old_settings
ПРЕДУПРЕЖДЕНИЕ: Это, вероятно, не будет работать для всех настроек, поскольку некоторые из них, похоже, имеют дополнительный параметр
@as
в имени ключа, и я не знаю, как с этим справиться. Как я уже сказал, все это не очень хорошая идея.
B. Отключите пользовательские сочетания клавиш, установленные вccsm
gsettings set org.gnome.settings-daemon.plugins.media-keys active false
На этот раз вернуть их легко. Все, что вам нужно сделать, это бежать
gsettings set org.gnome.settings-daemon.plugins.media-keys active true
решение2
Я развил ответ @terdon и сделалскрипт, чтобы сделать то же самое, но делает это в несколько более удобной для пользователя форме.
Вы можете использовать это так:
gnome-key-bindings --unset-all --except 'close|switch-applications'
Так как мне нравится использовать сочетания клавиш по умолчанию Alt-F4 и Alt-Tab (и их обратные с помощью Shift), это приведет к удалению всех сочетаний клавиш, кроме этих.
Также имеется удобное меню справки:
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"
Чтобы использовать его на своей машине
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/
решение3
Для gnome на Ubuntu 18.04 я обнаружил, что это работает:
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 ''
Я не уверен, что это все сочетания клавиш, но, кажется, это большая их часть.