xkb 設定檔中的preserve關鍵字有什麼作用

xkb 設定檔中的preserve關鍵字有什麼作用

我想知道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 修飾符,則結果符號將傳遞到內部大寫例程,無論它是否已用於移位等級計算。

相關內容