xmodmap で重要なことは、キーコード (キーボードからの生の数字)、キーシム (キーが最終的に何を意味するか)、およびキーのフラグ (キーシムではない) である修飾子フラグを区別することです。「私が言ったこれはシフトキーであり、他のキーをシフトキーとして変更する必要があります」と言います
これらの「タイプ」で例に注釈を付けましょう
keycode (keycode)66 = (keysym)Control_L
clear (modifier)Lock
add (modifier)Control = (keysym)Control_L
keycode (keycode)117 = (keysym)Caps_Lock
add (modifier)Lock = (keysym)Caps_Lock
これで、各行が何をするかをよりよく理解できるようになりました。
keycode 66 = Control_L
capslock キーをコントロール キーの意味に関連付けます (ただし、修飾子としてではありません)。
clear Lock
以前に修飾子を持っていたキーの修飾子フラグを削除しますLock
(コード 66 で表される Caps Lock キーが持っている可能性が最も高いように)
add Control = Control_L
keysym に関連付けられているキーにコントロール修飾子を追加しますControl_L
(おそらくキーコード 66 と元の左コントロール キー)
keycode 117 = Caps_Lock
Caps-Lock として機能するキーコード 117 のキーを割り当てます (117 が何であるかはわかりません。私のキーボードにはありません)。
add Lock = Caps_Lock
ピカピカの新しくバインドされた 117 キーコードを使用して、キーシムにLock
修飾子
を追加します。Caps_Lock
したがって、質問に直接答えるには:
1. Control_L は既に 66 にマップされていますが、なぜ 3 行目に Control を追加する必要があるのですか?
修飾キーを修飾子として適切に機能させるには、修飾子とキーシムの両方が必要です。(私には少し奇妙に思えますが、それはそうです)
2. 実際に Control を追加するときに Lock をクリアする必要があるのはなぜですか?
キーコード 66 に関連付けられたキーにはまだLock
修飾子が設定されているためです。修飾子は上書きされません。消去する必要があります。
3. 実際に Caps_Lock を追加する前に Lock をクリアしないのはなぜですか?
Lock
キーシムをいじっても変更されない修飾子をターゲットにするため、それも同様にうまく機能します。
xmodmap は構成が非常に紛らわしい獣になる可能性があります。理解しようとするときに使用するリンクを次に示します。
- http://cs.gmu.edu/~sean/stuff/n800/keyboard/old.html
- http://www.jwz.org/xkeycaps/man.html
- http://www.in-ulm.de/~mascheck/X11/xmodmap.html
もっと明確にするためにできることがあれば、教えてください。