在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)也会取消大写锁定状态
vim
或整个桌面添加该功能?