
Quiero saber qué hace la palabra clave preserve en la sección xkb_types de un mapa de teclas xkb personalizado.
Aquí hay un ejemplo de un archivo de configuración 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";
};
Estoy interesado en estas dos líneas:
preserve[Lock+LevelThree]= Lock;
preserve[Shift+Lock+LevelThree]= Lock;
Desafortunadamente ni Archwiki, que tiene una muy buena guía de configuración de xkb, ni el sitio web oficial de xkb (que no tiene mucha información en general) parecen tener información sobre esto.
Respuesta1
XFree86 lo documenta enCómo mejorar aún más la configuración de XKB; Definición de nuevos diseños. Copiando el fragmento relevante para beneficio del lector,
Normalmente, todos los modificadores introducidos en
modifiers=<list of modifiers>
la lista se utilizan para calcular el nivel de turno y luego se descartan. A veces esto no es deseable. Si desea utilizar un modificador para el cálculo del nivel de turno pero no desea descartarlo, puede incluirlo enpreserve[<combination of modifiers>]=<list of modifiers>
. Eso significa que, para una combinación determinada, se conservarán todos los modificadores enumerados. Si se conserva el modificador Lock, el símbolo resultante se pasa a la rutina de capitalización interna independientemente de si se ha utilizado para un cálculo de nivel de turno o no.