Como decía el otro día, el teclado de Sham –mi nuevo portátil– es un dolor. Es tan dolor que he aprovechado la excusa de no poder salir de casa para echarle paciencia y reordenarlo para que sea más usable. Por cierto, lo de no salir de casa no es broma, estamos teniendo un fin de semana con vientos de unos 55 km/h –un viento de 70 km/h levanta a cualquiera del suelo. En la escala de Beaufort tenemos ahora mismo lo que llaman gales –vendavales, según Babelfish.

Volviendo al teclado, mi objetivo es modificar el mapa de teclado para hacer el teclado de Sham lo más parecido posible al teclado de Scraps. Para empezar, lo que no me gusta del teclado de Sham es:

  • No tiene tecla Ctrl a la derecha y la echo mucho de menos
  • No tiene ninguna tecla para los símbolos < y > en el mapa español
  • La tecla de AltGr está demasiado lejos de la espaciadora, ¡la quiero al lado!
  • La tecla de ç –que necesito para }– está encima de una tecla Enter de fila única
  • No hay tecla a la izquierda del 1, la tecla º está justo debajo de la c

La primera búsqueda en Google (modify keyboard layout linux) lleva a un interesante tutorial para modificar la disposición del teclado, mostrando como ejemplo un teclado alemán QWERTZ con los caracteres diacríticos polacos (ĄĆĘŁŃÓŚŻŹ). Aunque esto no es lo que buscaba, al menos he podido recuperar los símbolos < y > –tan necesarios para escribir código, especialmente XHTML– a cambio de no tener los símbolos º y ª –que no uso nunca. Para ello no hace falta crear una disposición de teclado nueva, basta modificar el fichero /etc/X11/xkb/symbols/es y cambiar los símbolos para la tecla <TLDE>:

// key <TLDE> { [ masculine, ordfeminine, backslash, backslash ] };
key <TLDE> { [ less, greater, backslash, backslash ] };

Pero lo que yo quiero es cambiar las teclas de sitio para dejar el teclado de Sham lo más parecido posible al teclado de Scraps, -que tampoco es que me guste mucho pero al menos ya me había acostumbrado a él. Los cambios que necesito son:

Tecla actual Keycode Tecla deseada
Ins 106 Alt_R (AltGr)
Del 107 Ctrl_R
Alt_R (AltGr) 113 Del
Tilde 49 Less
Pause 110 Tilde

Esto se hace cambiando la traducción de los keycodes en el fichero /etc/X11/xkb/keycodes/xfree86 tal que así:

<RALT> = 106;
<LSGT> = 49;
<RCTL> = 107;
<TLDE> = 110;
<DELE> = 113;

Los keycodes de cada tecla se obtienen con la utilidad xev.

Al realizar este cambio ya no necesito cambiar la disposición de teclado, por lo que dejo el fichero /etc/X11/xkb/symbols/es, reinicio el servidor X y ¡voilà! :-)

Bueno, casi :-D La tecla Pause se niega a adoptar su nueva función, así que he modificado de nuevo la disposición del teclado en /etc/X11/xkb/symbols/es para sustituir la ç y la Ç por º y ª. Para la barra invertida (backslash) utilizaré AltGr+' y listo :-)

Sé que casi nadie leerá esto, pero es que sólo lo escribo para tenerlo apuntado para cuando se me olvide. Hacía meses que no escribía sobre algo técnico y ya lo echaba de menos. Por fin estoy volviendo en mí :-)