xmodmap - 将 Caps_Lock 重新映射到 Escape,将 Shift+Caps_Lock 重新映射到 Caps_Lock

xmodmap - 将 Caps_Lock 重新映射到 Escape,将 Shift+Caps_Lock 重新映射到 Caps_Lock

我遇到了奇怪的行为修改映射。我想重新映射Caps_Lock,以便它充当Escape,因此Shift+Caps_Lock它充当Caps_Lock。在我的系统中,~/.Xmodmap我尝试了以下命令的所有可能组合,但结果始终相同:

clear Lock
remove Lock = Caps_Lock
keycode 66 =
keycode 66 = Escape Caps_Lock
keysym Caps_Lock = Escape Caps_Lock

正确Caps_Lock重新映射到Escape

$ xmodmap -pke | grep Caps
keycode  66 = Escape Caps_Lock Escape Caps_Lock

重启后它仍然会锁定大写字母。因此它同时充当EscapeCaps_Lock。正在运行我可以看到在和state之间切换。虽然按预期工作(如)。如果我在登录后在终端中运行,我会得到与之前一样的结果:0x100x12Shift+Caps_LockCaps_Lockxmodmap ~/.Xmodmap

$ xmodmap -pke | grep Caps
keycode  66 = Escape Caps_Lock Escape Caps_Lock

Caps_Lock开始按预期运行,仅Escape不再锁定 CAPS。

我真的不明白我做错了什么。

答案1

终于找到了一种方法来实现这一点。我发现X 键盘扩展yet 提供了一个选项。通过查看,/usr/share/X11/xkb/rules/base.lst我发现了以下行:

caps:escape_shifted_capslock Make unmodified Caps Lock an additional Esc, but Shift + Caps Lock behaves like regular Caps Lock

所以我只需要添加大写字母:escape_shifted_capslock以这种方式XkbOptions进入:/etc/X11/xorg.conf.d/00-keyboard.conf

Option "XkbOptions" "terminate:ctrl_alt_bksp,caps:escape_shifted_capslock"

重启后Caps_LockShift+Caps_Lock一切正如我想要的那样。

答案2

我按照 xmodmap 中的示例进行操作维基百科对于'CapsLock 到 Control 和 Shift+CapsLock 到 CapsLock',它起作用了。

clear lock
keycode 66 = Escape Caps_Lock NoSymbol NoSymbol

您可能需要退出并重新登录。

相关内容