Отключите все сочетания клавиш Unity с помощью командной строки

Отключите все сочетания клавиш Unity с помощью командной строки

Я хотел бы знать, как отключить ВСЕ сочетания клавиш через терминал. Я знаю, что их можно отключить, перейдя по ссылке:

системные настройки>клавиатура>сочетания клавиш

но я хочу отключить их через терминал. кто-нибудь знает, как это можно сделать?

решение1

Я понятия не имею, зачем вам это нужно, и должен предупредить, что вернуть сочетания клавиш может быть сложно. Если это действительно то, что вы хотите сделать, команды ниже отключат все сочетания клавиш. Как те, которые настроены через графический интерфейс Unity, так и те, которые вы могли настроить с помощьюccsm

A. Отключить ключевые слова Unity

  1. Сначала сделайте резервную копию текущих привязок, чтобы вы могли включить их позже.

    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']
    
  2. Теперь отключите сочетания клавиш.

    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 ['']: это фактически устанавливает значение пустым, эффективно отключая ваши сочетания клавиш.

    Обратите внимание, что для вступления изменений в силу вам, возможно, придется выйти из системы и войти в нее снова.

  3. Верните (некоторые) из ваших ярлыков

    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 ''

Я не уверен, что это все сочетания клавиш, но, кажется, это большая их часть.

Связанный контент