it-swarm-es.tech

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

Siempre he tenido problemas para comprender la forma en que el mapeo de teclado y las cosas relacionadas se combinan en Linux.

Cuando las cosas se rompen, me hierve la sangre si tengo que examinar una lista de correo obsoleta interminable y publicaciones en foros para encontrar ESE un comando o línea de entrada que corrige mi problema.

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

Solo mirar archivos y herramientas no ayuda demasiado. inputrc? xmodmap? setxkbmap? configuración de la consola? ¿Dónde empiezo realmente entender cómo funciona para no tener que recurrir a probar los comandos dudosos de alguien para solucionar mis problemas de teclado?

18
Alex B

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

En el nivel más básico, el kernel sabe cómo reconocer los dispositivos de teclado y comprende el concepto de mapa 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 complican un poco, pero en realidad tiene cierto sentido. Xorg tiene varias nociones específicas que es muy importante comprender.

  • Xorg habla directamente con el dispositivo de teclado, sin pasar por 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 deba especificar su XkbLayout dentro de una sección InputClass (para versiones más recientes de Xorg) o una sección InputDevice (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 de tecla numérico.
    2. El XkbModel combinado con el XkbLayout se utilizan para asociar un código clave dado con un evento clave real. Por ejemplo, en mi teclado, el código clave 50 genera Shift_L.
    3. Opcionalmente, puede especificar múltiples 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 de diseño. (Esto es útil si, por ejemplo, está tratando de aprender Dvorak por sí mismo, o si desea alternar entre la distribución del teclado en inglés y ruso).
    4. Cada código clave se puede interpretar de varias formas, según los modificadores que se mantengan. xmodmap le permite ver qué eventos clave se enviarán según los modificadores que se estén reteniendo.
14
clee

En estos días, la consola y X pueden trabajar juntos.

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

3
KellyClowers

Hay problemas clásicos como 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 ya presentes antes de ingresar al modo de edición.

Ese comportamiento se cambia estableciendo:

set backspace=indent,eol,start
0
nozimica