Dándole un mejor uso a la tecla Bloq Mayús en Linux
In English  

¿Qué tan frecuentemente utilizamos la tecla Bloq Mayús (Caps Lock) en realidad?, Esta es una de las teclas mejor posicionadas en nuestro teclado, ya que se encuentra junto a la tecla A, sin embargo, en este espacio tenemos esta tecla Bloq Mayús que rara vez utilizamos. Para los que escriben sin ver el teclado es un espacio aún más importante, ya que solo basta un pequeño movimiento de nuestro meñique izquierdo para presionarla. Estoy seguro que hay gente que la utiliza todos los días, pero según tengo entendido es una minoría.

Pero esto puede ser cambiado fácilmente en Linux. Y créeme que no lamentarás el cambio una vez que te hayas acostumbrado a el. Para alguien que utiliza Vim no cabe duda de que hacer con esta tecla, podemos intercambiarla por la tecla Escape, o convertirla en una segunda tecla Escape, aunque yo personalmente no quise perder la funcionalidad así que solo la intercambié. Otros posibles usos son convertirla en otra tecla de Retroceso, o en otra tecla Control, podemos incluso darle la funcionalidad de una tecla multimedia.

KDE y Gnome nos permiten cambiar el comportamiento de la tecla Bloq Mayús modificando la configuración del teclado. Pero para cualquier entorno de escritorio, como Fluxbox y por supuesto los mismo KDE y Gnome, esto puede ser ajustado definiendo la nueva funcionalidad en un archivo de texto y pasándoselo a xmodmap.

Temas
Cambiar o intercambiar la funcionalidad de la tecla Bloq Mayús en Gnome
Cambiar o intercambiar la funcionalidad de la tecla Bloq Mayús en KDE
Cambiar o intercambiar la funcionalidad de la tecla Bloq Mayús con xmodmap
Ejecutando el script cuando Fluxbox, KDE y X comiencen
Regresarle la funcionalidad original a teclas con xmodmap

Cambiar o intercambiar la funcionalidad de la tecla Bloq Mayús en Gnome

Para cambiar la funcionalidad de la tecla Bloq Mayús en Gnome, ve a Sistema > Preferencias > Teclado. Entonces, en la pestaña Distribuciones, haz click en el botón Opciones, ahí verás una sección Comportamiento de la tecla Bloq Mayús.

Una captura de pantalla de el diálogo de preferencias del teclado en Gnome

Una captura de pantalla de el cuadro de diálogo de opciones de distribución del teclado en Gnome

Algunas opciones útiles son:

  • Hacer que Bloq Mayús sea otra tecla Esc
  • Hacer que Bloq Mayús sea otra tecla Retroceso
  • Intercambiar las teclas Esc y Bloq Mayús

Cambiar o intercambiar la funcionalidad de la tecla Bloq Mayús en KDE

Para cambiar la funcionalidad de la tecla Bloq Mayús en KDE, ve a Sistema > Preferencias del Sistema > Dispositivos de entrada. Entonces, estando seleccionada la sección de Teclado, has click en la pestaña Avanzado, y ahí veras la sección Comportamiento de la tecla Bloq Mayús

Una captura de pantalla de el díalogo de preferencias avanzadas del teclado en KDE

De nuevo, algunas opciones útiles son:

  • Hacer que Bloq Mayús sea otra tecla Esc
  • Hacer que Bloq Mayús sea otra tecla Retroceso
  • Intercambiar las teclas Esc y Bloq Mayús

Cambiar o intercambiar la funcionalidad de la tecla Bloq Mayús con xmodmap

Ahora, para cambiar esta configuración en cualquier entorno de escritorio, algo que hago para Fluxbox, ya que es otro de los entornos de escritorio que utilizo, podemos utilizar xmodmap.

Para remapear esta tecla utilizando xmodmap, necesitamos crear un archivo de texto llamado .Xmodmap (aunque puedes llamarlo como quieras):

touch ~/.Xmodmap

Entonces podemos utilizar ya sea gedit en Gnome
gedit ~/.Xmodmap
o Kate en KDE
kate ~/.Xmodmap
o en cualquier otro deditor, como Vim.

Con xmodmap podemos redefinir la funcionalidad de una tecla utilizando una expresión keysym. Esto traducirá un código de el teclado, a una expresión de keycode (código de tecla), o en términos más simples, esto hará que una tecla se comporte como otra.

Los códigos de tecla que se le dan a keysym es como hacemos referencia a la funcionalidad de la tecla, por ejemplo, Caps_Lock (Bloq Mayús), Control_L (Control izquierdo), Meta_L, Escape, BackSpace (retroceso) o las teclas multimedia como XF86AudioMute para silenciar el audio. Hay una base de datos con todas las posibles expresiones de teclas en un archivo llamado XKeysymDB, este archivo usualmente se encuentra en /usr/share/X11/XKeysymDB. Adicionalmente, algunas teclas son consideradas modificadoras, como la tecla Control, la tecla Shift, y por supuesto la tecla Bloq Mayús. Esto es por que estas teclas son siempre son utilizadas en combinación con otras teclas y no tienen una función en específico por si mismas. Podemos remover y agregar teclas modificadoras utilizando remove Shift/Lock/Control y add Shift/Lock/Control. En este archivo, las lineas que comienzan con ! son consideradas comentarios. Esta explicación se volverá más clara al ver el ejemplo.

Todas las expresiones keysym son consideradas antes de realizar los cambios, así que xmodmap nos informará de cualquier error. El mismo keysym puede ser aplicado a diferentes teclas, la expresión es ejecutada para cada tecla. La expresión remove es evaluada conforme es encontrada, así que no debes preocuparte sobre la designación de teclas cuando estás removiendo un modificador. Las expresiones add, por otro lado, son consideradas hasta el final, una ves que todas las designaciones de teclas han sido ejecutadas.

En este primer ejemplo, donde intercambio las teclas Escape y Bloq Mayús, nota como remuevo el bloqueo de Bloq Mayús antes que nada, reasigno las teclas, y finalmente vuelvo a agregar el bloqueo a Bloq Mayús. Para cuando la expresión add es ejecutada, la tecla física de Escape ya está trabajando como la tecla de Bloq Mayús, por lo tanto, utilizo add Lock = Caps_Lock y la tecla física de Escape gana la funcionalidad de Bloq Mayús. Podría utilizar esta expresión en la primera línea y funcionaría bien, sin embargo, pienso que es más entendible tenerla como última línea.

!Intercambiar Bloq Mayus con Escape
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock

Algunos otros ejemplos son:

!Convertir Bloq Mayus en una segunda tecla Escape
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

!Convertir Bloq Mayus en usa segunda tecla de retroceso
remove Lock = Caps_Lock
keysym Caps_Lock = BackSpace

!Intercambiar Bloq Mayus con la tecla Control izquierda
remove Lock = Caps_Lock
remove Control = Control_L
keysym Caps_Lock = Control_L
keysym Control_L = Caps_Lock
add Lock = Caps_Lock
add Control = Control_L

!Convertir Bloq Mayus en otra tecla Control
remove Lock = Caps_Lock
add Control = Caps_Lock

Incluso podemos agregar algo de funcionalidad extra, por ejemplo, si queremos convertir Bloq Mayús en una tecla para silenciar el audio (siempre y cuando nuestro entorno de escritorio soporte esto), podemos usar:

!Convertir Bloq Mayus en una tecla para silenciar el audio
remove Lock = Caps_Lock
keysym Caps_Lock = XF86AudioMute

Si algo sale mal en tu configuración, y, digamos, pierdes tu tecla Control, en lo último de esta publicación cubro como regresar la funcionalidad de las teclas, y, por supuesto, puedes borrar este archivo y reiniciar X o la computadora, pero esto no debe ser necesario. Una vez más, para una lista de todas las teclas, podemos revisar XKeysymDB usualmente localizado en /usr/share/X11/XKeysymDB.

Tras esto necesitamos ejecutar lo siguiente para aplicar los cambios en esta sesión:

xmodmap ~/.Xmodmap

Es de notar el hecho de que podemos ejecutar estas expresiones sin la necesidad de un archivo, lo que por supuesto no nos servirá para el propósito de hacer este cambio permanente. Podemos utilizar el parámetro -e en xmodmap, seguido por la expresión encerrada en comillas dobles.

xmodmap -e "keysym Escape = Caps_Lock"

Ejecutando el script cuando Fluxbox, KDE y X comiencen

En Fluxbox tenemos el archivo startup localizado en ~/.fluxbox/startup, solo necesitamos editar este archivo y agregar el comando previo, xmodmap ~/.Xmodmap al archivo. Podría ya tener un comentario indicándonos donde agregar el comando (# Change you keymap), pero si no lo tiene, podemos poner el comando en una línea entre #!/bin/sh y exec fluxbox

Para hacer que el cambio sea realizado cuando KDE o X comiencen, necesitamos crear un script, que solo es un archivo de texto:

touch ~/remapearteclas.sh

Dentro agregamos las siguientes líneas:

#!/bin/sh
xmodmap ~/.Xmodmap

Entonces le damos privilegios de ejecución:

chmod u+x ~/.remapearteclas.sh

Ahora podemos agregarlo a la carpeta de auto-arranque de KDE localizado en ~/.kde/Autostart si queremos que sea ejecutado cuando KDE comience:

mv remapearteclas.sh ~/.kde/Autostart/remapearteclas.sh

O podemos colocarlo en ~/.config/autostart/ para que corra cuando comience X:

mv remapearteclas.sh ~/.config/autostart/remapearteclas.sh

Regresarle la funcionalidad original a teclas con xmodmap

Cuando utilizamos keysym, efectivamente estamos convirtiendo una tecla en otra, y cada vez que utilicemos dicha tecla como parámetro de keysym, estaremos utilizando cualquier equivalencia que definimos previamente. Así que, si convertimos Bloq Mayús en otra tecla de Escape, no podemos simplemente utilizar algo como Caps_Lock = [algo] en comandos subsecuentes, por que la tecla Bloq Mayús ya so se encuentra definida, y si utilizamos Escape = Caps_Lock estaríamos convirtiendo ambas teclas físicas en Bloq Mayús.

Para regresarle a una tecla su funcionalidad normal, necesitamos utilizar keycode con xmodmap, y necesitamos el código de la tecla a la que queremos devolverle su funcionalidad previa. Así que, digamos que Bloq Mayús es una segunda tecla de Escape, el primer paso es obtener el código de la tecla física, podemos hacer esto con el comando xev.

Necesitamos abrir una terminal y ejecutar xev, veremos una pequeña ventana abrirse, esta ventana reportará en la terminal cualquier evento de X que ocurra, como el presionar teclas. Por lo tanto, teniendo esta ventana seleccionada, y la terminal desde la que la abrimos visible, presionamos Bloq Mayús y veremos algo como esto:

KeyPress event, serial 33, synthetic NO, window 0x6200001,root 0x1ad, subw 0x0, time 82765714, (426,194), root:(428,217),state 0x0, keycode 66 (keysym 0xff1b, Escape), same_screen YES,XLookupString gives 1 bytes: (1b) "XmbLookupString gives 1 bytes: (1b) "XFilterEvent returns: FalseKeyRelease event, serial 33, synthetic NO, window 0x6200001,root 0x1ad, subw 0x0, time 82765801, (524,192), root:(526,215),state 0x0, keycode 66 (keysym 0xff1b, Escape), same_screen YES,XLookupString gives 1 bytes: (1b) "XFilterEvent returns: False

La parte importante aquí es la que dice "keycode", en este caso es 66. Podemos utilizar este código de tecla para restaurar la funcionalidad de una tecla. Si, por ejemplo, convertimos la tecla Bloq Mayús en una segunda tecla Escape, podemos agregar esto a un archivo:

keycode 66 = Caps_Lock
add Lock = Caps_Lock

Entonces le pasamos el nombre de este archivo como parámetro a xmodmap, y la funcionalidad de la tecla debe ser restaurada.

El uso de xmodmap así como el mapeo de el teclado es un tema algo amplio para tratarlo todo en una sola publicación, espero poder ampliar esto, o encontrar una mejor manera de explicar algunos de los conceptos, así como crear en el futuro algo más sobre este tema. Si algo no quedó claro o si hay alguna duda favor de enviarla a contacto@jveweb.net, no muerdo.

En otra nota, este no es ninguno de los temas que quería publicar este fin de semana, pero uno necesita más imágenes y el otro más pruebas.