Remapear chaves sem o xmodmap ou qualquer ferramenta X

6

Devido a um acidente de café, alguns números do teclado do meu laptop pararam de funcionar. Eu usei xmodmap para usar F1 , F2 , etc, como substituições e salvei as configurações para ~/.Xmodmap .

No entanto, isso causou alguns problemas.

  1. Eu nem sempre uso o X neste computador, e sem iniciar o X xmodmap não se aplica.

  2. Isso faz com que o X demore mais tempo para iniciar.

  3. Por algum motivo, isso causou atalhos de teclado XFCE que não tinham nada a ver com qualquer uma das chaves alteradas via xmodmap parar de funcionar (na verdade, todos os atalhos de teclado pararam de funcionar, exceto os atalhos do gerenciador de janelas). Depois de alguns minutos desde que eu iniciei o X, os atalhos do XFCE começam a funcionar normalmente de novo! Esse atraso não é muito chato, mas também é um problema.

Eu imagino que haja algum tipo de mapeamento que é lido pelo sistema operacional antes do X iniciar. Não há como alterar esse mapeamento? É alguma maneira de alterar o mapeamento do teclado sem usar as ferramentas X? Eu estou usando o Debian estável.

PS: Aparentemente, o arquivo que chama xmodmap .Xmodmap on startx é /etc/xdg/xfce4/xinitrc . Seu conteúdo pode ser encontrado aqui .

    
por Alex 16.03.2014 / 01:24

1 resposta

18

Primeiro, as boas notícias

O console do sistema Linux tem seu próprio conjunto de mapeamentos de teclado, que podem ser gerenciados usando as ferramentas do pacote kbd , especificamente dumpkeys e showkey para descoberta e loadkeys para carregar em um mapeamento personalizado . A questão do super usuário Como alterar o mapa de teclado do console no Linux? tem uma resposta com boas informações sobre como usar essas ferramentas.

Agora, as más notícias

Embora seja verdade que essas ferramentas permitirão o remapeamento das chaves no console do Linux, sem envolver xmodmap ou exigir que X esteja em execução, elas afetarão os mapeamentos de teclado no texto virtual console. As mudanças não terão absolutamente nenhum efeito no ambiente gráfico, porque o sistema XInput / evdev do X lê diretamente os dispositivos de entrada e faz seu próprio processamento.

Portanto, se você quiser evitar usar xmodmap apenas remapeando no console e aplicando-o em todos os lugares, receio que isso não funcione. De fato, você precisaria remapear ambos o console (usando loadkeys ) e X11 (usando um método como xmodmap ), para usar o mesmo layout de teclado em todos os lugares.

A solução para a lentidão do xmodmap (e bugs, uma vez que seus remapings são instáveis e não persistentes em ambientes de desktop que usam comutação de layout) seria definir um layout de teclado inteiramente novo baseado de qualquer layout que você estava usando anteriormente, em vez de aplicar modificações em tempo de execução. Na inicialização do X, você carregaria esse layout novo e remapeado em vez do que estiver usando agora. (Parece que agora é a única maneira de modificar de forma confiável o layout do teclado em Ubuntus recentes - e possivelmente outras distros - já que seu xmodmap não é mais útil.)

Para obter informações sobre como definir e usar um layout de teclado personalizado xkb , consulte:

  1. Howto: Definições de layout de teclado personalizadas no Wiki da Comunidade do Ubuntu.
  2. Como modificar um layout de teclado no Linux , um post de Romano Giannetti.

Ambos foram escritos este ano (2014), portanto as informações devem estar atualizadas. As informações do wiki do Ubuntu devem ser aplicáveis a qualquer distribuição, na maior parte, já que todas usam o sistema xkb no X.

    
por 25.07.2014 / 10:51