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

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

到目前为止,我一直在通过键盘配置对话框执行此操作,但我现在正在编写一组脚本,这些脚本将按照我喜欢的方式设置Ubuntu,并且我无法找到更改此配置项的脚本或可编程方式。

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

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

有几种方法可以编写这种东西。

直接通过Xkb

我们可以直接进行以下更改:

 setxkbmap -option caps:swapescape 

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

 setxkbmap -option '' 

通过GConf

键盘首选项控制面板通过gconf存储其配置,其中布局实际上由gnome-settings-daemon 。 因此,您可以通过自己更新gconf来使gnome-settings-daemon调整布局。

这种情况下的相关设置似乎是/desktop/gnome/peripherals/keyboard/kbd/options 。 所以你可以设置选项:

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

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