按下 Escape 时关闭大写锁定

dot*_*hen 10 keyboard xkb kubuntu

有什么方法可以CapsLockEsc按下时禁用。是的,我使用 VIM!我实际上有一个替代的全大写键盘布局,Ctrl-6但我发现它很麻烦,并且更愿意让操作系统在Esc按下时禁用 CapsLock 。另外,我经常通过 SSH 连接到其他服务器几个小时,所以我在那里使用库存 VIM。

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

这是在 Kubuntu 12.10 上。谢谢。

Pab*_*aga 6

在 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)
        ]
    };
};
Run Code Online (Sandbox Code Playgroud)

并在本地键盘映射文件中(例如:~/.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 键;然后改用它(并将“+mysymbols(esc_swap_and_breaks_caps)”放入 mykbd 文件中):

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 ] };
};
Run Code Online (Sandbox Code Playgroud)

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


mtk*_*mtk 0

将这些行添加到~/.Xmodmap

clear lock
keycode 0x42 = Escape
Run Code Online (Sandbox Code Playgroud)

然后,键入命令:

xmodmap ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)

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

参考网址


另请阅读这篇有关在 Ubuntu 中将 CapsLock 映射到 Escape 的好文章,它似乎是 unix.se 用户:)