按下 Escape 时关闭大写锁定

按下 Escape 时关闭大写锁定

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

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

这是在 Kubuntu 12.10 上。谢谢。

答案1

在 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行以添加+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 ] };
};

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

答案2

将这些行添加到~/.Xmodmap

clear lock
keycode 0x42 = Escape

然后,键入命令:

xmodmap ~/.Xmodmap

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

参考网址


还要经过这篇关于在 Ubuntu 中将 CapsLock 映射到 Escape 的好文章,这似乎是 unix.se 用户:)

答案3

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

setxkbmap -option "caps:escape"

相关内容