xmodmapを使用したCaps Lockの再マッピングが機能しない


10

私がプログラムするとき、これらのキーを交換したいです:

EscTab CtrlCapsLock

では~/.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を使用しています。

回答:


8

xmodmapを(1)のmanページには、まさにこのための例があります

   !
   ! 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

しかし、あなたがそれをあなたが始めた方法で終わらせたいなら、私はあなたが少なくともremoveand 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


マンページを読み、例に従ってCaps_LockキーとControl_Lキーを再度割り当てました。しかし、OPで言及されている方法でキーを再マッピングしても機能しないのはなぜですか。バグでしょうか。
Aby James

それはそれが機能するはずの方法にすぎないようです。私の更新された答えを見てください。
ミケル

4

大まかに関連する答え:Caps Lockキーを左のコントロールに再マッピングし、実際の左のコントロールはそのままにしておきたいと思いました。xmodmapのmanページもソリューションを提供します:

    keycode 66 = Control_L
    clear Lock
    add Control = Control_L
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.