Visão geral muito breve sobre as camadas de entrada:
O seu dispositivo de teclado está conectado ao PC de alguma forma, por exemplo, via USB ou uma porta PS / 2. Os drivers do kernel para este mecanismo sabem como lidar com a comunicação quando uma tecla é pressionada no teclado.
Para um teclado USB, existe um padrão chamado HID (Human Interface Device). Isso não é apenas para teclados, mas também para mouses, joysticks e outros dispositivos de entrada. Assim, o dispositivo terá um descritor informando ao kernel que tipo de sinais ele pode emitir, e muitos dos códigos para chaves, incluindo mute , são padronizados.
No entanto, alguns teclados possuem chaves que não são padronizadas (como o Fn em algum teclado), e cabe ao fabricante como ele sinaliza essas teclas.
Existe uma camada especial no kernel para lidar com dispositivos HID. Essa camada torna a comunicação HID bruta disponível em /dev/hidrawX
e, em seguida, passa a traduzir os eventos HID em eventos de entrada do kernel.
A camada de entrada do kernel pega códigos de varredura (números correspondentes a uma chave física, única para o deivce) e os converte em códigos-chave (números correspondentes a chaves lógicas padronizadas) em todos os dispositivos). Ambos são disponibilizados como eventos em /dev/input/eventX
. Você pode usar evdev
para ver esses eventos e showkey
, dumpkeys
etc. para ver a tabela de conversão.
O servidor X (ou Wayland) lê todos esses eventos e os converte em símbolos-chave (como a
, á
etc., ou especiais como AudioMute
). Aplicativos X podem receber esses símbolos e agir de acordo. Você pode usar o aplicativo xev
para ver essa camada e configurá-la com xmodmap
e a especificação xkbd
no seu xorg.conf
.
Para reagir a AudioMute
, alguma aplicação é necessária para isso. Muitas vezes, esse é o Gerenciador de Janelas, mas se o seu Gerenciador de Janelas não fizer isso, um aplicativo separado também funcionará.
Portanto, não há um único "driver de teclado", é muito mais complicado e não há uma chamada especial para "mudo".