我想知道如何通过终端禁用所有键盘快捷键。我知道您可以通过以下方式禁用它们:
系统设置>键盘>快捷键
但我想通过终端禁用它们。有人知道该怎么做吗?
答案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/'
:这只是添加了一个 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
对于 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 ''
我不确定这是否是所有快捷键,但似乎占了大部分