Me interesa saber como funciona un teclado con teclas extra. Entonces, por ejemplo, digamos que tengo el siguiente teclado:
Puedes ver que tiene llaves adicionales. Ahora digamos que presioné elsilenciarclave, ¿qué pasará en este caso?
Esto es lo que creo que sucede:
- Se enviará una señal a la computadora.
- El controlador del dispositivo de teclado recibirá esta señal.
- El controlador del dispositivo de teclado verá que esta señal es la señal de silencio, por lo que no la pasará al sistema operativo, sino que llamará a una función/llamada del sistema del sistema operativo que silenciará el sonido en la computadora.
¿Estoy en lo correcto?
Respuesta1
Descripción muy breve de las capas de entrada:
Su dispositivo de teclado está conectado a la PC de alguna manera, por ejemplo mediante USB o un puerto PS/2. Los controladores del kernel para este mecanismo saben cómo manejar la comunicación cuando se presiona una tecla en el teclado.
Para un teclado USB, un estándar llamadoESCONDIDO(Dispositivo de interfaz humana) existen. Esto no es sólo para teclados, sino también para ratones, joysticks y otros dispositivos de entrada. Entonces el dispositivo tendrá undescriptordecirle al núcleo qué tipo de señales puede emitir, y muchos de los códigos para las claves, incluidossilenciarestán estandarizados.
Sin embargo, algunos teclados tienen teclas que no están estandarizadas (como las Fnde algunos teclados), y depende del fabricante cómo señalizar esas teclas.
Hay una capa especial en el kernel para manejar dispositivos HID. Esta capa hace que la comunicación HID sin procesar esté disponible en /dev/hidrawX
y luego traduce los eventos HID en eventos de entrada del kernel.
La capa de entrada del kernel tomacódigos de escaneo(números correspondientes a una clave física, exclusiva del dispositivo) y los convierte encódigos clave(números correspondientes a claves lógicas estandarizadas en todos los dispositivos). Ambos están disponibles como eventos en /dev/input/eventX
. Puede utilizar evdev
para ver estos eventos y showkey
, dumpkeys
etc. para ver la tabla de traducción.
El servidor X (o Wayland) lee todos esos eventos y los traduce asímbolos clave(como a
, á
etc., o especiales como AudioMute
). Las aplicaciones X pueden recibir estos símbolos y actuar en consecuencia. Puede usar ver xev
la aplicación para ver esta capa y configurarla con xmodmap
las xkbd
especificaciones en su archivo xorg.conf
.
Para reaccionar AudioMute
, se necesita alguna aplicación. A menudo, este es el Administrador de ventanas, pero si su Administrador de ventanas no lo hace, también funcionará una aplicación separada.
Así que no existe un único "controlador de teclado", es mucho más complicado y no hay una llamada especial para "silenciar".
Respuesta2
En términos generales, tienes razón. Cuando presionas una tecla, el teclado envía un código de escaneo, básicamente una secuencia de números que identifican cada tecla. Los códigos de escaneo se asignan a códigos clave. Cada código de tecla corresponde a una función que define cómo debe reaccionar el programa al presionar una tecla en particular. Tenga en cuenta que Xorg y la consola utilizan diferentes conjuntos de códigos clave. No sé mucho sobre Wayland, pero tal vez también use su propio conjunto de códigos clave. Los códigos clave se asignan a símbolos clave. Los símbolos de teclas permiten a los desarrolladores trabajar con el teclado en un nivel superior de abstracción.
Puede ver los códigos de escaneo y los códigos clave en la consola ejecutando showkey --scancode
y showkey --keycode
respectivamente. En Xorg deberías usar xev
para este último.
Estos niveles de abstracciones le permiten crear esquemas de mapeo complejos y flexibles que influyen en diferentes partes de su entorno Linux. EsteArtículo de ArchWikiContiene mucha información sobre técnicas de mapeo y deberías leerlo si quieres saber más.
También hay muchosartículospor Internet que explican cómo funcionan los teclados a bajo nivel. Realmente no importa si el artículo fue escrito en 1999 o 2010; no han cambiado muchas cosas en los teclados desde entonces, pero tenga en cuenta que los dispositivos USB HID funcionan de manera diferente a los teclados PS/2 "clásicos".