
我想知道如何透過終端機停用所有鍵盤快捷鍵。我知道您可以透過以下方式停用它們:
系統設定>鍵盤>快速鍵
但我想透過終端禁用它們。有人知道如何做到這一點嗎?
答案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 ''
我不確定這是否是所有快捷鍵,但似乎是其中的大部分