我遇到了奇怪的行为修改映射。我想重新映射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
但重启后它仍然会锁定大写字母。因此它同时充当Escape
和Caps_Lock
。正在运行軍我可以看到在和state
之间切换。虽然按预期工作(如)。如果我在登录后在终端中运行,我会得到与之前一样的结果:0x10
0x12
Shift+Caps_Lock
Caps_Lock
xmodmap ~/.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_Lock
,Shift+Caps_Lock
一切正如我想要的那样。
答案2
我按照 xmodmap 中的示例进行操作维基百科对于'CapsLock 到 Control 和 Shift+CapsLock 到 CapsLock',它起作用了。
clear lock
keycode 66 = Escape Caps_Lock NoSymbol NoSymbol
您可能需要退出并重新登录。