仮想修飾子について
コア X の状態でも、XKB を使用する場合でも、修飾子は「Shift, Lock, Ctrl, Mod1〜Mod5」が使われます。
Shift, Ctrl, CapsLock は、そのまま名前通りのキーになるので問題ありませんが、Mod1〜Mod5 は、キーボードのセットによって割り当てが異なる場合があるため、実際に扱う際は少し不便です。
Mod1〜Mod5 で使われるのは、NumLock, Alt, Windows キーなどです。
Shift, Ctrl, CapsLock は、そのまま名前通りのキーになるので問題ありませんが、Mod1〜Mod5 は、キーボードのセットによって割り当てが異なる場合があるため、実際に扱う際は少し不便です。
Mod1〜Mod5 で使われるのは、NumLock, Alt, Windows キーなどです。
修飾子に対応するキーを調べる
例えば、Alt キーがどの修飾子 (Mod1〜Mod5) に対応しているかを調べたい場合は、以下のようにする必要があります。
X のキーマッピングについては、(X11) キーマッピング を参照してください。
ただし、キーマッピングや修飾子マッピングは、X サーバーの起動中に変更される可能性があるので、マッピングが変更された場合 (MappingNotify イベントが来た時) は、上記の処理を再度行う必要があります。
X のキーマッピングについては、(X11) キーマッピング を参照してください。
- キーマッピングと修飾子マッピングを取得する (XGetKeyboardMapping, XGetModifierMapping)。
キーマッピング = キーコードに対応する KeySym のリスト。
修飾子マッピング = 各修飾子に対応するキーコードのリスト。 - 修飾子マッピングから、Mod1〜Mod5 に対応するキーコードのリストを調べる。
- 上記のキーコードを元に、キーマッピングを参照し、XK_Alt_R または XK_Alt_L の KeySym が存在するかを調べる。
- 存在すれば、その修飾子は Alt キーである。
ただし、キーマッピングや修飾子マッピングは、X サーバーの起動中に変更される可能性があるので、マッピングが変更された場合 (MappingNotify イベントが来た時) は、上記の処理を再度行う必要があります。
仮想修飾子
このように、コア X では、Alt キーや Windows キーの修飾子は扱いにくいので、XKB では、この負担を軽減するために、仮想修飾子を使うことができます。
仮想修飾子は、名前付きで16個まで定義でき、それぞれに、「Shift, Lock, Ctrl, Mod1〜Mod5」の任意のセットを設定することができます。
仮想修飾子は、名前付きで16個まで定義でき、それぞれに、「Shift, Lock, Ctrl, Mod1〜Mod5」の任意のセットを設定することができます。