在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或整个桌面添加该功能?