如何以编程方式交换大写锁定和 esc 键?

Jac*_*era 18 gnome command-line keyboard

我是 Vim 的重度用户,当我开始安装干净的 ubuntu 时,我做的第一件事就是交换大写锁定和 esc 键以减少手在键盘上的移动。

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

我不是在寻找在 gnome 本身以外的任何其他级别交换键的选项,所以我正在寻找一种方法来编写此更改的脚本并将其显示在我曾经使用的键盘配置中,我是否应该决定将来手动还原它。

Jam*_*dge 22

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

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

直接通过 Xkb

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

setxkbmap -option caps:swapescape
Run Code Online (Sandbox Code Playgroud)

您可以禁用所有当前布局选项(这将使大写锁定返回其默认行为):

setxkbmap -option ''
Run Code Online (Sandbox Code Playgroud)

通过 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]'
Run Code Online (Sandbox Code Playgroud)

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