Pretendo adicionar um nível adicional ao layout Neo2 alemão não convencional de 8 níveis para redirecionar teclas para QWERTY quando o modificador de controle é pressionado.
Embora eu não espere que 9 níveis não funcionem, seria reconfortante saber o número máximo de níveis.
Eu li em algum lugar que as informações de estado/nível/tipo são mascaradas como um dado de 32 bits (e essa é de fato a saída hexadecimal de xev
).
Todos esses 32 bits são usados para transmitir informações de nível?
Editar: eu combinei esse hexadecimal de 2 dígitos - que deveria ser o número máximo de teclas modificadoras - com o número máximo de níveis (combinações de teclas modificadoras). Esta informação não deve ser relevante para a minha pergunta.
Ou seja, algo como o seguinte. Porque comecei a aprender sobre o XKB ontem e ainda não encontrei um tipo que exceda 8 níveis.
type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
// [...]
// + map[Control]= Level0;
level_name[Level0] = "QWERTY shortcuts"
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Shift Alt";
level_name[Level5] = "X";
level_name[Level6] = "X Shift";
level_name[Level7] = "X Alt Base";
level_name[Level8] = "X Shift Alt";
};
Todas as citações provenientes da extensão do teclado X: especificação da biblioteca
O número total de níveis para um determinado tipo de chave é mantido em alguma
XkbKeyTypeRec
estrutura como um caractere não assinado:num_levels
(página 140)O que teoricamente limita o número máximo de níveis a 255 (já que começa em 1)
Porém, como o número de símbolos por chave é, por desenho, limitado a 255 e pode haver até quatro grupos…, o limite prático é dividido por quatro: 63 , como podemos ler na página 127
Aliás, se você quiser alterar o número de níveis para um determinado tipo de chave, use
XkbResizeKeyType
(página 145):