Índice das dicas

Remapeando teclas em notebooks

Por Carlos E. Morimoto em 8 de novembro de 2010 às 15h49

21

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.

21 comentáriosPor Carlos E. Morimoto. Revisado 8 de novembro de 2010 às 15h49

Comentários

combinação
por Murilo Rodrigues (anônimo) em 11 de novembro de 2010 às 14h25
Tem como substituir uma tecla por uma combinação de teclas, tipo: "/" = "Alt+E"
Combinação 2 por Kaiser Schwarcz (anônimo)
To perdido!!
por Matheus (anônimo) em 4 de setembro de 2011 às 19h14
Me ajuda,eu não consegui abrir esse tal de terminal que vc falo por favor helps!!
Alt Gr persistente
por Eloiza (anônimo) em 24 de agosto de 2011 às 20h32
Não sei o que fazer! Uso Windows 7 e ao digitar, meu netbook LG X140 escreve a terceira opção das teclas alfa-numéricas; mesmo sem a tecla alt gr estar pressionada. Alguém pode me ajudar?

Obrigada!
Tecla da abreviatura dos números ordinais
por ccapellari em 29 de julho de 2011 às 17h28
Olá!

Possuo um notebook da marca Acer Nplify e não consigo achar a tecla que corresponde a abreviatura dos numerais ordinais (primeiro ou primeira, segundo ou segunda).
Gostaria de saber o que posso fazer.
Obrigada!

Caroline
A procura de teclao de notbook
por Alcinei França (anônimo) em 15 de maio de 2011 às 09h18
olá! algum tempo venho procurando teclado de not, mas não tenho conseguido. por isso resolvi procurar atrves desse site. meu not e da linha win, intel celeron. se consiguisse ficaria muito grato.
obrigado
e no windows?
por William (anônimo) em 8 de novembro de 2010 às 23h08
Opa, como faço isso no rwindows? tem jeito?

william
Claro! por Willian (anônimo)
 
por rrabotelho (anônimo) em 4 de abril de 2010 às 08h24
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 ....
 
por Eduardo Feniman (anônimo) em 29 de março de 2010 às 13h32
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?
 
por welson (anônimo) em 17 de janeiro de 2010 às 16h34
gostaria de trocar o coamndo ctrl + C (Copiar) por uma das teclas de função F5 por exemplo.
 
por Alex (anônimo) em 5 de janeiro de 2010 às 16h00
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