Nota : Wayland usa xkb, mas muitos xTools pararam de funcionar corretamente (xdotool por exemplo)
Nota : Este é um tutorial não exaustivo. É mais útil para um indivíduo que procura criar um novo layout de oito níveis e entender a sintaxe.
Nota: É fornecida uma solução rápida e suja. Inclui uma planilha que gera automaticamente o código que você precisa.
Noções básicas do diretório XKB
cd /usr/share/X11/xkb/ && ls
- types- Como as chaves produzidas são alteradas pelos modificadores ativos . (Shift, Control, Alt ~)
Importante se você deseja personalizar as teclas modificadoras.
- geometry- Usado para desenhar gráficos do teclado.
Importante se você estiver projetando uma peça de hardware de teclado não padrão.
- rules- Buscando a configuração apropriada para sua configuração atual.
Você precisará definir isso
- keycodes- O intérprete dos códigos de teclas para o hardware do teclado.
Exemplo: os teclados Macintosh entendem a barra de espaço como 57
. Nós escrevemos isso como<SPCE>
- symbols- Quais valores são atribuídos a quais códigos-chave .
É aqui que definiremos nosso layout personalizado.
- compat- Abreviação de Compatibilidade .
Comportamento interno dos modificadores (Shift, Control, Alt ...)
Workflow
keycodes > symbols > compat
Eu apenas toco symbols
: veja abaixo a solução Rápida e suja .
Mapas de símbolos
/symbols/us Qualquer arquivo neste diretório segue a mesma estrutura.
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "US/ASCII";
key <TLDE> { [ quoteleft, asciitilde ] };
key <AE01> { [ 1, exclam ] };
modifier_map Shift { Shift_L, Shift_R };
};
partial - Não é um mapa completo do teclado
alphanumeric_keysSeção do teclado sendo mapeada. Vários podem ser usados
Nota: Se não *_keys
for especificado, um teclado completo será assumido.
"basic" - O nome do mapa de símbolos
name[Group1]= "US/ASCII";Dá um nome exclusivo a este grupo de teclados.
modifier_mapPara editar teclas modificadoras . (Ctrl, Shift, Alt ~)
Shift { Shift_L, Shift_R };Não é normalmente necessário. Ele mapeia os dois turnos para o modificador de turno, também conhecido como nível 2.
key <TLDE> A tecla Tilde - geralmente a tecla superior esquerda acima da guia
key <AE01> Ilustração - Composta por três partes,AE01
A= bloco de teclas alfanuméricas.
KP= Teclado
FK= Tecla de Função
E= Linha no teclado.
Space Key= Alinha
Shift Key= Blinha
Caps Lock= Clinha
Tab Key= Dlinha
01= Posição da chave na linha.
AE01= 1
AB02= X
AC05=G
[+ ]- Em idiomas C; Colchetes indica uma lista pela qual os itens são divididos por ,. O comprimento da lista determina a quantidade de níveis. Por exemplo:
key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }
Normalmente, os níveis indicam o seguinte pressionamento de tecla com:
- Sem teclas modificadoras
- Shift
- Alt Gr
- Shift + Alt Gr
- Custom - Não é provável que veja algo além do nível 4.
Em resumo, se você quisesse mapear uma tecla para shift + altgr, sua lista teria que ter pelo menos quatro itens.
AVISO - Erros comuns
Qualquer uma dessas linhas causará um erro crítico e deixará você sem um teclado utilizável:
key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
Backspace
deve ser BackSpace
: Preste muita atenção à ortografia.
- Uma entrada vazia deve ser
VoidSymbol
.
Melhor medida de segurança!
Faça backup do arquivo que você está editando:
sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP
Crie um script que você possa executar sem senha root
Algo como:
#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us
Se algo der errado, use o mouse para executar essa linha de código (contida no script bash ao qual você deu permissão ao sudoers. Lembre- chmod +x
se de permitir a execução como um executável.)
Estratégias de backup para recuperar um sistema danificado
- AVISO: O teclado e o teclado virtual deixarão de funcionar com o menor erro.
- Mouse funcionará . A digitação pode ser feita destacando os caracteres e colando-os usando o clique do meio. No Bash, você pode
return
(Pressionar Enter) colando uma quebra de linha.
- O teclado funcionará no modo de recuperação no shell raiz. (Acessado a partir do bash)
- Você sempre pode usar um ambiente ativo para corrigir arquivos.
Solução rápida e suja
- Vá aqui
- Arquivo> Fazer uma cópia
- Mapper Folha é onde você define seu layout.
- As entradas de caracteres únicos são convertidas em código compreendido pelo programa.
( !
se torna U0021
). Unicode suportado!
- Strings não são traduzidas e são tratadas como estão. Verifique se não há erros de ortografia ou caso !.
- Quadrados vazios são preenchidos automaticamente
VoidSymbol
.
- XKB-Sort A planilha contém grupos de chaves, por exemplo:
key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
Altera isso em todos os 8 níveis:
1234567890-= // Physical Keys
![]"*{}/')(\ // Changed to these characters
- XKBTab também possui linhas. Todas as outras guias podem ser ignoradas (seu código).
sudo vim /usr/share/X11/xkb/symbols/us
- Substitua o conteúdo de um layout. Escolha um que você não vai usar. Por exemplo: alterei a entrada do colemak deixando a estrutura intacta e substitui as chaves.
Linhas de interesse:
key.type[group1]="EIGHT_LEVEL"; // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] };
key { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5