Linux console (Español)/Keyboard configuration (Español)
Los mapas de teclas (keymaps) para la consola virtual, las tipografías de consola y los mapas de consola son proporcionados por el paquete kbd (una dependencia de systemd), que también proporciona muchas herramientas de bajo nivel para administrar la consola virtual. Además, systemd también proporciona la herramienta localectl, que puede controlar tanto el sistema locale como la configuración de diseño del teclado tanto para la consola virtual como para Xorg.
Ver la configuración del teclado
Utilice localectl status
para ver las configuraciones actuales del teclado.
Mapas de teclado
Los archivos de mapa de teclas se almacenan en el árbol de directorio /usr/share/kbd/keymaps/
. Por lo general, un archivo de mapa de teclas corresponde a una distribución de teclado (la instrucción include
se puede utilizar para compartir partes comunes y un archivo de mapa de teclas puede contener múltiples diseños con alguna combinación de teclas utilizada para cambiarlas). Para más detalles véase keymaps(5).
Listar mapas de teclado
Las convenciones de nomenclatura de los mapas de teclado de la consola son algo arbitrarias, pero generalmente se basan en:
- Códigos de idioma: donde el código de idioma es el mismo que el código de país (p.e.
es
para Español, ofr
para Francés). - Códigos de pais: donde se utilizan variaciones del mismo idioma en diferentes países (p.e.
uk
para el inglés del Reino Unido, ous
para el inglés de los Estados Unidos); También se puede encontrar una lista de códigos de país en wikipedia:es:ISO 3166-1#Códigos oficialmente asignados. - Distribución de teclado: donde la distribución no está relacionada con un país o idioma en particular (p.e.
dvorak
para la distribución de teclado Dvorak).
Para obtener una lista de todos los mapas de teclados disponibles, utilice el comando:
$ localectl list-keymaps
Para buscar un mapa de teclas, utilice la orden siguiente, reemplazando término_de_búsqueda
con el código de su idioma, país o diseño:
$ localectl list-keymaps | grep -i término_de_búsqueda
Alternativamente, utilizando find:
$ find /usr/share/kbd/keymaps/ -type f
Loadkeys
Es posible establecer un mapa de teclas solo para la sesión actual. Esto es útil para probar diferentes mapas de teclado, resolver problemas, etc.
La herramienta loadkeys se utiliza para este fin, es utilizado internamente por systemd al cargar el mapa de teclas configurado en /etc/vconsole.conf
. Se puede utilizar de manera muy simple para este propósito:
# loadkeys mapa_de_teclado
Véase loadkeys(1) para más detalles.
Configuración persistente
Se puede establecer un mapa de teclas persistente en /etc/vconsole.conf
, que systemd lee al inicio. La variable KEYMAP
se utiliza para especificar el mapa de teclas. Si la variable está vacía o no está establecida, se utiliza como valor predeterminado el mapa de teclas us
. Véase vconsole.conf(5) para todas las opciones. Por ejemplo:
/etc/vconsole.conf
KEYMAP=es ...
Por conveniencia, localectl puede utilizarse para configurar el mapa de teclas de la consola. Cambiará la variable KEYMAP
en /etc/vconsole.conf
y también establecerá el mapa de teclas para la sesión actual:
$ localectl set-keymap --no-convert mapa_de_teclado
La opción --no-convert
puede utilizarse para evitar que localectl
cambie automáticamente el mapa de teclas de Xorg a la coincidencia más cercana. Véase localectl(1) para obtener más información.
Si es necesario, el mapa de teclas de /etc/vconsole.conf
se puede cargar durante el espacio de usuario temprano mediante el hook mkinitcpio keymap
.
/usr/share/kbd/keymaps/
, debe especificarse mediante una ruta completa al archivo en vconsole.conf
o cuando se use la orden localectl anterior.Crear un mapa de teclas personalizado
Al utilizar la consola, puede usar teclas de acceso rápido para imprimir un carácter específico. Además, también podemos imprimir una secuencia de caracteres y algunas secuencias de escape. Por lo tanto, si imprimimos la secuencia de caracteres que constituyen una orden y luego un carácter de escape para una nueva línea, esa orden se ejecutará.
Un método para hacerlo es editar el archivo del mapa de teclas. Sin embargo, dado que se reescribirá cada vez que se actualice el paquete al que pertenece, no se recomienda editar este archivo. Es mejor integrar el mapa de teclas existente con un mapa de teclas personal. La utilidad loadkeys
puede hacer esto.
Primero, cree un archivo de mapa de teclas. Este archivo de mapa de teclas puede estar en cualquier lugar, pero un método es imitar la jerarquía de directorios en /usr/local
:
# mkdir -p /usr/local/share/kbd/keymaps # vim /usr/local/share/kbd/keymaps/personal.map
Como nota al margen, vale la pena señalar que dicho mapa de teclas personal también es útil para redefinir el comportamiento de las teclas ya tratadas por el mapa de teclas predeterminado: cuando se cargan con loadkeys
, las directivas en el mapa de teclas predeterminado serán reemplazadas cuando entran en conflicto con las nuevas directivas y se conservan en caso contrario. De esta manera, solo los cambios en el mapa de teclas deben especificarse en el mapa de teclas personal.
/usr/share/kbd/keymaps/
. Los mapas de teclas tienen una extensión .map.gz, por ejemplo es.map.gz
es el mapa de teclas en español. Simplemente copie el mapa de teclas en /usr/local/share/kbd/keymaps/personal.map.gz
y gunzip.Añadir directivas
Se requieren dos tipos de directivas en este mapa de teclas personal. En primer lugar, las directivas keycode, que coincide con el formato que se ve en los mapas de teclas predeterminados. Estas directivas asocian un keycode con un keyym. Los keysyms representan acciones del teclado. Las acciones disponibles incluyen salida de códigos de caracteres o secuencias de caracteres, cambio de consolas o mapas de teclas, arranque de la máquina y muchas otras. El mapa de teclas completo actualmente activo se puede obtener con
# dumpkeys -l
La mayoría de los keyyms son intuitivos. Por ejemplo, para configurar la tecla 112 para que emita una 'e', la directiva será:
keycode 112 = e
Para configurar la tecla 112 para que emita un símbolo del euro, la directiva será:
keycode 112 = euro
Algunas teclas no están conectadas inmediatamente a las acciones de un teclado. En particular, los keyyms prefijados por una F mayúscula y de uno a tres dígitos (F1-F246) que constituyen un número mayor que 30 están siempre libres. Esto es útil al dirigir una tecla de acceso rápido para generar una secuencia de caracteres y otras acciones:
keycode 112 = F70
Entonces, F70 puede vincularse para generar una cadena específica:
string F70 = "Hello"
Cuando se presiona la tecla 112, generará el contenido de F70. Para ejecutar una orden impresa en una terminal, se debe añadir un carácter de escape de nueva línea al final de la cadena de la orden. Por ejemplo, para entrar un sistema en hibernación, se añade el siguiente mapa de teclas:
string F70 = "sudo /usr/sbin/hibernate\n"
Otros ejemplos
- Para hacer que la tecla Alt derecha sea igual a la tecla Alt izquierda (para Emacs), utilice la siguiente línea en su mapa de teclas. Incluirá el archivo
/usr/share/kbd/keymaps/i386/include/linux-with-two-alt-keys.inc
, consúltelo para obtener más detalles.
include "linux-with-two-alt-keys"
- Para intercambiar Bloq Mayús (Caps_Lock) con Escape (para Vim), vuelva a asignar los respectivos keycodes:
keycode 1 = Caps_Lock keycode 58 = Escape
- Para hacer que Bloq Mayús sea otra tecla de control, vuelva a asignar el respectivo keycode:
keycode 58 = Control
- Para intercambiar Bloq Mayús con la tecla de control izquierda, vuelva a asignar los respectivos keycodes:
keycode 29 = Caps_Lock keycode 58 = Control
Guardar los cambios
Para utilizar el mapa de teclas personal, debe cargarse con loadkeys:
# loadkeys /usr/local/share/kbd/keymaps/personal.map
Sin embargo, este mapa de teclas solo está activo para la sesión actual. Para cargar el mapa de teclas en el arranque, especifique la ruta completa al archivo en la variable KEYMAP
en /etc/vconsole.conf. El archivo no tiene que estar comprimido como los mapas de teclas oficiales proporcionados por kbd.
Ajustar el retraso y la velocidad tipográfica
El retraso tipográfico indica la cantidad de tiempo (generalmente en milisegundos) que una tecla debe presionarse y mantenerse para que comience el proceso de repetición. Después de que se haya activado el proceso de repetición, el carácter se repetirá con una cierta frecuencia (dada generalmente en Hz) especificada por la velocidad tipográfica. Estos valores se pueden cambiar utilizando la orden kbdrate. Tenga en cuenta que estos ajustes se configuran por separado para la consola virtual y para Xorg.
# kbdrate [-d retardo] [-r velocidad]
Por ejemplo, para establecer un retraso tipográfico a 200ms y una velocidad tipográfica a 30Hz, utilice la siguiente orden:
# kbdrate -d 200 -r 30
La emisión de la orden sin especificar el retraso y la velocidad restablecerá los valores tipográficos a sus valores predeterminados respectivos; un retraso de 250ms y una velocidad de 11Hz:
# kbdrate
Servicio systemd
Se puede utilizar un servicio systemd para establecer la velocidad del teclado. Por ejemplo:
/etc/systemd/system/kbdrate.service
[Unit] Description=Velocidad de repetición del teclado en tty. [Service] Type=oneshot RemainAfterExit=yes StandardInput=tty StandardOutput=tty ExecStart=/usr/bin/kbdrate -s -d 450 -r 60 [Install] WantedBy=multi-user.target
Entonces inicie/active el servicio de systemd kbdrate.service
.