Pude cambiar el diseño/mapa del teclado cuando el sistema X Window se está ejecutando usando ~/.Xmodmap
(y supongo que también podría hacerlo a través del protocolo X directamente, por ejemplo, usando libxcb como contenedor de las llamadas del protocolo X).
Pude hacer lo mismo (algo) en la consola/tty (es decir, cuando X no se está ejecutando) usando loadkeys
.
¿Hay alguna forma de personalizar la distribución del teclado de manera similar, pero desde una única fuente? , de tal forma que afecta tanto a X como a la consola, es decir. de una manera que sea "independiente de X y consola"?
(La única forma que se me ocurre es escribiendo un "controlador de teclado" que hable con la interfaz de entrada del kernel, evdev
y envía la entrada que desea (a través de uinput
?), o algo así, pero no sé si esto tiene sentido, o si hay una manera más fácil).
Respuesta aceptada:
Sí, hay una manera, y así es como lo hace el paquete de configuración de la consola de Debian.
- El administrador especifica los diseños de teclado en términos de XKB (modelo, diseño, variante y opciones) en un archivo llamado
keyboard
, normalmente/etc/default/keyboard
. Esta es la única fuente. Se puede editar con un editor de texto. - El
setxkbmap
El programa recibe estos mismos ajustes de XKB y configura un servidor X11 en consecuencia.- La secuencia de comandos de mantenimiento posterior a la instalación del paquete de configuración del teclado ejecuta
setxkbmap
directamente, con el/etc/default/keyboard
configuración, si se encuentra con una pantalla X11. Asídpkg-reconfigure keyboard-configuration
ejecutado desde un emulador de terminal GUI X11 afectará el diseño del teclado X11.
- La secuencia de comandos de mantenimiento posterior a la instalación del paquete de configuración del teclado ejecuta
- El
setupcon
script toma estas configuraciones XKB, las pasa a través deckbcomp
utilidad para generar un mapa de teclado y carga ese mapa de teclado en los terminales virtuales del kernel conloadkeys
/kbdcontrol
.- Este script se ejecuta en el arranque del sistema por un servicio.
- También se puede ejecutar manualmente en otro momento.
Otros sistemas operativos systemd funcionan de manera diferente pero también tienen una sola fuente.
- El diseño, la variante y las opciones de XKB se almacenan en
/etc/X11/xorg.conf.d/00-keyboard.conf
. Esta es la única fuente.- Este archivo es leído directamente por el servidor X11 al inicio y configura el mapa del teclado X11 directamente.
- Este archivo es analizado por
systemd-localed
Al inicio. El archivo no se puede editar de manera útil con un editor de texto mientrassystemd-localed
se está ejecutando, porque el servicio lo sobrescribirá alegremente con su propia información en memoria. - Para cambiar la información de XKB, se ejecuta
localectl
, que se comunica con otro servidor que, a su vez, se comunica consystemd-localed
.
systemd-localed
convierte la configuración de XKB en un nombre de asignación de teclado de terminal virtual utilizando las asignaciones en/usr/share/systemd/kbd-model-map
, que luego escribe en/etc/vconsole.conf
. A diferencia del sistema Debian, no genera mapas sobre la marcha a partir de la información de XKB, sino que selecciona solo mapas estáticos proporcionados previamente que figuran en el archivo de mapas.systemd-vconsole-setup
se ejecuta en el arranque, lee/etc/vconsole.conf
y carga el mapa del teclado en los terminales virtuales del kernel ejecutandoloadkeys
.
Lecturas adicionales
keyboard
. Manual de usuario de configuración de la consola . Debian.ckbcomp
. Manual de usuario de configuración de la consola . Debian.- Andrew T. Young (2011). Configuración del teclado .
- ¿De dónde obtiene Xkb su configuración?
- https://unix.stackexchange.com/a/326804/5132