Remapeando teclas em notebooks
Publicado em 16/08/2008 – 16:08por Carlos Morimoto
Se você usa um notebook, é bem provável que tenha vontade de trocar as funções de algumas das teclas do teclado. Em muitos notebooks da Acer, por exemplo, a tecla "/" é digitada pressionando "AltGr+Q" e a "?" pressionando "AltGr+W", o que não é nada prático. Existem ainda casos em que alguma das teclas não é reconhecida pelo sistema, ou que você deseja desativar alguma tecla específica (como o CapsLock) para evitar toques acidentais. No Linux isso pode ser feito usando o xmodmap, um pequeno utilitário de linha de comando que permite definir funções e remapear as teclas.
O primeiro passo é descobrir os códigos das teclas que você deseja remapear. Para isso, abra um terminal e rode o comando "xev". Ele abrirá uma pequena janela que monitorará os toques no teclado. Ao pressionar cada tecla, ele exibe um conjunto de informações sobre ela, como em:
KeyRelease event, serial 34, synthetic NO, window 0×4000001,
root 0×4f, subw 0×0, time 170297154, (401,512), root:(404,537),
state 0×0, keycode 117 (keysym 0xff67, Menu), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
No nosso caso, o que interessa é o keycode da tecla, informado na terceira linha. No meu caso, pressionei a tecla menu (entre o AltGr e o Ctrl), que retorna o keycode 117.
Imagine que você tem um notebook Acer e deseja que ela assuma a função de tecla "/ ?" que não está presente no teclado. O comando seria:
$ xmodmap -e "keycode 117 = slash question"
Se você quisesse usar a tecla Windows (keycode 115), bastaria trocar o código da tecla ao executar o comando, como em:
$ xmodmap -e "keycode 115 = slash question"
Se o sistema não detectar a tecla "\ |" do teclado, o que é relativamente comum em teclados ABNT2, use o xev para verificar qual é o keycode da tecla (via de regra será o 94) e atribua a ele as teclas "backslash bar", como em:
$ xmodmap -e "keycode 94 = backslash bar"
Você pode estar se perguntando como que descobri que o "nome científico" da tecla é "backslash bar". Na verdade é bem simples, basta ir em outro micro (onde a tecla seja reconhecida normalmente) e usar o xev para descobrir o nome correto do caracter para a tecla minúscula e para a maiúscula, que é também informado na terceira linha. No caso da tecla "~^", por exemplo, você teria:
KeyPress event, serial 34, synthetic NO, window 0×4000001,
root 0×4f, subw 0×0, time 172081108, (453,538), root:(456,563),
state 0×0, keycode 48 (keysym 0xfe53, dead_tilde), same_screen YES,
XLookupString gives 1 bytes: (7e) "~"
XmbLookupString gives 0 bytes:
XFilterEvent returns: True
KeyRelease event, serial 34, synthetic NO, window 0×4000001,
root 0×4f, subw 0×0, time 172080489, (453,538), root:(456,563),
state 0×4, keycode 48 (keysym 0xfe52, dead_circumflex), same_screen YES,
XLookupString gives 1 bytes: (1e) ""
XFilterEvent returns: False
Para remapear a tecla, bastaria informar o keycode da tecla que receberá as funções, como em:
$ xmodmap -e "keycode 48 = dead_tilde dead_circumflex"
O xmodmap pode ser usado para remapear qualquer outra tecla que eventualmente não seja reconhecida pelo sistema, ou que você simplesmente queira trocar de posição por comodidade.
Um bom exemplo é o Caps_Lock, uma função pouco usada hoje em dia, que basicamente é usado apenas quando você quer dar a impressão de que está gritando. Muitos tem tamanha aversão à pobre tecla que chegam a arrancá-la do teclado.
Uma forma menos radical de se livra dele é usar a função "remove lock = Caps_Lock" do xmodmap:
$ xmodmap -e "remove lock = Caps_Lock"
A partir daí, o Caps_Lock é desativado e você pode atribuir outra função à tecla. Uma configuração comum é simplesmente fazer com que ela clone a função da tecla "A", já que a maioria dos toques acidentais no Caps_Lock são destinados a ela. Para isso, o comando seria:
$ xmodmap -e "keycode 66 = a A"
Como de praxe, a configuração é perdida quando você reinicia o micro, ou faz logout. Para que ela se torne permanente, você tem basicamente duas opções. A primeira é simplesmente adicionar os comandos no final do arquivo "/etc/profile". Isso fará com que eles sejam executados sempre que você abrir um terminal.
Para que eles sejam realmente executados logo que o KDE ou Gnome é aberto, é necessário adicioná-los no final do arquivo "/etc/profile.d/kde4.sh" (para o KDE 4), "/etc/profile.d/kde.sh" (para o KDE 3) ou "/etc/profile.d/gconf.sh" (para o Gnome). Não preciso dizer que você deve ter cuidado ao editar estes arquivos, já que eles são essenciais para o carregamento do ambiente gráfico. Simplesmente adicione as linhas no final do arquivo correspondente, sem alterar as demais.
Se você passar a receber um erro como "xmodmap: commandline:1: bad keysym in remove modifier list 'Caps_Lock', no corresponding keycodes", volte ao arquivo de configuração e adicione a linha xmodmap -e "keycode 66 = Caps_Lock" antes da linha xmodmap -e "remove lock = Caps_Lock", de forma que a função da tecla seja re-atribuída antes de ser removida, evitando a exibição da mensagem de erro. Isso é necessário sempre que o comando é adicionado em um arquivo de inicialização que é executado mais de uma vez por sessão (como no caso do /etc/profile, que é executado toda vez que você abre um terminal). Um exemplo seria:
xmodmap -e "keycode 66 = Caps_Lock"
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "keycode 66 = a A"
Antigamente, esta configuração era colocada no arquivo "/etc/X11/xinit/xinitrc" ou no arquivo "Xmodmap", dentro do home, mas eles caíram em desuso, já que não são mais executados por padrão nas distribuições atuais. O xinitrc, por exemplo, é executado quando abrimos o ambiente gráfico usando o comando "startx". Como nas distribuições atuais o ambiente gráfico é carregado a partir do GDM ou do KDM (os gerenciadores de login), ele acaba nunca sendo executado. Este é apenas um exemplo de como mesmo as configurações mais básicas do sistema podem mudar com o tempo, conforme novos softwares e novas camadas do sistema são introduzidas.



13 respostas para “Remapeando teclas em notebooks”
Esse lay-out de teclado é uma praga! São poucos os fabricantes que colocam a dupla "/?" numa tecla em vez da famigerada combinação altgr+q/w. Alguns Itautecs e CCEs são bons neste aspecto -- forncem um ABNT melhorzinho. Já os ACERs, ASUSs e Positivos, por sua vez, traz esse incômodo lay-out, que atrapalha muito, principalmente quem usa Linux! Pergunto: de onde veio esse design? Ninguém reclama? Que tal um ABNT padrão para notebook e que deva realmente ser respeitado?
Tenho um MacBook Apple com o Ubuntu 8.0.4.1.
Para conseguir fazer o "ç" ou o "ã" funcionar corretamente, tenho de incluir algumas linhas no arquivo .xmodmap no diretório home e rodar o programa toda vez que inicia uma sessão nova. No caso do Gnome, Systema>Preferências>Sessões.
A droga é que parece que existe uma incompatibilidade entre as definições declaradas no arquivo xorg.conf com as instruções definidas pelo Gnome.
O Ubuntu tem este problema e toda nova liberação de versão, uma dificuldade em reconhecer caracteres especiais com a tecla compose em teclados internacionais, principalmente para a língua portuguesa. Parece que só existe teclado Apple Macintosh definido para outros idiomas e não para o Português.
como coloco os sinais de numero(abreviado) e feminino e masculino(abreviado). Não consigo achar… meu note é acer Aspire 3050-1118
Carlos, voce é genial. Estava procurando uma solução para decobrir as teclas de atalho do meu notebook ACER 6920-6960, a maquina é maravilhosa, porem estava acOstumada com meu antigo DELL latitude 510, que possui um teclado completamente diferente.
Imagine que estou usando meu note ha 1 mes e nao conseguia encontrar a tal tecla de atalho AltGr+W” para usar /, ja nao aguentava mais procurar… fui em suporte,verifiquei em varios clubes e foruns sobre o assunto e nada… o meu teclado é esse que voce se refere, gostaria se possivel que vc continuasse essa aula didatica… pois as demais teclas de atalho que ficam na linha das teclas de numeros marcadas em azul, eu nao consegui descobrir.
Voce nao imagina o serviço que prestou a centenas de usuarios.
PARABENS!!!!
OBRIGADA MAIS UMA VEZ.
Ola, gostaria de saber onde fica a tecla grau (°) no teclado do acer
Olá eu acabei de comprar aquele teclado ultrafino da apple, e notei que algumas teclas estao "desmapeadas",via gnome não consegui definir o layout do teclado com o idioma em portugues, apenas em ingles. Eu queria saber se é possivel criar esse xmodmap apenas para o teclado usb, quando eu trocar de layout no gnome.
Pois estou no notebook e lá o teclado eh abnt2 brasileiro.
Obrigado
Vc é o kra !
Olá Amigos!
Tenho um notbook da HP mias as tecla dele esta com a função erra da exemplos onde coloco Shift ? ele não reconhece e sim : …. gostaria se alguém pode me ajudar?
eu tenho um note acer vgn-ns295d e queria saber como ativo todas as teclas ja tentei varios tipos de teclados e nada se alguem puder me ajuadar agradeço
eu ttenho um acer que troquei o teclado achando que fosse ele o problema mas nao resolveu e continua a mesma coisa, o erro é que algumas teclas nao funcionao nem mesmo formatando o Notbook e instalando outro sistema operacional as teclas sao 9 -- 7 -- L -- O e o ponto alguma ajuda.fico grato
gostaria de trocar o coamndo ctrl + C (Copiar) por uma das teclas de função F5 por exemplo.
Carlos,
seu artigo me deu muita esperança, mas ainda não consegui coloca-lo pra funcionar. Meu caso é o seguinte:
as teclas u,j, n e m do meu laptop estragaram. Estou tentando habilitar essas letras com um comando do tipo Alt+B para a letra N, por exemplo.
não consegui achar o keycode para teclas combinadas, você pode me ajudar?
Meiu netbook (Toshiba NB 305) tem teclado americano (sem ç)… Consegui usarn no padrão ABNT (com o ç; todos acentos e sinais) nas teclas "erradas" (anotei com marcador de dvds o comando "correto", que não deve ser o mais correto).
Gostaria de saber como faço para ter o "\" e o "|"? O "?" e consigo com o ALT GROUP+W e o "/" com o ALT GROUP+0 ….