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 修饰符,则结果符号将传递到内部大写例程,无论它是否已用于移位级别计算。

相关内容