キーコード定義ごとに、最大 8 つのキーシムを使用できます。これらは、ペアごとに 4 つのグループに編成されます。ISO_Next_Group
keysyms 、ISO_Prev_Group
、のファミリがあり、これを押すISO_First_Group
とISO_Last_Group
、keysym グループ間でキーを押すことによって keysym 出力が循環します。これらのキーは、複数のレイアウトを実現する方法です。
例として、 がキーコードにバインドされ、修飾子に割り当てられていると仮定ISO_Next_Group
すると、この定義では次のようになります。
キーコード 53 = x X Greek_xi Greek_XI 乗算 U2297 U24E7 U24CD
「X」というラベルが付いたキーボードのキーを押すと、「x」が入力されます。キーを押した後ISO_Next_Group
、「ξ」が表示されます。もう一度押すと「×」になります。もう一度押すと「ⓧ」。最後に、4 回押すと、通常の状態に戻ります。
数日を費やして (Xkb¹ のドキュメントがひどいため、最終的にここで適切なガイドが見つかりました)、次のようなエントリを含むシンボル定義ファイルを作成できます。
キー <スペース> {
// レベル I II III IV
[ スペース、スペース、U2395、U2592 ], // グループ 1
[ U2423, emspace, U2420, hairspace ] // グループ 2
};
キー <RALT> {
[モードスイッチ、モードスイッチ]
};
キー <RCTL> {
[ ISO_Level3_Shift, ISO_Level3_Shift ]
};
括弧は単一のグループを囲みます。通常、最初のグループがアクティブです。グループはISO_Group_Shift、別名で一時的に 1 つ増やすことができますMode_switch。グループ内で、放出されるシンボルはレベルの増加で定義されます。レベル I はキーを押しただけです。 Shift現在のレベルに 1 を追加します。 ISO_Level3_Shiftレベルを III に設定します。
上記の例では、7 つの記号をスペース バーに加えて、次のようなさまざまなシフト キーにマップしています。
space⟨ ⟩ U+0020 SPACE
Shift+space⟨ ⟩ U+0020 SPACE
R. Alt+space⟨␣⟩ U+2423 OPEN BOX
R. Alt+Shift+space⟨ ⟩ U+2003 EM SPACE
R. Ctl+space⟨⎕⟩ U+2395 APL FUNCTIONAL SYMBOL QUAD
R. Ctl+Shift+space⟨▒⟩ U+2592 MEDIUM SHADE
R. Alt+R. Ctl.+space⟨ U+␠ 2420 スペースのシンボル
R. Alt+R. Ctl.+Shift+space⟨ ⟩ U+200A ヘア スペース
レベル VのキーもありISO_Level5_Shiftます。したがって、1 つのグループに少なくとも 6 つのシンボルを含めることができます。モード シフト キーを使用すると、約 1,200 の異なる記号を入力するようにキーボードを構成できることを意味しますが、その時点で非常に多くの修飾子を押し続けると、いくつかのキーが無効になる可能性があります。
PS すべての名前付きシンボルの名前は に保存され/usr/include/X11/keysymdef.h
ます。
¹
xmodmap (1) にはバグがあり、非推奨であることが判明しました。