Você precisa definir um novo tipo de xkb. Você pode ver exemplos em seu diretório xkb / types (geralmente /usr/share/X11/xkb/types
). Lá você pode definir combinações arbitrárias de modificadores para obter diferentes níveis de mudança. Para o seu problema, você pode usar algo assim:
type "C_A_to_L3" {
modifiers = Control+Alt+Shift;
map[None] = Level1;
map[Shift] = Level2;
map[Control+Alt] = Level3;
map[Control+Alt+Shift] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Shift Alt";
};
Em seguida, no arquivo de símbolos, você pode definir esse tipo como padrão ou definir, por chave, qual tipo é. Observe que você precisa que o tipo esteja em um arquivo no diretório types e que a definição de chave em um arquivo no diretório de símbolos - xkb use uma hierarquia de sistema de arquivos estrita para localizar cada componente.
Eu fiz um pouco de hacking em layouts de teclado para construir meu layout personalizado ( link ), que foi através de várias iterações onde eu experimentei coisas estranhas. O XKB pode ser bem esquisito e estranho às vezes, mas ainda é o sistema de teclado mais configurável que já vi até agora. As melhores referências se você tiver mais problemas são:
e
Cuidado - embora essa seja a melhor documentação que eu encontrei, ela deixa muitos casos sombrios. Boa sorte.