DEV Community

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

Como remapear teclas no Linux?

nfo94 profile image Natália Oliveira 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 (0)

pic
Editor guide