Como remapear teclas no Linux?
Natália Oliveira
Posted on October 7, 2020
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
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
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:
Certo. Fiquei me perguntando onde poderia encontrar uma lista completa com essas keycode
que apareceram, então encontrei o seguinte comando:
$ xmodmap -pke
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"
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"
Pronto, meu xmodmap -pke
ficou com essa configuração no keycode = 27
:
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
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"
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
Agora os últimos passos:
- Abra o “Startup applications” do Ubuntu
- Clique em “Add”
- Dê um nome a configuração, como “Remap key [número da key que você mudou]”
- Na parte do “Command”, digite a localização do script do comando, no meu exemplo:
/usr/bin/remap27.sh
- Salve
- 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.
Posted on October 7, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.