Linux console (Español)/Keyboard configuration (Español)

From ArchWiki
Esta traducción de Linux console/Keyboard configuration fue revisada el 2020-12-03. Si existen cambios puede actualizarla o avisar al equipo de traducción.

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:

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.

Sugerencia: Si guardó su mapa de teclas personalizado en otro lugar que no sea /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.

Sugerencia: También puede editar un mapa de teclas existente ubicado en el árbol de directorio /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.