Modificar Teclados en Linux
La Idea
El propósito de esta entrada es ver cómo asignar distintos significados a las teclas del teclado bajo sistemas Linux. Con esta técnica es posible lograr cosas como:
- identificar y asignar símbolos especiales a cada tecla física del teclado.
- asignar funciones al gestor de ventanas ante el uso de ciertas teclas modificadoras.
- Dar usos personalizados a teclas que no tienen mucho uso en Linux, como las “teclas Windows” y el teclado numérico.
- etc.
En Linux, específicamente bajo X.org, a cada tecla física del teclado, se le asigna un conjunto de símbolos llamados en inglés keysyms. Estos keysyms son “nombres comunes” que son interpretados por todas las aplicaciones, como por ejemplo: “a”, “A”, “Enter”, “Tab”, “Shift_L” o “F7”.
La configuración de qué símbolos están asociados a cada tecla depende de la distribución de teclado y de las banderas modificadoras disponibles, siendo las más comunes Shift y Control, y existiendo otras como “Meta”, “Super” e “Hyper”.
La aplicación responsable de asignar esos símbolos a cada tecla e informar los cambios es xmodmap, por tanto, modificando las opciones generadas por este programa, es posible cambiar los símbolos asignados a cada tecla física. Estos símbolos se guardan bajo el archivo $HOME/.Xmodmap
. Una interface gráfica para desarrollar este mismo trabajo existe, el programa de Jamie Zawinski llamado XKeyCaps. Está disponible en los repositorios de Ubuntu.
Si podemos asignar los keysyms o símbolos de teclado que deseamos, luego es cuestión de usar las opciones de atajos globales que incluya nuestro gestor de ventanas (Gnome, KDE, XFCE), para asignarles funciones de alto espectro (como ejecutar aplicaciones o enviar comandos), o podemos asignarles significados específicos dentro de las opciones de cada aplicación.
Prerequisitos
Los siguientes paquetes y aplicaciones deben estar instalados en el sistema antes de continuar:
- xmodmap, xev y xkb, que aparecen bajo estos nombres en la mayoría de los Gestores de Paquete.
- Para los usuarios de KDE, KDE 3.0 o superior, y SCIMd eshabilitado.
- Para los usuarios de XFCE, XFCE 4.4.0 o superior, y GTK 2.10 o superior para evitar un bug de Compose.
- Para los usuarios de GNome, GTK+ 2.4 o superior, recomendado 2.10 o superior para evitar un bug de Compose.
Los pasos a continuación asumen que se está utilizando el archivo .Xmodmap
directamente; los usuarios de XKeyCaps lo encontrarán fácil de utilizar y se explicarán los pasos más adelante.
Lo primero es obtener la configuración actual del teclado. Desde una consola gráfica ejecutar lo siguiente:
xmodmap -pke > $HOME/.Xmodmap.try
El archivo resultante tiene la estructura siguiente:
keycode 8 = keycode 9 = Escape Multi_key keycode 10 = 1 exclam bar brokenbar bar exclamdown keycode 11 = 2 quotedbl at oneeighth at oneeighth keycode 12 = 3 periodcentered numbersign sterling numbersign sterling keycode 13 = 4 dollar asciitilde dead_tilde asciitilde dollar keycode 14 = 5 percent onehalf threeeighths onehalf threeeighths keycode 15 = 6 ampersand notsign ampersand notsign fiveeighths keycode 16 = 7 slash braceleft seveneighths braceleft seveneighths keycode 17 = 8 parenleft bracketleft trademark bracketleft trademark keycode 18 = 9 parenright bracketright plusminus bracketright plusminus keycode 19 = 0 equal braceright degree braceright degree ... add mod1 = Alt_L add mod2 = Num_Lock add mod4 = Super_L add mod5 = Mode_switch
Modificando la Configuración de Teclado
Para modificar la configuración del teclado, solo debemos modificar a nuestro gusto el archivo generado anteriormente y luego recargarlo con xmodmap .Xmodmap.try
.
Dependiendo de lo que queramos hacer las estrategias son claramente diferentes.
Las Teclas Modificadoras
Linux dispone de varias teclas modificadoras, es decir teclas que cambian el significado de otras cuando se presionan en conjunto. Las más conocidas son shift
(Shift para levantar mayúsculas), alt
(para los menús), numlock
, capslock
y meta
(conocida de los fanáticos de Emacs). Hay otras como super
e hyper
, y cinco valores lógicos reservados llamados desde Mod1
a Mod5
. Son estos valores lógicos los que reciben significado especial en un archivo Xmodmap
.
En un archivo de configuración de Xmodmap lo primero que se hace es limpiar los significados de las modificadoras:
clear mod1 clear mod2 clear mod3 clear mod4 clear mod5
Y después les asignamos el significado que deseemos, el cual debe ser el conjunto de Keycodes que “levantan” la señal modificadora. De modo que otra tecla responda solo en conjunto con éstas. Aquí debes tomar nota que si escoges un keycode como modificadora, esa tecla no puede usarse para levantar un keysym de tecla normal, es decir: no puedes hacer como en Windows, que la “Tecla Windows” sola te abre el menú, pero como modificadora te abre el Explorer (<key>'Win'-e</key>), el escritorio (<key>Win-d</key>) o te bloquea la estación (<key>Win-l</key>).
Para asignar los significados se usa la sintaxis add modificador listado de keysyms
:
add mod1 = Alt_L add mod2 = Num_Lock add mod4 = Super_L add mod5 = Mode_switch
En este ejemplo, se usa “Alt Izquierdo” como el modificador 1, “Super Izquierdo” como el 4, y “Mode Switch” (a.k.a. “Alt-Gr”) como el 5. Si vamos a buscar estos keysyms a la tabla:
... keycode 34 = Alt_L keycode 71 = Super_L keycode 73 = Mode_switch Multi_key ...
Veremos que las teclas corresponden físicamente como sigue (por ejemplo):
- Alt Izquierdo a la izquierda de la Barra Espaciadora
- Super Izquierdo es la Tecla Windows Izquierdo
- Mode Switch es la tecla AltGr
una vez grabado entonces el .Xmodmap y puesto en acción, se activarán las modificadoras: Alt
funcionará con los menús, AltGr
con los símbolos de teclado y Super
puede asignarse con combinaciones en el Gestor de Ventanas (ej.: Super+X
para invocar a XKill).
En el ejemplo se ha visto que existe la señal (por poner un ejemplo) Alt_L
; similarmente existe Alt_R
que puede ser asignada físicamente al keycode de la tecla Alt Derecho. Es importante, para poder asignar correctamente las teclas modificadoras, que las combinaciones del mismo tipo (Alt_L
con Alt_R
, etc) deben aparecer en la misma línea y en ninguna otra.
Valores de keysyms disponibles
Para chequear los valores de keysyms disponibles puedes revisar este listado, o buscar la cabecera <tt>keysym.h</tt> en los archivos include de tu distribución. Esto puede requerir instalar algún paquete del gestor de paquetes llamado xorg-devel
o similar.
Algunos de los keysyms especiales más comunes los he reproducido en esta lista:
Keysym | Tecla 1) | Propósito |
---|---|---|
Enter | <key>Enter</key> | La función clásica de la tecla Enter. |
ISO_Left_Tab | <key>Shift-Tab</key> | Tabulación inversa (usualmente en interfaces gráficas, saltar al control anterior) |
Mode_switch | <key>AltGr</key> | Acceder a la segunda columna (grupo III y IV) de símbolos de cada tecla. |
Menu | Tecla <key>Menú</key> | En entornos gráficos, acceder al menú contextual. |
Alt_L , Alt_R | Teclas <key>Alt</key> | Modificador “ALT” (funciona solamente como modificador). |
Meta_L , Meta_R | Teclas <key>Win</key> | Modificador “META” (utilizado usualmente por Emacs). |
El formato de .Xmodmap
keycode X = key Shift+key L2+Key L2+Shift+Key L3+Key L3+Shift+Key ....
En otras palabras, una línea como la siguiente:
keycode 41 = f F Greek_phi Greek_PHI ordfeminine masculine
Es interpretada de la siguiente forma:
Tecla 41 (“f”) | Normal | Shift+ | Significado |
---|---|---|---|
Level 1 | f | F | Letras “f” minús y mayús, alfabeto latino |
Level 2 (“AltGr”) | φ | Φ | Letras “phi” minús y mayús, alfabeto griego clasico |
Level 3 (“ISO_Level3_Shift”) | ª | º | Símbolos demarcadores de género femenino y masculino |
El modificador AltGr funciona invocando el llamado “Grupo 2”, mientras que el modificador ISO_Level3_Shift, cuando está habilitado, actúa desplazando un grupo nuevo de caracteres a la tecla, es decir un nuevo Nivel, sustituyendo el primer y segundo grupos. Con este modificador trabajaremos más adelante.
En este punto ya estás capacitado para asigna caracteres especiales a cualquier combinación AltGr+tecla
, por ejemplo ya que tienes AltGr+e
= € (euro), ¿por qué no poner AltGr+y
= ¥ (yen)?
keycode 26 = e E EuroSign EuroSign keycode 29 = y Y yen yen
Cargando con la Sesión
Dependiendo del entorno gráfico utilizado, cambia la estrategia para cargar las nuevas reglas de xmodmap
al inicio. La forma más conveniente de hacer esto es agregar una llamada a Xmodmap en tu archivo de inicio del Servidor X (xinitrc
) de la forma siguiente:
xmodmap $HOME/.Xmodmap
La locación del archivo xinitrc
depende del gestor de escritorio que estés utilizando.
Otras formas, dependiendo del escritorio utilizado, son:
XFCE
- Editar el startup en
$HOME/.conig/xfce4/xinitrc
- Agregar la invocación
xmodmap $HOME/.Xmodmap
en un punto específico, antes de la llamada axfdesktop
.
GNome
- Actualizar las bibliotecas GTK+ a
2.8
o superior. - Editar el startup en
$HOME/.xinitrc
- Agregar la invocación
xmodmap $HOME/.Xmodmap
en un punto específico antes de la invocación degnome-panel
.
KDE
Fluxbox
Temas Relacionados
Fuentes
man xmodmap
man xkb
- Experimentación con el notebook de mi familia.
Progreso
<progrecss 50% caption=Progreso;/>