
ターミナル経由ですべてのキーボード ショートカットを無効にする方法を知りたいです。次の方法で無効にできることは知っています:
システム設定>キーボード>ショートカット
しかし、ターミナル経由で無効にしたいです。どうすればいいか知っている人はいますか?
答え1
なぜこのようなことをしたいのか私にはわかりません。ショートカットを元に戻すのは複雑になるかもしれないことを警告しておきます。本当にそうしたいのであれば、以下のコマンドですべてのキーボードショートカットを無効にできます。UnityのGUIで設定したショートカットも、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/'
: これは単に、値とキーを区切るタブ文字 (\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
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 ''
これがすべてのショートカットキーかどうかはわかりませんが、大部分はそうだと思います。