Cómo intercambiar el funcionamiento de dos teclas especiales del teclado en #Linux

Ya sea porque tienes una tecla de tu teclado que no funciona o porque quieres cambiar el comportamiento de dos teclas. Veamos cómo «remapear» dos teclas especiales en GNU/Linux

Mi portátil ya tiene unos 7 años, y recientemente le he ampliado la memoria de 4Gb a 8Gb (cosa que tendría que haber hecho hace tiempo) pero ya sufre de ciertos achaques (como el dueño).

Le tuve que reparar el cargador, porque falseaba el cable, la batería ya dura bastante poco, tiene rota una bisagra, y ahora de manera esporádica fallan ciertas teclas.

Lo he limpiado y no están sucias, por lo que supongo que será cosa eléctrica, pero no me decido a abrirlo para ver si lo puedo solucionar. Mientras tanto voy tirando con un teclado externo por USB o un teclado virtual en la pantalla.

Me fallan las teclas Esc, 1, Tab, a. Teclas que utilizo bastante a diferencia del Shift izquierdo, o la tecla de Bloqueo de Mayúsculas (que sinceramente no creo haberla utilizado nunca).

Así que pensé que podía «remapear» la tecla Esc por la tecla Bloqueo de Mayúsculas y la tecla Tab por el Shift Izquierdo. Veamos cómo poder intercambiar el funcionamiento de esas teclas especiales en GNU/Linux.

Para hacer esto, deberemos editar un archivo del sistema, por lo que cuidado al hacerlo y antes de nada, vamos a crear una copia del archivo para poder restaurarla si fuera necesario. Ejecutamos:

sudo cp /usr/share/X11/xkb/symbols/pc /usr/share/X11/xkb/symbols/pc.bk

Hecho esto editamos con Vim (o tu editor preferido) dicho archivo:

sudo vim /usr/share/X11/xkb/symbols/pc

La parte inicial de mi archivo es la siguiente (el archivo es más largo, pero pego aquí esta parte, que es en la que he realizado las modificaciones):

default partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

key <ESC> { [ Escape ] };

// The extra key on many European keyboards:
key <LSGT> { [ less, greater, bar, brokenbar ] };

// The following keys are common to all layouts.
key <BKSL> { [ backslash, bar ] };
key <SPCE> { [ space ] };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> { [ BackSpace, BackSpace ] };

key <TAB> { [ Tab, ISO_Left_Tab ] };
key <RTRN> { [ Return ] };

key <CAPS> { [ Caps_Lock ] };
key <NMLK> { [ Num_Lock ] };

key <LFSH> { [ Shift_L ] };
key <LCTL> { [ Control_L ] };
key <LWIN> { [ Super_L ] };

key <RTSH> { [ Shift_R ] };
key <RCTL> { [ Control_R ] };
key <RWIN> { [ Super_R ] };
key <MENU> { [ Menu ] };

Voy a intercambiar las teclas de Escape por la de Bloqueo Mayúsculas (Caps_Lock) y la Tabulador por la tecla Shift izquierda.

Por lo que después de la modificación mi archivo queda de la siguiente manera. Resalto en rojo el texto cambiado:

default partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

key <ESC> { [ Caps_Lock ] };

// The extra key on many European keyboards:
key <LSGT> { [ less, greater, bar, brokenbar ] };

// The following keys are common to all layouts.
key <BKSL> { [ backslash, bar ] };
key <SPCE> { [ space ] };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> { [ BackSpace, BackSpace ] };

key <TAB> { [ Shift_L ] };
key <RTRN> { [ Return ] };

key <CAPS> { [ Escape ] };
key <NMLK> { [ Num_Lock ] };

key <LFSH> { [ Tab, ISO_Left_Tab ] };
key <LCTL> { [ Control_L ] };
key <LWIN> { [ Super_L ] };

key <RTSH> { [ Shift_R ] };
key <RCTL> { [ Control_R ] };
key <RWIN> { [ Super_R ] };
key <MENU> { [ Menu ] };

Guardamos el texto y salimos del editor. Ahora deberemos reiniciar nuestro equipo (no sé si sirve solo con cerrar la sesión).

Al volver a nuestra sesión, podremos comprobar cómo se ha efectuado el cambio de estas dos teclas.

Si algo no ha salido bien, podremos volver atrás, restaurando la copia .bk del archivo original que hemos creado al inicio.

Espero que os haya servido de utilidad. También de esta manera en Vim tendremos la tecla Esc, para cambiar de modos del editor, más cerca de la «zona caliente» de nuestro teclado y no deberemos desplazarnos hasta la esquina superior izquierda para presionarla.

¿Utilizas algún truco similar a la hora de «mapear» tu teclado? Compártelo en los comentarios…

Enlaces de interés

2 comentarios sobre “Cómo intercambiar el funcionamiento de dos teclas especiales del teclado en #Linux

  1. He tenido que recurrir a bash_history para recordar algunos comandos que usé en el pasado para mapear algunas teclas en DWM:

    dumpkeys
    xmodmap
    xev

    xmodmap es uno de los más usados en Linux por los usuarios para mapear las teclas.

    xmodmap -pke (para obtener los KeyCodes), o xmodmap -pke | grep Caps_Lock (si se el KeySym). El resultado: keycode 66 = Caps_Lock NoSymbol Caps_Lock

    Se puede filtrar algunos términos, aunque la salida de xmodmap, en si, no es tan engorrosa como para filtrar:

    xmodmap -pke | grep Escape | awk '{print $1, $2, $4}' el resultado: keycode 9 Escape

    xmodmap -pke | grep Caps_Lock | awk '{print $1, $2, $4}' el resultado: keycode 66 Caps_Lock

    Mapear:

    xmodmap -e "keycode 66 = Escape"

    a la inversa:

    xmodmap -e "keycode 9 = Caps_Lock"

    con el comando xev obtengo los valores oprimiendo las teclas (me ha sido muy útil, me gusta este comando).

    Interactivo:

    Es ideal para los que no quieren usar la consola (no lo he usado)

    xkeycaps

    El método tuyo parece ser más amigable. Gracias por compartir esta idea.

    Saludos.

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.