
Sempre tive dificuldade em entender como o mapeamento do teclado e coisas relacionadas são organizados no Linux.
Quando as coisas quebram, meu sangue ferve se eu tiver que vasculhar intermináveis listas de discussão desatualizadas e postagens de fóruns para encontrarQUEum comando ou linha inputrc que resolve meu problema.
Existem problemas clássicos, como backspace que não funciona no vim ou Ctrl
setas + no bash até você mudar o tipo de terminal. Ou um problema que encontrei recentemente, onde na nova @
chave de instalação do Debian realmente imprime "
e "
imprime @
(layout de teclado errado?)
Apenas olhar os arquivos e ferramentas não ajuda muito. entradarc? xmodmap? setxkbmap? configuração do console? Por onde eu começo, na verdadeentendercomo funciona para que eu não precise recorrer a comandos duvidosos de alguém para corrigir meus problemas de teclado?
Responder1
Isso é muito mais complicado do que deveria ser, mas aqui está minha tentativa.
No nível mais básico, o kernel sabe como reconhecer dispositivos de teclado e entende o conceito de ummapa de teclado do console. Esta é a maneira mais simples de configurar o teclado e há apenas uma variável a ser considerada, mas essas configurações afetam apenas a entrada do teclado no console de texto do Linux.
Depois que você entra no Xorg, as coisas ficam um pouco mais complicadas, mas na verdade faz algum sentido. O Xorg tem várias noções específicas que são muito importantes de entender.
- O Xorg se comunica diretamente com o dispositivo de teclado, ignorando o kernel e ignorando o mapa de teclado especificado no console.
- O Xorg permite que você defina algumas opções específicas para o seu teclado no arquivo xorg.conf, embora as distribuições atuais do Linux tentem ao máximo rodar sem nenhum arquivo xorg.conf. Dependendo da sua versão do Xorg, você pode precisar especificar seu XkbLayout dentro de uma
InputClass
seção (para versões mais recentes do Xorg) ou umaInputDevice
seção (para versões mais antigas). - Existem várias camadas específicas de interpretação no Xorg quando uma tecla é pressionada.
- No nível mais básico, cada evento de pressionamento de tecla é representado por um código numérico.
- O XkbModel combinado com o XkbLayout são usados para associar um determinado código-chave a um evento-chave real. Por exemplo, no meu teclado, o código-chave 50 gera
Shift_L
. - Opcionalmente, você pode especificar vários XkbLayouts para um teclado e, em seguida, usar
XkbOptions
(lista completa geralmente armazenada em/usr/share/X11/xkb/rules
) para configurar como alternar layouts. (Isso é útil se, digamos, você estiver tentando aprender Dvorak sozinho ou quiser alternar entre os layouts de teclado em inglês e russo). - Cada código-chave pode ser interpretado de diversas maneiras, dependendo de quais modificadores estão sendo mantidos.
xmodmap
permite que você veja quais eventos principais serão enviados com base em quais modificadores estão sendo mantidos.
Responder2
Hoje em dia, o console e o X podem realmente trabalhar juntos.
Não sei se isso ainda é completamente padronizado, mas no Debian Unstable (e presumivelmente em outras distros com Xorg atualizado e ferramentas de console), /etc/default/keyboard
permite que você use a sintaxe estilo X para configurar o teclado no console e no X - em pelo menos se você estiver usando ferramentas de console e configuração de console. O resto é como Clee descreveu.
Responder3
Existem problemas clássicos como backspace não funcionar no vim...
Talvez você esteja falando sobre o comportamento do vim de excluir com backspace apenas os caracteres digitados na edição atual, evitando que você faça isso com caracteres já presentes antes de entrar no modo de edição.
Esse comportamento é alterado definindo:
set backspace=indent,eol,start