Como remapear teclas no Linux

Há várias situações em que remapear parte do seu teclado pode ser muito útil.
Um teclado danificado pode ser uma delas.

Há casos em que o usuário adquire um teclado limitado pelo próprio fabricante — ou seja, vem sem alguma tecla importante, como o “Num Lock”.

O procedimento é indicado em casos de teclas danificadas ou ausentes.

No meu teclado Dell WK636p (ABNT 105 teclas) há algumas teclas em pares (Shift, Ctrl etc.)
Neste post, descrevo como fazer com que o Linux substitua o sinal de uma por outra.
Como exemplo prático, vamos remapear a tecla “Shift esquerda” para “Num Lock”.
Você pode ajustar facilmente o meu exemplo às suas necessidades depois.
Com privilégios administrativos, use o seu editor de texto puro favorito para abrir o arquivo pc:


vim /usr/share/X11/xkb/symbols/pc 

Localize a linha:

key  {    [ Shift_L      ]   };

e a substitua por:

key  {    [ Num_Lock         ]   };

como remapear teclas no linux
Ao analisar o arquivo de mapeamento, é fácil perceber que o procedimento pode ser readequado para a maioria das teclas.
Pode ser necessário reiniciar a sessão para as edições terem efeito.

O aplicativo Indicator Keylock exibe as teclas LOCK em notebooks e teclados sem LEDs

Se você usa um notebook ou teclado sem LEDs, pode encontrar alguma dificuldade para determinar quando as teclas LOCK (Caps Lock, Num Lock e Scroll Lock) estão ativas ou não.
Há outras maneiras, contudo, de ser avisado quando se esbarrou em uma das teclas modificadoras LOCK.

Leds do netbook.
Leds no netbook.

O Ubuntu tem, no painel de configuração do teclado a opção de emitir um aviso sonoro a cada vez que uma tecla LOCK é ativada ou desativada.
O indicator-keylock é um pequeno programa que emite um aviso visual, através do sistema de notificações já existente, de que o estado de uma das teclas LOCK foi alterado.
Trata-se de um appindicator que resolve o problema da falta de LEDs em notebooks, netbooks ou em teclados, como o DELL KM 632.
O aplicativo vem com vários ícones, para satisfazer os diversos temas disponíveis no ambiente desktop do Ubuntu.

Como instalar o indicator-keylock

Vou explicar como instalar o indicator-keylock através de PPAs.
Se você tiver alguma dificuldade para executar este processo, sugiro ler o tutorial Como instalar softwares a partir de PPAs — onde também se explica os possíveis “perigos” deste método de instalação.
No Ubuntu, abra um terminal e execute os seguintes comandos:

sudo add-apt-repository ppa:tsbarnes/indicator-keylock && sudo apt-get update
sudo apt-get install indicator-keylock

Para iniciar o aplicativo tecle Alt + F2 e execute “indicator-keylock”.
Opcionalmente, você pode instalar conjuntos de ícones adicionais ao seu sistema, para tornar o visualização do OSD do indicator-keylock mais agradável ou integrado ao seu tema atual.

sudo apt-get install indicator-keylock-ubuntu-mono indicator-keylock-humanity indicator-keylock-elementary

apt-cache search keylock
O resultado, após a instalação e execução do aplicativo, é a exibição de um pequeno quadro de aviso a cada vez que uma das teclas LOCK for ativada.
ativação da tela LOCK
Além disto, o sistema exibe um ícone, na barra de status, indicando a tecla que se encontra ativada.
O “A” maiúsculo, no ícone, representa a tecla “Caps Lock” (ou “Fixa”, em alguns teclados) — ele não se refere à letra A.

Como ligar o Num Lock quando a tecla está ausente

Recentemente me deparei com um teclado Dell KM 632, com as teclas numéricas dispostas à parte (conforme a foto abaixo), mas sem a tecla Num Lock, especificamente para ativar ou desativar esta parte do teclado.
Embora não haja qualquer indicação visual, esta parte do teclado tem dupla função, ou seja, as teclas tanto podem imprimir números como podem ser usadas como direcionadoras — ←, →, ↓, ↑, End, Home, PgDn, PgUp etc.

Teclado númerico no Dell KM 632
Clique para ampliar.

A falta de uma tecla modificadora Num Lock, a princípio, nos impede de usar com eficiência este teclado.
Sou usuário Linux e nem tentei ver como este dispositivo se comporta no Windows — e, verdade seja dita, tenho muito pouco interesse em saber.
Devolver o produto é uma alternativa, neste caso — e o consumidor tem o prazo legal de fazê-lo até 7 dias depois de o ter recebido.
Mas geeks tem esta tendência irresistível de querer procurar uma solução para tudo — às vezes, um tanto complexa.
Neste caso, há várias formas de resolver o problema, no Linux — e algumas são bastante simples.

Como solucionar ou contornar a falta de teclas no Linux

Você sempre pode (re)mapear o teclado e há ferramentas, no Linux, tanto gráficas, quanto scripts para executar no terminal para fazer isto.
Entre as possíveis soluções, eu enumero as seguintes:

  • Remapeie as teclas — Ainda que esteja faltando uma tecla, ainda há outras “sobrando” no teclado: Ctrl, Shift e Delete, estão presentes em pares, cada uma. Além disto, há algumas que são bem menos usadas: Caps Lock, Tab ou ESC — Ok! A gente usa todas elas… 😉 Mas será que usa a combinação de Ctrl + Esc? E Alt+Caps Lock?
    A idéia é atribuir a uma destas teclas (ou combinação) “inúteis” para você a função da tecla que está faltando.
  • Crie um script para ativar/desativar a função da tecla em questão — Qualquer que seja a função, ela provavelmente pode ser ativada a partir de um script — seja hibernação, controle do áudio, trava do teclado, Num Lock, Scroll Lock etc.
    Você pode associar esta solução a outras, para ter uma maior comodidade: criar suas teclas de atalho para acionar o script ou o comando ou, ainda, adicioná-lo à inicialização do seu sistema.
  • Baixe um aplicativo utilitário para ligar/desligar a função desejada — Há aplicativos que fazem este trabalho e também podem ser associados a teclas de atalho ou inseridos na inicialização do sistema.

Neste caso, optei por usar um pequeno utilitário, que liga ou desliga o teclado numérico pra mim.

Como ativar/desativar o Num Lock com o numlockx

O numlockx é um programa utilitário, feito para controlar a tecla Num Lock ou NumLock dentro de uma sessão do X11.
Ou seja, dentro do ambiente gráfico, o numlockx resolve o problema.
Ele é muito simples e estável. Tem 4 opções de funcionamento, apenas:

  • on — para ligar o teclado numérico.
  • off — para desligar.
  • toggle — para alterar o estado do teclado numérico: se estivar ligado, desliga (e vice-versa).
  • status — para informar o estado atual do Num Lock.

Para ligar o Num Lock, portanto, o seguinte comando basta:

numlockx on

Se quiser saber se deu certo, use a opção status:

numlockx status
Numlock is on

O uso da opção status pode ser útil dentro de um script, para verificar a situação da tecla.
Você pode obter mais ajuda sobre o numlockx, com o help:

numlockx --help

Como instalar o numlockx

O aplicativo está disponível nos repositórios do Debian, do Ubuntu e de outras distribuições baseadas nelas.
Pode ser instalado, portanto, facilmente, com apt-get ou através da central de instalação de programas da sua distro favorita.

sudo apt-get update
sudo apt-get install numlockx

Se preferir um caminho mais fácil, clique aqui, para instalar o numlockx no seu sistema Ubuntu.
Usuários de distros baseadas no Red Hat, podem baixar o pacote RPM, mais atualizado, no link abaixo:
Download numlockx: http://sourceforge.net/projects/magicrpmshop/files/?source=navbar.

Como ligar o Num Lock automaticamente no início da sessão

A versão mais atual do numlockx já faz esta alteração.
Se isto não estiver acontecendo, sugiro ler o post sobre como tirar ou colocar aplicativos no início automático ou alterar o arquivo .xinitrc:

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
#

numlockx &

exec window_manager

Referências:

Documentação do ArchLinux: https://wiki.archlinux.org/index.php/Activating_Numlock_on_Bootup.
Post no Cyberciti: http://www.cyberciti.biz/faq/how-to-linux-turn-on-num-lock-on-gnome-startup/.