Remapeando teclas no Linux (keyd)
17/06/2024
O que é o keyd?
O keyd é um daemon que captura a entrada do teclado a partir do udev e devolve um mapeamento alternativo configurado pelo usuário. Além do keyd, existe também o xmodmap, mas este só funciona no X.org, enquanto o keyd funciona no X.org, no Wayland e até no TTY; ele é universal.
Como instalar e usar o keyd?
Segundo o Repology, o keyd está nos repositórios de várias distribuições populares. Se não estiver, você pode seguir as instruções na página do GitHub.
Depois de instalado, você pode habilitar e iniciar o serviço do systemd:
sudo systemctl enable keyd && sudo systemctl start keyd
Se você não quer ou não usa o systemd, pode iniciá-lo manualmente, mas ele precisa ser executado como root; portanto, recomenda-se configurá-lo como um serviço de init.
Por fim, só falta configurá-lo. Para isso, abra o arquivo /etc/keyd/default.conf:
[ids]
*
[main]
# Usa o Ctrl direito como Enter
rightcontrol = enter
# Caps Lock é k
capslock = k
A sintaxe é simples: na primeira seção ([ids]), você coloca o ID do teclado que quer usar. Normalmente só um teclado é usado, então nesse caso usa-se um asterisco (explicarei mais adiante como especificar um teclado).
Depois, em [main], segue-se a sintaxe tecla_de_entrada = tecla_de_saída. Como visto no código de exemplo, você pode adicionar muitas entradas, desde que sejam declaradas em linhas diferentes.
Se quiser adicionar comentários à configuração, pode usar o símbolo de cerquilha (#).
Se quisermos descobrir o nome de uma tecla, podemos usar o comando keyd monitor para encontrar seu nome exato. Além de teclados, o keyd também detecta outros dispositivos, como mouses.
ItsZariep@PC~-> keyd monitor
device added: 0603:00f5 SINO WEALTH Mechanical Keyboard (/dev/input/event6)
device added: 0603:00f5 SINO WEALTH Mechanical Keyboard Consumer Control (/dev/input/event5)
device added: 0603:00f5 SINO WEALTH Mechanical Keyboard (/dev/input/event3)
device added: 30fa:0400 USB Optical Mouse (/dev/input/event2)
SINO WEALTH Mechanical Keyboard 0603:00f5 m up
SINO WEALTH Mechanical Keyboard 0603:00f5 leftcontrol up
SINO WEALTH Mechanical Keyboard 0603:00f5 rightshift down
SINO WEALTH Mechanical Keyboard 0603:00f5 rightshift up
SINO WEALTH Mechanical Keyboard 0603:00f5 tab down
SINO WEALTH Mechanical Keyboard 0603:00f5 tab up
USB Optical Mouse 30fa:0400 leftmouse down
USB Optical Mouse 30fa:0400 leftmouse up
USB Optical Mouse 30fa:0400 rightmouse down
USB Optical Mouse 30fa:0400 rightmouse up
USB Optical Mouse 30fa:0400 mouse2 down
USB Optical Mouse 30fa:0400 mouse2 up
USB Optical Mouse 30fa:0400 mouse1 down
USB Optical Mouse 30fa:0400 mouse1 up
SINO WEALTH Mechanical Keyboard 0603:00f5 leftcontrol down
SINO WEALTH Mechanical Keyboard 0603:00f5 c down
Se você realmente quiser especificar um teclado em particular, pode usar a saída do comando keyd monitor. No meu caso, é 0603:00f5. Se eu quisesse que as alterações valessem apenas para esse teclado, usaria esse ID. Note que você deve evitar trocar a porta onde o teclado está conectado, pois o ID pode mudar.
Mais opções
O keyd é muito poderoso e permite fazer coisas como j+k = esc. Se quiser ver todo o potencial do keyd, pode consultar a página dele no GitHub ou ler o manual.


