コマンドラインを使用してすべてのUnityキーボードショートカットを無効にする

コマンドラインを使用してすべてのUnityキーボードショートカットを無効にする

ターミナル経由ですべてのキーボード ショートカットを無効にする方法を知りたいです。次の方法で無効にできることは知っています:

システム設定>キーボード>ショートカット

しかし、ターミナル経由で無効にしたいです。どうすればいいか知っている人はいますか?

答え1

なぜこのようなことをしたいのか私にはわかりません。ショートカットを元に戻すのは複雑になるかもしれないことを警告しておきます。本当にそうしたいのであれば、以下のコマンドですべてのキーボードショートカットを無効にできます。UnityのGUIで設定したショートカットも、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/': これは単に、値とキーを区切るタブ文字 ( \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

Ubuntu 18.04 上の gnome の場合、これが機能することがわかりました:

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

これがすべてのショートカットキーかどうかはわかりませんが、大部分はそうだと思います。

関連情報