按下Escape键时关闭大写锁定


10

有没有什么办法来禁用CapsLock,只要Esc被按下。是的,我使用VIM!我实际上有另一种全大写字母键盘布局,Ctrl-6但是我觉得它很麻烦,并且宁愿只在Esc按下该按钮时才使操作系统禁用CapsLock 。另外,我经常通过SSH进入其他服务器几个小时,所以我在那儿有股票VIM。

请注意,我碰巧已经交换了CapsLockEsc键。但是,当Esc按键被按下时(恰好CapsLock在键盘上贴了标签并且在旁边A),我需要它同时执行EscapeDisable-CapsLock-If-It-Is-Enabled

这是在Kubuntu 12.10上。谢谢。


您只需要为vim或整个桌面添加该功能?
mtk

我希望它成为桌面功能。
dotancohen

Answers:


5

在X11(我不知道在控制台上)中,您可以通过重新定义Escape键的行为来实现。我查看了“ shift(break_caps)”定义,以了解其工作原理并对其进行了调整。

在xkb上查看此答案,以了解有关如何/在何处放置本地修改的文件并加载它们的更多详细信息。

为了执行您想要的操作,您需要在本地符号文件(例如:)中提供以下~/.xkb/symbols/mysymbols部分:

partial modifier_keys
xkb_symbols "esc_breaks_caps" {
    key <ESC> {
        type = "ALPHABETIC",
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
};

并在本地键盘映射文件中(例如:~/.xkb/keymap/mykbd;您可以使用创建setxkbmap -print > ~/.xkb/keymap/mykbd),将xkb_symbols行更改为add +mysymbols(esc_breaks_caps)

您现在可以使用以下命令加载它:xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 并按Esc会删除CapsLock状态(实际上,效果发生在Esc 的发布上;我认为只有修饰符键才具有即时效果;其他效果是在它们释放后产​​生的。)

哦,如果您还想交换Escape和CapsLock键;然后改用它(然后在您的mykbd文件中放入“ + mysymbols(esc_swap_and_breaks_caps)”):

partial modifier_keys
xkb_symbols "esc_swap_and_breaks_caps" {
    replace key <CAPS> {
        type = "ALPHABETIC",
        symbols = [ Escape, Escape ],
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
    replace key <ESC> { [ CapsLock, CapsLock ] };
};

注意物理键是<CAPS><ESC>; <CAPS>(刻CapsLock在键盘上的键)发送Escape和<ESC>(刻在键上的Esc)发送CapsLock,连<CAPS>(发送Escape)也会取消大写锁定状态


1

将这些行添加到~/.Xmodmap

clear lock
keycode 0x42 = Escape

然后,键入命令:

xmodmap ~/.Xmodmap

您的Caps Lock密钥现在已重新映射到Esc密钥。

参考网址


还可以阅读这篇有关在Ubuntu中将CapsLock映射到Escape的不错的文章,该文章似乎是unix.se用户:)


谢谢。我碰巧已经交换了CapsLock和Esc。然而,当Esc键被按下(这恰好被贴上CapsLock键在键盘上,毗邻A),我需要它来执行两个逃生禁用,大小写锁定,如果-IT-IS-启用。我将编辑问题进行澄清。谢谢。
dotancohen

我以为你需要另一回合。这里有些困惑。按上会发生什么Esc以及Capslocks这些变化之后?
mtk

当前:按此ESC键时CapsLock功能会切换,按此CapsLock键时ESC会发送命令(即,ESC键重新映射到CapsLockCapsLock键重新映射到ESC)。我对这个问题的目标是有按下CapsLock键进行双方ESC功能(它目前如此),并关闭CapsLock当且仅当该功能CapsLock使能功能(即不切换的CapsLock功能,而是将其禁用如果CapsLock启用)。
dotancohen

1

我不确定这是否能回答您的问题,但是要将Esc功能映射到CapsLock键,可以使用以下命令:

setxkbmap -option "caps:escape"
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.