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

3

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

Você pode ver que tem chaves extras. Agora digamos que pressionei a tecla mudo , o que acontecerá nesse caso?

Isso é 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 do teclado verá que esse sinal é mudo, portanto não passará para o sistema operacional, mas chamará uma função do sistema / chamada do sistema que silenciará o som no computador.

Estou correto?

    
por John 27.05.2017 / 05:04

2 respostas

4

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".

    
por 27.05.2017 / 07:22
2

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 de tecla. Cada código de tecla corresponde a uma função que define como o programa deve reagir em uma determinada tecla pressionada. Observe que o Xorg e o console usam conjuntos diferentes de códigos de tecla. Eu não sei muito sobre Wayland, mas talvez ele também use seu próprio conjunto de códigos de teclas. Os códigos de tecla são mapeados para os símbolos-chave. Os símbolos-chave permitem que os desenvolvedores trabalhem com o teclado em um nível mais alto de abstração.

Você pode ver os códigos de código e scancodes no console executando showkey --scancode e showkey --keycode , respectivamente. No Xorg, você deve usar xev para o último.

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

Há também muitos artigos na Internet que explicam como os teclados funcionam em baixo nível. Não importa realmente se o artigo foi escrito em 1999 ou 2010 - não tantas 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'.

    
por 27.05.2017 / 07:10