
當我編程時,我喜歡交換這些按鍵:
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
或 時Control_R
,它就不起作用。但是,如果我分配其他鍵,例如 ,keycode 66 = Tab
它就會被分配,沒有問題。
就像 xmodmap 只是不希望 Caps Lock 和 Control 鍵交換。真是令人沮喪。任何幫助/指示都會非常有幫助。
PS:我使用的是Archlinux。
答案1
這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
和add
行
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 效果不會改變。
答案2
鬆散相關的答案:我想將大寫鎖定鍵重新映射到左控件,使實際的左控件保持不變。 xmodmap 手冊頁也提供了解決方案:
keycode 66 = Control_L
clear Lock
add Control = Control_L