私はプログラムするときに次のキーを変更するのが好きです。
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
何をしようとしても、Controlキーは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