xmodmap で Ctrl と大文字を入れ替えた後、複数の修飾子の組み合わせで Ctrl を適切に機能させるにはどうすればよいですか?

xmodmap で Ctrl と大文字を入れ替えた後、複数の修飾子の組み合わせで Ctrl を適切に機能させるにはどうすればよいですか?

私はスワップしてLeft CtrlCaps Lock~/.Xmodmapを作成しました

keycode 66 = Control_L
keycode 37 = Caps_Lock
clear Lock
clear Control
add Lock    = Caps_Lock
add Control = Control_L Control_R

を実行します$ xmodmap ~/.XmodmapLeft Ctrlキーを押すと期待どおりに動作し、 が切り替わりますCaps LockCaps Lockキーを押すと、一般的にはCtrl+などの単純なショートカットが機能します。N.

ただし、複数の修飾キーが必要な場合 (例: Alt+ Ctrl+ I)、これはAlt最初に キーを押した場合にのみ機能します。Caps Lock最初に キーを押した場合は、効果はありません。

でキーボードレイアウトをリセットする$ setxkbmap -layout usと、上記のショートカットは正常に機能します。$ xmodmap ~/.Xmodmapもう一度実行すると、同じ問題が発生します。

Caps Lockまた、単一の修飾子の組み合わせの場合でも、通常のキーよりもほんの一瞬長くキーを押し続けないとCtrl認識されないことに気付きました。おそらく 0.01 秒程度ですが、10 回に 1 回は誤った信号が送信されるほど顕著です。

また、 と を入れ替えて を使用するとCtrlCaps Lock複数$ setxkbmap -layout us -option 'ctrl:swapcaps'の修飾子の問題に気付かなくなります。ただし、近々新しいキーボードを入手し、別のCtrlキーと入れ替える必要があるため、xmodmap ソリューションで問題を解決したいと考えています。

Caps Lock=編集= 別のキーボード (Das Keyboard) を試してみましたが、以前のキーボードよりもほんの一瞬長く押し続けなければならないという 2 番目の問題は、Ctrlおそらく元のキーボード (アルミニウム製 Apple 有線キーボード) のハードウェアの問題であると思われます。ただし、複数の修飾子に関する最初の問題は依然として存在します。

=編集= xev でさまざまなキーストロークをテストしました。 を押したままにしてキーをAlt押すと、が押されていない場合 とは異なり、 になります。Caps Lockkeycode 66 (keysym 0x0, NoSymbol)keycode 66 (keysym 0xffe3, Control_L)Alt

答え1

どうやら、上記のxmodmapコードはないCtrl+キーLとキーを交換するだけで十分ですCaps Lock

keycode 66 = Control_L

すべきである

keycode 66 = Control_L Control_L

他の修飾子の後に押されたときに正しい機能を有効にするCtrl。この解決策に関する良い参考文献は見つかりませんでしたが、どうやら2 番目のエントリはShift+に関連しています。なぜここで+Keyにも適用されるように見えるのかはわかりません。AltKey

(また、参考までに、他の情報源では、リンクで言及されている 6 列ではなく、最大 8 列あると述べられています。)

関連情報