如何以编程方式交换 Caps Lock 和 Esc 键?

如何以编程方式交换 Caps Lock 和 Esc 键?

我是 Vim 的重度用户,在干净的 ubuntu 安装上开始工作时,我做的第一件事就是交换 caps lock 和 esc 键以减少键盘上的手部移动。

到目前为止,我一直通过键盘配置对话框进行操作,但现在我正在编写一组脚本,以便按照我喜欢的方式设置 Ubuntu,而且我还没有找到可编写脚本或者可编程的方式来改变此配置项。

我并不是在寻找可以在 gnome 本身之外的任何其他级别上交换按键的选项,因此我正在寻找一种方法来编写此更改的脚本并使其出现在我以前使用的键盘配置中,我是否应该决定在将来手动恢复它。

答案1

您可以通过 GUI 打开Keyboard Preferences控制面板(在 下System -> Preferences)并选择Layout选项卡来执行此操作。单击Options...按钮打开布局选项对话框。展开该Caps Lock key behaviour部分并选择Swap ESC and Caps Lock

有几种方法可以编写此类脚本。

直接通过 Xkb

我们可以直接使用以下命令进行更改:

setxkbmap -option caps:swapescape

您可以使用以下方式禁用所有当前布局选项(这会使大写锁定恢复为其默认行为):

setxkbmap -option ''

通过 GConf

键盘偏好控制面板通过 存储其配置gconf,布局实际上由 应用gnome-settings-daemon。因此,您可以gnome-settings-daemon通过自行更新 gconf 来调整布局。

在这种情况下,相关设置似乎是/desktop/gnome/peripherals/keyboard/kbd/options。因此,您可以使用以下方式设置选项:

gconftool-2 --set /desktop/gnome/peripherals/keyboard/kbd/options \
    --type list --list-type string \
    '[caps<tab>caps:swapescape]'

上面的内容<tab>应为文字制表符,而不是空格。您可以通过将 gconf 键设置为空列表来再次禁用该行为。

相关内容