
我想知道preserve關鍵字在自訂xkb鍵盤映射的xkb_types部分中的作用。
以下是現有設定檔的範例:
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";
};
我對這兩行感興趣:
preserve[Lock+LevelThree]= Lock;
preserve[Shift+Lock+LevelThree]= Lock;
不幸的是,無論是 Archwiki(有一個非常好的 xkb 配置指南)還是 xkb 的官方網站(一般沒有太多資訊)似乎都沒有任何關於此的資訊。
答案1
XFree86 將其記錄在如何進一步增強XKB配置;定義新佈局。為了讀者的利益複製相關片段,
通常,列表中引入的所有修飾符
modifiers=<list of modifiers>
都會用於移位等級計算,然後被丟棄。有時這是不可取的。如果您想使用修飾符進行班次計算但又不想丟棄它,您可以在 中列出preserve[<combination of modifiers>]=<list of modifiers>
。這意味著,對於給定的組合,所有列出的修飾符都將被保留。如果保留 Lock 修飾符,則結果符號將傳遞到內部大寫例程,無論它是否已用於移位等級計算。