Xorg (Español)/Keyboard configuration (Español)
Xorg utiliza X keyboard extension (XKB) para gestionar la distribución del teclado. Por otra parte, xmodmap se puede utilizar para acceder al mapa del teclado interno directamente. Por lo general, no se recomienda el uso de xmodmap, excepto, tal vez, para tareas simples.
En este artículo se describe la configuración de bajo nivel usando XKB, que es eficaz en la mayoría de los casos, aunque algunos entornos de escritorios como GNOME (Español) la sobrescriben con su propia configuración.
Visualizar la configuración del teclado
Se puede utilizar la siguiente orden para ver la configuración vigente de XKB :
$ setxkbmap -print -verbose 10
Setting verbose level to 10 locale is C Trying to load rules file ./rules/evdev... Trying to load rules file /usr/share/X11/xkb/rules/evdev... Success. Applied rules from evdev: rules: evdev model: pc104 layout: es,us variant: , options: keypad:pointerkeys,terminate:ctrl_alt_bksp Trying to build keymap using the following components: keycodes: evdev+aliases(qwerty) types: complete compat: complete symbols: pc+es+us:2+inet(evdev)+terminate(ctrl_alt_bksp)+keypad(pointerkeys) geometry: pc(pc104) xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+es+us:2+inet(evdev)+terminate(ctrl_alt_bksp)+keypad(pointerkeys)" }; xkb_geometry { include "pc(pc104)" }; };
Utilidades de terceros
Hay algunas utilidades «no oficiales» que permiten imprimir información específica acerca de la distribución del teclado que se está utilizando.
- xkb-switch-gitAUR:
$ xkb-switch
us
$ xkblayout-state print "%s"
de
Configurar la distribución del teclado
La distribución del teclado en Xorg puede configurarse de múltiples maneras. He aquí una explicación de las opciones usadas :
-
XkbModel
selecciona el modelo de teclado. No tiene mucha relevancia, salvo que se cuente con un teclado con teclas extras. Los parámetros seguros sonpc104
opc105
. Pero para algunos portátiles con teclas adicionales, la simple definición del modelo adecuado puede hacer que funcionen dichas teclas. -
XkbLayout
selecciona la distribución del teclado. Se pueden especificar varias distribuciones en una lista separada por comas, para el caso, por ejemplo, de que desee cambiar rápidamente entre tales distribuciones. -
XkbVariant
selecciona una variante de la distribución específica. Por ejemplo, la variante, por defecto, del tecladosk
esqwertz
, pero se pueden especificar otras distintas manualmente tal comoqwerty
, etc.
- Advertencia: Se deben especificar tantas variantes como número de distribuciones de teclados haya especificado. Si desea utilizar la variante por defecto de dichos teclados, especifique como «xkbvariant» una cadena vacía (la coma debe permanecer). Por ejemplo, si se tiene la distribución de teclado
us
como primario que queremos usar con la variante predeterminada y una distribución de teclado secundariaus
que queremos utilizar con la variantedvorak
, especifiqueus,us
comoXkbLayout
y,dvorak
comoXkbVariant
.
-
XkbOptions
contiene algunas opciones adicionales. Se utiliza para especificar la forma de alternar, el LED de notificación, el modo de compose, etc.
El nombre de la distribución, [layout], es normalmente un código de dos letras por país. Puede ver una lista completa de los modelos de teclado, distribuciones, variantes y opciones, con su correspondiente descripción, abriendo /usr/share/X11/xkb/rules/base.lst
. Del mismo modo, pueden usarse las órdenes de abajo para ver los listados sin más:
localectl list-x11-keymap-models
localectl list-x11-keymap-layouts
localectl list-x11-keymap-variants [layout]
localectl list-x11-keymap-options
Los ejemplos de las secciones siguientes producirán el mismo resultado, esto es, se definirá el modelo pc104
, es
como teclado primario, us
como teclado secundario, las variantes deadtilde
para el teclado es
y dvorak
para us
, y la combinación de teclas Alt+Mayús
para alternar los teclados.
Utilizar setxkbmap
La herramienta setxkbmap establece la distribución del teclado para un servidor X activo y mantiene la configuración solo durante la sesión en curso. No obstante, puede utilizarse xinitrc para hacer que la configuración se mantenga después de los reinicios. Esto último es útil para establecer una configuración específica para nuestra sesión de usuario distinta de la establecida para todo el sistema por los archivos de configuración de X.
Su uso es como sigue:
$ setxkbmap [-model modelo_xkb] [-layout distribución_xkb] [-variant variantes_xkb] [-option opciones_xkb]
No es necesario especificar todas las opciones, por ejemplo, se puede cambiar solo una distribución:
$ setxkbmap -layout distribución_xkb
Véase setxkbmap(1) para conocer un listado completo de los argumentos que se pueden pasar a la línea de órdenes.
Por ejemplo:
$ setxkbmap -model pc104 -layout es,us -variant deadtilde,dvorak -option grp:alt_shift_toggle
Utilizar los archivos de configuración de X
La sintaxis de los archivos de configuración de X se explica en Xorg#Configuration. Este método crea la configuración para todo el sistema, que se mantiene después de los reinicios.
He aquí un ejemplo:
/etc/X11/xorg.conf.d/10-keyboard.conf
Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "es,us" Option "XkbModel" "pc104" Option "XkbVariant" "deadtilde,dvorak" Option "XkbOptions" "grp:alt_shift_toggle" EndSection
Utilizar localectl
Por conveniencia, la herramienta localectl puede ser utilizada en lugar de editar manualmente el archivo de configuración de X. Se guardará la configuración en etc/X11/xorg.conf.d/00-keyboard.conf
. Este archivo no debe modificarse manualmente, porque localectl sobrescribirá los cambios en el siguiente inicio.
Su uso es como sigue:
$ localectl set-x11-keymap [distribución] [modelo] [variantes] [opciones]
La siguiente órden creará un archivo /etc/X11/xorg.conf.d/00-keyboard.conf
con el mismo contenido que el del ejemplo de arriba:
$ localectl set-x11-keymap es,us pc104 deadtilde,dvorak grp:alt_shift_toggle
Opciones XKB usadas frecuentemente
Alternar entre distintas distribuciones de teclado
Para ser capaz de cambiar fácilmente la distribución del teclado, primero especifique varias distribuciones entre las que desea alternar (la primera de ellas será la predeterminada). A continuación, especifique una tecla (o combinación de teclas), que utilizará para alternar las distribuciones. Por ejemplo, para cambiar entre una distribución US y otra Sueca, utilizando la tecla Bloq Mayús
, use us,se
como un argumento de XkbLayout
y grp:caps_toggle
como un argumento de XkbOptions
.
Puede utilizar otras combinaciones de teclas distintas de Bloq Mayús
, las cuales se enumeran en /usr/share/X11/xkb/rules/base.lst
, que son las que comienzan con grp:
y terminan en _toggle
. Para obtener la lista completa de opciones disponibles, ejecute la orden siguiente:
$ grep "grp:.*_toggle" /usr/share/X11/xkb/rules/base.lst
Terminar Xorg con Ctrl+Alt+Retroceso
Por defecto, la combinación de teclas Ctrl+Alt+Retroceso
está desactivada. Puede activarla haciendo pasar el argumento terminate:ctrl_alt_bksp
a XkbOptions
.
Intercambiar Bloq Mayús con Control Izquierdo
Para cambiar Bloq Mayús con la tecla Control izquierda, añada ctrl:swapcaps
a XkbOptions
. Ejecute la orden siguiente para ver opciones similares, junto con sus descripciones:
$ grep -E "(ctrl|caps):" /usr/share/X11/xkb/rules/base.lst
mouse keys
Mouse keys está desactivada por defecto y tiene que ser activada manualmente haciendo pasar el argumento keypad:pointerkeys
a XkbOptions
. Esto hará que al teclear Mayús+BloqNum
alternemos entre el teclado numérico y mousekeys.
Configurar tecla compose
La tecla compose, cuando se pulsa en secuencia con otras teclas, produce un carácter Unicode. Por ejemplo, en la mayoría de configuraciones pulsando tecla_compose ' e
produce é
. Esto es especialmente útil si se necesita escribir en un idioma diferente a aquel para el cual la distribución del teclado fue diseñado (como escribir en francés, italiano y alemán en un teclado americano).
Por ejemplo, para que la tecla Alt
derecha funcione como una tecla compose, pase el argumento compose:ralt
a XkbOptions
.
Se pueden utilizar otras teclas como teclas compose, su listado figura en /usr/share/X11/xkb/rules/base.lst
y comienzan con compose:
. Para obtener la lista completa de las opciones disponibles, ejecute la orden siguiente :
$ grep "compose:" /usr/share/X11/xkb/rules/base.lst
Combinaciones de teclas
Las combinaciones predeterminadas para las teclas compose dependen de la configuración regional y se almacenan en /usr/share/X11/locale/locale_usado/Compose
, donde locale_usado
es, por ejemplo, es_ES.UTF-8
.
Puede definir sus propias combinaciones de la tecla compose copiando el archivo predeterminado a ~/.XCompose
y modificándolo. La tecla compose funciona con cualquiera de los miles de caracteres Unicode válidos, incluyendo aquellos fuera del Basic Multilingual Plane.
No obstante lo anterior, GTK no utiliza XIM de forma predeterminada, por lo que no lee las teclas de ~/.XCompose
. Esto se puede solucionar obligando a GTK a utilizar XIM añadiendo export GTK_IM_MODULE=xim
y/o export XMODIFIERS="@im=none"
a ~/.xprofile
.
Otros ajustes
Ajustar el retardo y la velocidad de typematic
La opción typematic delay («retardo para la automatización de escritura») indica la cantidad de tiempo (normalmente en milisegundos) que una tecla necesita ser presionada para que el proceso de repetición comience. Después que el proceso de repetición ha sido activado, el carácter se repite con una frecuencia determinada (por lo general en Hz dado) especificado por la opción typematic rate («velocidad de la automatización de escritura»). Estos valores se pueden cambiar usando la orden xset:
$ xset r rate delay [rate]
Por ejemplo, para establecer una cadencia typematic de 200ms y una tasa typematic de 30Hz, utilice la siguiente orden (use xinitrc para mantener permanente la configuración):
$ xset r rate 200 30
Al emitir la orden sin especificar el retardo y la tasa, se restablecerá typematic a sus respectivos valores por defecto: un retardo de 660ms y una frecuencia de 25Hz:
$ xset r rate