我已经交换Left Ctrl并Caps Lock通过创建 ~/.Xmodmap
keycode 66 = Control_L
keycode 37 = Caps_Lock
clear Lock
clear Control
add Lock = Caps_Lock
add Control = Control_L Control_R
然后运行$ xmodmap ~/.Xmodmap
。按下Left Ctrl键可按预期工作,切换Caps Lock。按下Caps Lock键通常适用于简单的快捷方式,例如Ctrl+N.
但是,当需要多个修饰键(例如Alt++ )时,只有我先按下该键时,此操作才有效Ctrl。如果我先按下该键,则没有任何效果。IAltCaps Lock
我可以使用 重置键盘布局$ setxkbmap -layout us
,上述快捷方式将正常工作。如果我$ xmodmap ~/.Xmodmap
再次运行,我还会遇到同样的问题。
我还发现,即使对于单修饰键组合,我也必须Caps Lock比使用普通Ctrl键时多按住一秒钟才能使其生效。这大概是 0.01 秒,但很明显,十分之一的按键会发出错误信号。
此外,如果我使用Ctrl和Caps Lock进行交换$ setxkbmap -layout us -option 'ctrl:swapcaps'
,我就不会再注意到多个修饰键的问题。但是,我仍然想解决 xmodmap 解决方案的问题,因为我很快就会得到一个新键盘,并且需要用Ctrl不同的键进行交换。
=EDIT= 我尝试了另一款键盘(Das Keyboard),似乎第二个问题(需要Caps Lock比我之前多按住一秒钟)Ctrl可能是原装键盘(Apple 铝制有线键盘)的硬件问题。但是,多个修改器的第一个问题仍然存在。
=EDIT= 我在 xev 中测试了不同的按键。按住Alt然后按下Caps Lock键会导致keycode 66 (keysym 0x0, NoSymbol)
,而keycode 66 (keysym 0xffe3, Control_L)
不是
Alt按住 。
答案1
显然,上面的 xmodmap 代码是不是只需交换Ctrl+L和Caps Lock键即可。
keycode 66 = Control_L
应该
keycode 66 = Control_L Control_L
允许在Ctrl另一个修饰键之后按下时正确运行。我找不到关于此解决方案的任何好的参考资料,但是显然第二项与Shift+有关Key。我不确定为什么这里它似乎也适用于Alt+ Key。
(此外,FWIW,其他来源指出最多有八列,而不是链接中提到的六列。)