O que acontece quando você pressiona uma tecla extra no teclado?

O que acontece quando você pressiona uma tecla extra no teclado?

Estou interessado em saber como funciona um teclado com teclas extras. Então, por exemplo, digamos que eu tenha o seguinte teclado:

insira a descrição da imagem aqui

Você pode ver que ele possui chaves extras. Agora diga que eu pressionei omudochave, o que acontecerá neste caso?

Isto é o que eu acho que acontece:

  • Um sinal será enviado ao computador.
  • O driver do dispositivo de teclado receberá este sinal.
  • O driver do dispositivo de teclado verá que este sinal é o sinal de mudo, portanto não o transmitirá ao sistema operacional, mas chamará uma função/chamada de sistema do sistema operacional que silenciará o som no computador.

Estou correcto?

Responder1

Visão geral muito breve sobre as camadas de entrada:

Seu teclado está conectado ao PC de alguma forma, por exemplo, via USB ou porta PS/2. Os drivers do kernel para esse mecanismo sabem como lidar com a comunicação quando uma tecla é pressionada no teclado.

Para um teclado USB, um padrão chamadoESCONDIDO(Dispositivo de Interface Humana). Isto não se aplica apenas a teclados, mas também a mouses, joysticks e outros dispositivos de entrada. Então o dispositivo terá umdescritorinformando ao kernel que tipo de sinais ele pode emitir e muitos códigos para chaves, incluindomudosão padronizados.

No entanto, alguns teclados possuem teclas que não são padronizadas (como Fnem alguns teclados), e cabe ao fabricante como ele sinaliza essas teclas.

Existe uma camada especial no kernel para lidar com dispositivos HID. Essa camada disponibiliza a comunicação HID bruta /dev/hidrawXe depois traduz os eventos HID em eventos de entrada do kernel.

A camada de entrada do kernel levadigitalizar códigos(números correspondentes a uma chave física, exclusiva do dispositivo) e os converte emcódigos-chave(números correspondentes às chaves lógicas padronizadas em todos os dispositivos). Ambos são disponibilizados como eventos no /dev/input/eventX. Você pode usar evdevpara ver esses eventos e showkey, dumpkeysetc. para ver a tabela de tradução.

O servidor X (ou Wayland) lê todos esses eventos e os traduz emsímbolos principais(como a, áetc., ou especiais como AudioMute). Os aplicativos X podem receber esses símbolos e agir de acordo. Você pode usar see xevapplication para ver essa camada e configurá-la com xmodmapa xkbdespecificação em seu arquivo xorg.conf.

Para reagir AudioMute, é necessário algum aplicativo para isso. Freqüentemente, este é o Gerenciador de Janelas, mas se o seu Gerenciador de Janelas não fizer isso, um aplicativo separado também funcionará.

Portanto, não existe um único "driver de teclado", é muito mais complicado e não há uma chamada especial para "mudo".

Responder2

No entendimento geral, você está correto. Quando você pressiona uma tecla, o teclado envia um scancode, basicamente uma sequência de números que identifica cada tecla. Scancodes são mapeados para códigos-chave. Cada código de tecla corresponde a uma função que define como o programa deve reagir ao pressionar uma tecla específica. Observe que o Xorg e o console usam diferentes conjuntos de códigos-chave. Não sei muito sobre o Wayland, mas talvez ele também use seu próprio conjunto de códigos de acesso. Os códigos-chave são mapeados para símbolos-chave. Os símbolos principais permitem que os desenvolvedores trabalhem com o teclado em um nível mais alto de abstração.

Você pode ver os scancodes e keycodes no console executando showkey --scancodee showkey --keycoderespectivamente. No Xorg você deve usar xevpara o último.

Esses níveis de abstração permitem criar esquemas de mapeamento flexíveis e complexos que influenciam diferentes partes do seu ambiente Linux. EsseArtigo do ArchWikicontém muitas informações sobre técnicas de mapeamento e você deve lê-lo se quiser saber mais.

Também há muitosartigosespalhados pela Internet que explicam como os teclados funcionam em baixo nível. Realmente não importa se o artigo foi escrito em 1999 ou 2010 - poucas coisas mudaram nos teclados desde então, mas tenha em mente que os dispositivos USB HID funcionam de maneira diferente dos teclados PS/2 'clássicos'.

informação relacionada