GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cambiar la distribución/asignación del teclado tanto en la consola (tty) como en X de una manera agnóstica de X/consola?

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.
  • El setupcon script toma estas configuraciones XKB, las pasa a través de ckbcomp utilidad para generar un mapa de teclado y carga ese mapa de teclado en los terminales virtuales del kernel con loadkeys /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 mientras systemd-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 con systemd-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 ejecutando loadkeys .

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
Relacionado:¿El script ejecuta el bucle solo una vez?
Linux
  1. Cambiar el idioma y la distribución del teclado en varias distribuciones

  2. Cómo buscar archivos grandes en la consola

  3. ¿Cambiar la fuente de la consola de modo de texto?

  4. ¿Cambiar el diseño del teclado en Lightdm?

  5. ¿Cómo cambiar permanentemente el tipo de fuente Tty de la consola para que se mantenga después de reiniciar?

Cómo cambiar el tipo y tamaño de fuente de la consola de Linux

¿Cuál es la diferencia entre una consola, una terminal y un shell?

Obtener los caracteres  y â en la consola Linux PuTTY

¿Cómo puedo cambiar el diseño del teclado de entrada mientras estoy en la consola?

¿Dónde está la vista de terminal de tty7?

consola virsh y tamaño tty