Mapea tus teclas con xmodmap y setxkbmap

No sé ustedes, pero la verdad es que la tecla Caps Lock es probablemente la tecla más inútil del teclado, no sólo inútil, sino que además es grande y está en una buena posición. ¿Se han preguntado alguna vez si hay forma de aprovecharla en algo mejor?.

La verdad es que sí hay formas —y hartas— pero en este artículo me referiré a dos: xmodmap y setxkbmap. Ambas parte de los paquetes de Xorg.

Ambas soluciones sólo funcionan en la X, si quieres aplicar estos cambios en una tty, tienes que hacer algo similar a lo que explican en el wiki de Arch Linux sobre el KEYMAP.

setxkbmap (o directamente en tu xorg.conf)

Esta es quizá la forma más simple si quieres un cambio bastante común: utilizar el Caps Lock como Control; para ello basta ejecutar:

setxkbmap -option ctrl:nocaps
# si quieren intercambiar las teclas
setxkbmap -option ctrl:swapcaps

Esto lo pueden agregar como un comando en su archivo .profile, o del entorno de escritorio respectivo.

Otra alternativa similar es agregar la opción a su xorg.conf (no tengo idea las otras distros, pero al menos en Arch Linux hace tiempo los archivos a configurar van en una carpeta llamada xorg.conf.d)

[text]
#/etc/X11/xorg.conf.d/01-keyboard.conf

Section "InputClass"
Identifier          "Keyboard"
MatchIsKeyboard     "yes"
Option              "XkbOptions"    "ctrl:nocaps"
#Option "XkbOptions" "ctrl:swapcaps"
EndSection
[/text]

Si quieren ver más opciones revisen el archivo /usr/share/X11/xkb/rules/*.lst (base.lst, tiene las anteriores por ejemplo)

xmodmap (xorg-xmodmap)

Esta forma es un poco más compleja, pero cuenta con la ventaja de ser mucho más completa y permitir un montón de alternativas y configuraciones mucho más complejas, por ejemplo, para lograr lo anterior tendríamos que hacer algo más o menos así:

xmodmap -e 'remove Lock = Caps_Lock'
xmodmap -e 'keysym Caps_Lock = Control_L'
xmodmap -e 'add Control = Control_L'
# es probable que si utilizaste lo anterior (setxkbmap) estos códigos no funcionen mostrando errores en relación a que los keycodes/keysym no corresponden (lo cual es bastante obvio si lo piensan bien)

No todos los sistemas utilizan los mismos «keysym», para comprobar los que corresponden a tu equipo puedes utilizar xev que al presionar la tecla te muestra la keycode/keysym.

Otra forma un poco más elegante (y más definitiva) es crear un archivo .xmodmap en el directorio home.

[text]
#~/.xmodmap

remove Lock = Caps_Lock
keysym Caps_Lock = Control_L
add Control = Control_L
[/text]

Y luego ejecutar:

xmodmap ~/.xmodmap

Si quieres que esto sea aún más automatizado, tienes que buscar en los scripts de Xorg cuál es el archivo que las X ejecutan. En el caso de Arch Linux es ~/.Xmodmap, definido en /etc/X11/xinit/xinitrc.

Las posibilidades que otorga xmodmap son ilimitadas y ayudándose con xev y la manpage no debería ser tan difícil dar con algo más complejo (los «!» son comentarios):

[text]
#~/.Xmodmap

! convert Caps-lock into Control
remove Lock = Caps_Lock
keysym Caps_Lock = Control_L
add Control = Control_L

! use the right Windows key as Caps-Lock
keysym Super_R = Caps_Lock
add Lock = Caps_Lock
[/text]

La otra forma de asignar teclas es con los keycodes que refieren a la tecla (física) específicamente y no el «alias» que podría ser keysym[1]. Dependiendo del hardware, en mi caso por ejemplo Caps Lock es el 66:

KeyRelease event, serial 57, synthetic NO, window 0x3e00001,
root 0xae, subw 0x0, time 11342886, (983,452), root:(985,474),
state 0x15, keycode 66 (keysym 0xffe3, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

Así, si quisiéramos asignar la tecla de retroceso a la de Caps Lock (a là colemak):

xmodmap -e 'keycode 66 = BackSpace'

Por último si quieren ver los mappings que están utilizándose actualmente ejecuta:

xmodmap -pke

[1]: Los keysym están definidos en el archivo header <X11/keysymdef.h> (omitiendo el prefijo xK_). En Arch Linux eso corresponde a /usr/include/X11/keysymdef.h.

6 comentarios en “Mapea tus teclas con xmodmap y setxkbmap

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: No sé ustedes, pero la verdad es que la tecla Caps Lock es probablemente la tecla más inútil del teclado, no sólo inútil, sino que además es grande y está en una buena posición. ¿Se han preguntado alguna vez si hay f……

    Me gusta

Deja un comentario

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