web-dev-qa-db-ja.com

xmodmapでCtrlとキャップを交換した後、複数の修飾子の組み合わせに対してCtrlを適切に機能させるにはどうすればよいですか?

交換しました Left Ctrl そして Caps 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 ~/.Xmodmap_を実行します。を押す Left Ctrl キーは期待どおりに動作し、切り替えます Caps Lock。を押す Caps Lock キーは、次のような単純なショートカットに対して一般的に機能します。 Ctrl+N.

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

_$ setxkbmap -layout us_を使用してキーボードレイアウトをリセットできます。上記のショートカットは正常に機能します。 _$ xmodmap ~/.Xmodmap_を再度実行すると、同じ問題が発生します。

また、単一の修飾子の組み合わせであっても、 Caps Lock バニラで使っていたよりも一瞬長いキー Ctrl 登録するためのキー。おそらく0.01秒程度ですが、10回に1回誤った信号が送信されていることが十分にわかります。

また、私がスワップした場合 Ctrl そして Caps Lock _$ setxkbmap -layout us -option 'ctrl:swapcaps'_を使用すると、複数の修飾子の問題に気づかなくなりました。ただし、すぐに新しいキーボードを入手するため、xmodmapソリューションの問題を解決したいので、交換する必要があります。 Ctrl 別のキーで。

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

= EDIT = xevでさまざまなキーストロークをテストしました。ホールディング Alt 次に Caps Lock keycode 66 (keysym 0x0, NoSymbol)とは対照的に、キーはkeycode 66 (keysym 0xffe3, Control_L)になります。 Alt 開催されていません。

3
Sparhawk

どうやら、上記のxmodmapコードはnotでスワップするには十分です Ctrl+L そして Caps Lock キー。

keycode 66 = Control_L

あるべき

keycode 66 = Control_L Control_L

正しい機能を許可する場合 Ctrl 別の修飾子の後に押されます。このソリューションへの適切な参照は見つかりませんが、 明らかに 2番目のエントリは Shift+Key。なぜここにも当てはまるのかわからない Alt+Key

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

2
Sparhawk