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


18

我是Vim的忠实用户,在开始进行完整的ubuntu安装时,要做的第一件事之一是交换大写锁定和esc键,以减少键盘上的手部移动。

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

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


好主意!我一直在抱怨在Vim中为Esc移动我的手,但是现在这是解决方案!thanx bro ;-)
sazary 2011年

1
不过要小心,一旦习惯了将它们互换,当您必须使用其他人的键盘时,它就会变得很尴尬:)
Jacobo de Vera

2
另一个选项是Ctrl-C而不是Esc。(适用于所有的键盘。
埃里克·威尔逊

@FarmBoy,太棒了!我不知道那个!
Jacobo de Vera

Answers:


22

您可以通过打开Keyboard Preferences控制面板(在下方System -> Preferences)并选择Layout选项卡,通过GUI进行操作。单击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键设置为空列表来再次禁用该行为。


gconf选项正是我在寻找的东西,但是您的配置是将大写锁定变成一个转义键,而将这个转义键变成一个制表键。我再次手动更改了设置,然后查看了gconf-editor中的值,它实际上是[caps<tab>caps:swapescape]。现在一切正常,我接受您的回答并建议您对其进行更改以更改值以供将来参考。谢谢。
Jacobo de Vera

@Jacobo将来,您可能会建议自己编辑-只需点击答案下方的编辑按钮即可。您的更改将很快被某人批准。我已经为您进行了修改(检查是否正确)。无论如何,@ James的回答很好!+1
Stefano Palazzo

1
@Stefano,谢谢,我没有注意到编辑选项。
Jacobo de Vera

有没有办法使它在登录屏幕上的GDM中工作?
lindhe 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.