¿Cómo funciona la asignación de teclado en Linux?

¿Cómo funciona la asignación de teclado en Linux?

Siempre he tenido problemas para comprender la forma en que se combinan la asignación del teclado y las cosas relacionadas en Linux.

Cuando las cosas se rompen, me hierve la sangre si tengo que examinar interminables listas de correo obsoletas y publicaciones en foros para encontrarlas.ESOun comando o línea inputrc que soluciona mi problema.

Hay problemas clásicos como la tecla de retroceso que no funciona en vim o Ctrllas flechas + en bash hasta que cambias el tipo de terminal. O un problema que encontré recientemente, donde en la nueva @clave de instalación de Debian realmente se imprime "e "imprime @(¿distribución de teclado incorrecta?)

Simplemente mirar archivos y herramientas no ayuda demasiado. entradarc? xmodmap? setxkbmap? ¿Configuración de la consola? ¿Por dónde empiezo realmente?entender¿Cómo funciona para no tener que recurrir a probar comandos dudosos de alguien para solucionar los problemas de mi teclado?

Respuesta1

Esto es mucho más complicado de lo que debería ser, pero aquí está mi intento.

En el nivel más básico, el kernel sabe cómo reconocer dispositivos de teclado y comprende el concepto demapa de teclas de la consola. Esta es la forma más sencilla de configurar su teclado y solo hay una variable a considerar, pero estas configuraciones solo afectan la entrada de su teclado en la consola de texto de Linux.

Una vez que ingresas a Xorg, las cosas se vuelven un poco más complicadas, pero en realidad tiene sentido. Xorg tiene varias nociones específicas que es muy importante comprender.

  • Xorg habla directamente con el dispositivo de teclado, omitiendo el kernel e ignorando el mapa de teclas especificado en la consola.
  • Xorg le permite configurar algunas opciones específicas para su teclado en el archivo xorg.conf, aunque las distribuciones actuales de Linux hacen todo lo posible para ejecutarse sin ningún archivo xorg.conf. Dependiendo de su versión de Xorg, es posible que necesite especificar su XkbLayout dentro de una InputClasssección (para versiones más nuevas de Xorg) o una InputDevicesección (para versiones anteriores).
  • Hay varias capas específicas de interpretación en Xorg cuando se presiona una tecla.
  1. En el nivel más básico, cada evento de pulsación de tecla está representado por un código numérico.
  2. XkbModel combinado con XkbLayout se utilizan para asociar un código clave determinado con un evento clave real. Por ejemplo, en mi teclado, el código clave 50 genera Shift_L.
  3. Opcionalmente, puede especificar varios XkbLayouts para un teclado y luego usar XkbOptions(la lista completa generalmente se almacena en /usr/share/X11/xkb/rules) para configurar cómo cambiar los diseños. (Esto es útil si, por ejemplo, estás intentando aprender Dvorak por tu cuenta o si quieres alternar entre la distribución del teclado en inglés y ruso).
  4. Cada código clave se puede interpretar de varias maneras, según los modificadores que se mantengan. xmodmaple permite ver qué eventos clave se enviarán en función de los modificadores que se mantienen.

Respuesta2

Hoy en día, la consola y X pueden funcionar juntas.

No sé si esto está completamente estandarizado todavía, pero en Debian Unstable (y presumiblemente en otras distribuciones con Xorg y herramientas de consola actualizadas), /etc/default/keyboardle permite usar la sintaxis de estilo X para configurar el teclado en la consola y en X - en al menos si está utilizando herramientas de consola y configuración de consola. El resto es como se describe claramente.

Respuesta3

Hay problemas clásicos como el retroceso que no funciona en vim...

Quizás esté hablando del comportamiento de vim para eliminar con retroceso solo los caracteres que escribió en la edición actual y evitar que lo haga con caracteres que ya estaban presentes antes de ingresar al modo de edición.

Ese comportamiento se cambia estableciendo:

set backspace=indent,eol,start

información relacionada