11

xmodmap clear コマンドを理解するのに苦労しています。例を次に示します。

    keycode 66 = Control_L
    clear Lock
    add Control = Control_L
    keycode 117 = Caps_Lock
    add Lock = Caps_Lock
  1. Control_L は既に 66 にマップされていますが、3 行目に Control を追加する必要があるのはなぜですか?
  2. 実際に Control を追加するときに Lock をクリアする必要があるのはなぜですか?
  3. 実際に Caps_Lock を追加する前に Lock をクリアしないのはなぜですか?

これは本当に不可解です。

4

1 に答える 1

18

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 は構成が非常に紛らわしい獣になる可能性があります。理解しようとするときに使用するリンクを次に示します。

  1. http://cs.gmu.edu/~sean/stuff/n800/keyboard/old.html
  2. http://www.jwz.org/xkeycaps/man.html
  3. http://www.in-ulm.de/~mascheck/X11/xmodmap.html

もっと明確にするためにできることがあれば、教えてください。

于 2013-07-27T06:31:28.660 に答える