DEV Community

loading...
Cover image for Como remapear teclas no Linux?

Como remapear teclas no Linux?

Natália Oliveira
Writing in portuguese on purpose :)
Updated on ・4 min read

Comprei um teclado simples esse ano, mas logo notei alguns diferenças da foto que tinha no site.

Não havia algumas teclas, como o Print screen e o F11. Testei combinações das teclas com Shift, Ctrl e AltGr para ver o que acontecia e não encontrei o | (pipe), por exemplo.

Algumas pesquisas na internet me retornaram a seguinte opção: setar o layout para o padrão ABNT2:

$ setxkbmap -model abnt2 -layout br
Enter fullscreen mode Exit fullscreen mode

Ainda assim algumas coisas não funcionaram, mas pode ser que o comando funcione para você. Pois bem.

Para suprir minha necessidade do F11, fui em “Settings” no Ubuntu, depois em “Keyboard shortcuts” e procurei pelo fullscreen. Setei para Alt + Super + F, no meu caso, sendo o super aquele símbolo do Windows. Após isso, procurei pelo print e setei para Alt + Super + P. Pronto, parte do problema resolvido.

Para resolver o problema do pipe precisei pesquisar um pouco mais, já que não o encontrei ao testar algumas combinações. Foi aí que me deparei com perguntas e respostas sobre como remapear teclas, pois até então só tinha pesquisado na linha ”configurar teclado padrão americano” ou “meu teclado não tem tecla x”.

Ao pressionar uma tecla o sistema operacional irá identificar o código que foi disparado e vai interpretar esse código para devolver no output o esperado. Para entender quais códigos estão sendo disparados, digite o seguinte:

$ xev
Enter fullscreen mode Exit fullscreen mode

O xev é um comando que printa o conteúdo de eventos. Você pode ler mais sobre a documentação do xev aqui.

Assim que você der um enter, o xev irá abrir uma janelinha e ficar esperando as suas ações. Dei um print da tela com o já setado comando Alt + Super + P, com a janelinha aberta, e o terminal me mostrou o seguinte:

Alt Text

Certo. Fiquei me perguntando onde poderia encontrar uma lista completa com essas keycode que apareceram, então encontrei o seguinte comando:

$ xmodmap -pke
Enter fullscreen mode Exit fullscreen mode

O xmodmap é uma ferramenta para modificar o mapeamento de teclas e o comando acima indica que o atual layout de teclas deve ser printado na tela.

Testando os eventos com o xev vi que AltGr + R resultava em ®, símbolo de registered trademark, sendo o keycode = 27. Esse símbolo não tem utilidade para mim, por isso o escolhi para substituir pelo pipe.

Cheguei a ver algumas teclas que começavam com “dead_” e fiquei curiosa para saber o que era. Se quiser ver uma tabela com esses codinomes e seus significados, dê uma olhada no The Gtk Dead Key Compose Table.

Comando para remapear teclas

Até aí eu havia disparado o evento para ver rapidamente o código e tinha verificado quais outros símbolos a tecla que eu queria mudar continha, mas ainda precisava do comando para modificar a tecla. Então encontrei um exemplo de comando:

$ xmodmap -e "keycode 94 = backslash bar backslash bar masculine"
Enter fullscreen mode Exit fullscreen mode

Esse comando está modificando o keycode = 94, onde temos barra invertida (backslash), pipe (bar) e o símbolo º (masculine). Eles estão em sequência devido ao Shift, Ctrl, AltGr e por aí vai que podemos combinar para alcançar outras camadas além da tecla sozinha.

No meu caso, o keycode = 27 mostrava r R r R registered. Para modificar a tecla que eu queria, bastou fazer o seguinte:

$ xmodmap -e "keycode 27 = r R r R bar"
Enter fullscreen mode Exit fullscreen mode

Pronto, meu xmodmap -pke ficou com essa configuração no keycode = 27:

Alt Text

Fiz o teste com a tecla e estava funcionando corretamente.

Como persistir a configuração do teclado

A configuração de remapear as teclas não permanece na próxima sessão, o que significa que se você desligar o computador irá perder o remapeamento que fez.

Para persistir sua configuração você pode adicionar a linha de modificação no seu .bashrc, porém, isso só terá efeito se você abrir o terminal primeiro sempre que ligar o computador. Se você quiser persistir o remapeamento da tecla automaticamente ao iniciar, faça o seguinte no seu terminal:

$ cd ../../
$ cd usr/bin/
$ sudo vim remap27.sh
Enter fullscreen mode Exit fullscreen mode

Acabamos de criar um arquivo de shell, e no remap27.sh você pode botar o nome que desejar. No vim, adicione um tempo (contado em segundos) para a aplicação esperar ao ligar o computador e adicione o comando na primeira linha, depois salve e saia:

sleep 30 && xmodmap -e "keycode 27 = r R r R bar"
Enter fullscreen mode Exit fullscreen mode

Como explicado nessa respostas do StackExchange, esses comandos de teclado necessitam que o desktop esteja totalmente carregado, e com frequência podem rodar muito cedo quando você estiver inicializando a máquina e quebrar. A não ser que você tenha um SSD.

De volta ao terminal, dê permissão para executar o script:

$ chmod +x remap27.sh
Enter fullscreen mode Exit fullscreen mode

Agora os últimos passos:

  1. Abra o “Startup applications” do Ubuntu
  2. Clique em “Add”
  3. Dê um nome a configuração, como “Remap key [número da key que você mudou]”
  4. Na parte do “Command”, digite a localização do script do comando, no meu exemplo: /usr/bin/remap27.sh
  5. Salve
  6. Fecha a janela e reinicie o computador

Pronto. Toda vez que você ligar seu pc ele irá inicializar automaticamente com essa configuração de teclado remapeado.


Fontes:
Viva o Linux
xev man page
xmodmap Ubuntu Manpage
Comunidade Hardware
StackExchange


Esse texto não tem intenção de esgotar o tema. Acrescente nos comentários, e também aponte erros quando os identificar.

Discussion (2)

Collapse
mr_davidcarlos profile image
David Carlos

Muito bom, funcionou perfeitamente

Collapse
fmontoan profile image
fmontoan

Muito obrigado Natália, funcinou certinho.