Keyboard
使用 xmodmap 重新映射 Caps Lock 不起作用
當我程式時,我喜歡交換這些鍵:
Esc
↔Tab
Ctrl
↔CapsLock
在
~/.xmodmap
中,我指定了這些重新映射:keycode 66 = Control_L keycode 37 = Caps_Lock keycode 23 = Escape keycode 9 = Tab
和鍵交換,沒問題,但不是
Escape
和交換,這兩個鍵都變成.Tab``Caps_Lock``Control_L``Caps_Lock
無論我嘗試做什麼,控制鍵都不會分配給
Caps_Lock
(鍵碼 66)。如果我離開keycode 66 =
,則密鑰未分配,但是當我分配Control_L
or時Control_R
,它就不起作用了。但是,如果我分配一些其他鍵,例如,keycode 66 = Tab
它被分配,沒問題。它就像 xmodmap 只是不希望交換 Caps Lock 和 Control 鍵。真令人沮喪。任何幫助/指針都會非常有幫助。
PS:我正在使用 Archlinux。
xmodmap(1) 手冊頁正好有一個例子
! ! Swap Caps_Lock and Control_L ! remove Lock = Caps_Lock remove Control = Control_L keysym Control_L = Caps_Lock keysym Caps_Lock = Control_L add Lock = Caps_Lock add Control = Control_L
但是如果你想按照你開始的方式完成它,我認為你至少需要添加
remove
andadd
行remove Lock = Caps_Lock remove Control = Control_L keycode 37 = Caps_Lock keycode 66 = Control_L add Lock = Caps_Lock add Control = Control_L
我猜這是基於本段的情況
add MODIFIERNAME = KEYSYMNAME ... This adds all keys containing the given keysyms to the indi‐ cated modifier map. The keysym names are evaluated after all input expressions are read to make it easy to write expressions to swap keys (see the EXAMPLES section).
這聽起來像是修改器更改(移位,控制等)在您也執行之前不會被應用。
(邏輯上與 相同
remove
)該
keycode
版本具有冪等性的優點,這意味著如果 xmodmap 多次執行,效果不會改變。