O que a palavra-chave preserve faz nos arquivos de configuração xkb

O que a palavra-chave preserve faz nos arquivos de configuração xkb

Quero saber o que a palavra-chave preserve faz na seção xkb_types de um mapa de teclado xkb personalizado.

Aqui está um exemplo de um arquivo de configuração existente:

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";
};

Estou interessado nestas duas linhas:

    preserve[Lock+LevelThree]= Lock;
    preserve[Shift+Lock+LevelThree]= Lock;

Infelizmente nem o Archwiki, que possui um guia de configuração do xkb muito bom, nem o site oficial do xkb (que não possui muita informação em geral) parecem ter qualquer informação sobre isso.

Responder1

XFree86 documenta isso emComo aprimorar ainda mais a configuração do XKB; Definindo novos layouts. Copiar o fragmento relevante para o benefício do leitor,

Normalmente, todos os modificadores introduzidos na modifiers=<list of modifiers>lista são usados ​​para cálculo de nível de mudança e depois descartados. Às vezes isso não é desejável. Se quiser usar um modificador para cálculo de nível de mudança, mas não quiser descartá-lo, você pode listá-lo em preserve[<combination of modifiers>]=<list of modifiers>. Isso significa que, para uma determinada combinação, todos os modificadores listados serão preservados. Se o modificador Lock for preservado, o símbolo resultante será passado para a rotina interna de capitalização, independentemente de ter sido usado para um cálculo de nível de mudança ou não.

informação relacionada