jueves, febrero 09, 2012

Reasignar teclas en Xorg

Una función casi desconocida de Linux, o de al menos en el modo X, es la posibilidad de asignar teclas a otras teclas.
Esto es muy útil. Supongamos que se me rompe la barra espaciadora en una notebook muy cara. En ese caso puedo remapearla hacia otra tecla. En este caso, reapuntarla hacia CapsLock, que no es una tecla estrictamente necesaria:

xmodmap -e "keycode 117 = space"

En mi caso, tengo un precioso teclado tipo chiclet, muy confortable y cómodo para escribir, el A4tech KV-300H.



Pero cuya única contra, es que carece de las teclas < y > - lo cual es una molestia cuando escribo tags.

De tal manera que decidí asignar ambos símbolos sobre las teclas Super (banderita estupida de Windows).

Pasos 

Para encontrar la tecla sobre la cual queremos asignar una función debemos escribir
$ xmodmap -pke

Del listado que arroja este comando, escogí


keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

Bien, ahora necesitamos descubrir cual es el código correspondiente a ambas teclas super. Para ello usamos un especie de scanner que detecta pulsaciones:

$ showkey -a

Pulse cualquier tecla -- o Ctrl-D para salir de este programa

< 60 0074 0x3c
> 62 0076 0x3e

Ya tengo todo lo que necesito. Ahora reasignamos:

$ xmodmap -e "keycode 133 = 60"
$ xmodmap -e "keycode 134 = 62"


Ahora ya puedo usar las teclas Super para disparar > y <

Finalmente, lo ideal sería dejar este mapeo cargado en el arranque. Para ello, en Debian/Ubuntu creamos un archivo llamado

/etc/init.d/keyremap

que contenga estas líneas

#!/bin/sh

xmodmap -e "keycode 133 = 60"
xmodmap -e "keycode 134 = 62"



Y lo programamos en el arranque:

sudo chmod +x /etc/init.d/keyremap
sudo update-rc.d keyremap defaults

Por cierto, este truco funciona solo bajo X. Una leve variación para hacerlo funcionar bajo terminal de texto puede ser encontrada en http://linuxcool.wordpress.com/2008/04/05/mapear-teclas/

Fuentes:

No hay comentarios.: