Keyboard Configuration in Xorg (Español)

From ArchWiki
Revision as of 13:06, 13 December 2013 by Pedro (Talk | contribs)

Jump to: navigation, search
Nota: Este artículo trata únicamente sobre la configuración básica, sin modificar los diseños, asignación de teclas extras, etc. Véase Extra Keyboard Keys para conocer más sobre estos temas avanzados.

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
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 son pc104 o pc105. 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 teclado sk es qwertz, pero se pueden especificar otras distintas manualmente tal como qwerty, 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 secundaria us que queremos utilizar con la variante dvorak, especifique us,us como XkbLayout y ,dvorak como XkbVariant.
  • 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 man 1 setxkbmap 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.

Sugerencia: XIM es muy antiguo, es posible que tenga más suerte con otros métodos de entrada: SCIM, uim, IBus etc. Véase Internationalization#Input methods in Xorg para conocer más detalles.

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