02 enero 2009

Remapear una Tecla.

Hay quien piensa que la tecla llamada "Super", la que tiene el logotipo de Windows no sirve para nada a los usuarios de Linux.

Lo más parecido es la combinación de teclas <alt+f1>, que abre el menu de Aplicaciones, pero hoy le vamos a dar una nueva funcionalidad.

Como veis en la fotografía tenemos un teclado que tiene la "f" rota. Se trata de un viejo portátil que ha caido desde algo más de un metro de altura. La verdad es que ha habido suerte de que no se rompa nada más. Bueno, el portatil funciona, pero cuando queremos escribir palabras que contengan la letra "f" lo tenemos un poco complicado. Opciones:
  • tirar el portátil a la basura y comprar otro. Es la opción más sencilla, pero como he dicho el portatil va bien para lo que se usa, y sería una pena que acabara en un vertedero contaminando más nuestro sufrido planeta.
  • buscar sinónimos de palabras que contengan la letra "f". Si, es un buen ejercicio mental, pero ¡ es una opción un poco cansada !.
  • copiar la letra "f" de algún texto y pegarlo del portapapeles. Buen intento, pero a veces necesitamos copiar otras cosas y también termina por ser algo pesado.
  • remapear una tecla que no usemos para nada. Esta es la solución buena, pero ¿es eso posible?. Pues si, ahora lo explico.
Para saber que código le corresponde a cada tecla ejecutamos el comando "xev" en la terminal y luego la tecla cuyo código queramos saber. Como se ve la tecla Win izquierda tiene un código distinto a la tecla Win derecha. En este ordenador, son respectivamente el 133 y el 134, pero eso varía de un teclado a otro.

Tecla Windows izquierda
KeyRelease event, serial 33, synthetic NO, window 0x5a00001,
root 0x4e, subw 0x0, time 18783549, (450,626), root:(458,722),
state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

Tecla Windows Derecha
KeyRelease event, serial 33, synthetic NO, window 0x5a00001,
root 0x4e, subw 0x0, time 18549693, (476,398), root:(488,494),
state 0x40, keycode 134 (keysym 0xffec, Super_R), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

Con "xmodmap" remapeamos el valor de la tecla. He puesto f en las dos teclas win, de esta manera este teclado ya puede escribir la letra "f" cuando pulsemos la tecla "Super"

xmodmap -e 'keycode 133 = f'
xmodmap -e 'keycode 134 = f'

Esto demuestra que con imaginación se pueden arreglar muchas cosas. Por supuesto se podría remapear el teclado entero, de manera que al pulsar una tecla salga un carácter diferente. Seguro que a algún bromista se le está ocurriendo hacer algo con esta idea. No me hago responsable.

1 comentario:

  1. ¿Cual es el key code de la tecla alt y como se remapea para que funcione bien? Mi problema es que el PC no reconoce la tecla alt de mi teclado como tal sino como mod5 en unos casos y ISO_level3_shift en otros.
    ¿Que puedo hacer? Gracias

    ResponderEliminar