
カスタム xkb キーマップの xkb_types セクションで preserve キーワードが何を行うのかを知りたいです。
既存の設定ファイルの例を次に示します。
type "FOUR_LEVEL_SEMIALPHABETIC" {
modifiers= Shift+Lock+LevelThree;
map[Shift]= Level2;
map[Lock]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock+LevelThree]= Level3;
preserve[Lock+LevelThree]= Lock;
map[Shift+Lock+LevelThree]= Level4;
preserve[Shift+Lock+LevelThree]= Lock;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
私は次の 2 つの行に興味があります。
preserve[Lock+LevelThree]= Lock;
preserve[Shift+Lock+LevelThree]= Lock;
残念ながら、非常に優れた xkb 設定ガイドがある Archwiki にも、(一般的にあまり情報がない) xkb の公式 Web サイトにも、これに関する情報はないようです。
答え1
XFree86では次のように文書化されている。XKB 構成をさらに強化する方法、新しいレイアウトの定義読者の便宜を図るため、関連する断片をコピーします。
通常、
modifiers=<list of modifiers>
リストに導入されたすべての修飾子はシフト レベルの計算に使用され、その後破棄されます。これが望ましくない場合もあります。修飾子をシフト レベルの計算に使用したいが破棄したくない場合は、 にリストすることができますpreserve[<combination of modifiers>]=<list of modifiers>
。つまり、特定の組み合わせに対して、リストされているすべての修飾子が保持されます。Lock 修飾子が保持されると、結果のシンボルは、シフト レベルの計算に使用されたかどうかに関係なく、内部の大文字化ルーチンに渡されます。