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.
Top comments (17)
chmod: alterando permissões de 'remap135.sh': Operação não permitida
Alguem sabe como resolver?
usar o "chmod 777 remap135.sh" ficar melhor
você precisa de permissões especiais, usa o sudo.
Muito obrigado Natália, funcinou certinho.
Muito bom, funcionou perfeitamente
estava com o mesmo problema, com um teclado m-880 da AOES.
depois de uma hora ou duas pesquisando sobre configurações do linux, ou aplicativos de facil remapeamento, achei esse tópico, salvou minha vida, não estava conseguindo fazer "ou" || e é inviavel ficar usando o unicode toda hora.
Obrigado !!!
Muito bom, eu tava com o mesmo problema pra poder usar a barra vertical "|" mas ainda estou em busca de criar um layout de verdade com as modificações, e parece que vou perder um tempinho pra conseguir isso.
Obrigado!
como eu faço para colocar o "|" no terminal?? tipo no arquio bashrc ou zshrc??
Natália, como faço para colocar o ' | ' no terminal tbm?? prf me ajudar!!! PRF ME AJUDAR!!!!
À esquerda da tecla 1 há uma tecla, basta pressionar essa tecla, saudações e bem-vindo ao DEV 👋
eu não entendi está tecla após a tecla 1 pode me explicar melhor?
como eu faço para colocar o "|" no terminal?? tipo no arquio bashrc ou zshrc??
Gracias tu método me funcionó, genia!
Natália do céu! Você me ajudou demais com esse artigo <3 \||| rs
Natália, como faço para colocar o ' | ' no terminal tbm prf me ajudar!!!
salvou meu dia... me inscrevi aqui só pra agradecer...
sudo vim remap27.sh
Quando executo esse comando diz que "sudo 30" comando nao encontrado, alguem pode me ajudar