
プログラミングをするときは、次のキーを入れ替えるのが好きです:
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).
つまり、修飾子の変更 (Shift、Control など) もそれを実行するまで適用されないようです。
(論理的には も同様ですremove
)
このkeycode
バージョンにはべき等性があるという利点があり、xmodmap を複数回実行しても効果は変わりません。
答え2
関連する回答: Caps Lock キーを左コントロールに再マップし、実際の左コントロールはそのままにしておきたいと思いました。xmodmap のマニュアル ページにも解決策が示されています。
keycode 66 = Control_L
clear Lock
add Control = Control_L