Como os códigos de chave são mapeados para a ação apropriada?

17

Depois de descobrir como alterar o mapeamento de códigos de verificação para códigos-chave usando udev , consulte esta questão , eu queria saber como esses códigos-chave (ou eventos se você quiser) são mapeados para a ação apropriada.

Assim, por exemplo, se você pressionar volume para cima no seu teclado, um código de varredura será enviado, o qual será então convertido no código da tecla volumeup . Mas como esse código é interceptado, o volume aumentado e a notificação apropriada exibida?

Meu palpite é que em algum lugar um script deve ser chamado, então eu gostaria de saber onde estão esses scripts.

EDIT: Os códigos-chave que menciono não devem ser confundidos com os códigos-chave xev retornos, mas também estou interessado naqueles;)

    
por Gerhard Burger 16.01.2013 / 10:11

3 respostas

5

Ok, achei isso em link

% bl0ck_qu0te%

Então códigos de chaves são mapeados para keysym's, Então, onde estão os keysym's? Eu encontrei e respondi a essa pergunta: Onde encontro uma lista de todos os keyyms X atualmente? Como estamos falando sobre as teclas de volume, elas podem ser encontradas em XF86keysym.h no código-fonte mencionado na resposta.

Nesse arquivo no meu computador, encontrei o seguinte para o volume:

#define XF86XK_AudioLowerVolume 0x1008FF11   /* Volume control down        */
#define XF86XK_AudioMute    0x1008FF12   /* Mute sound from the system */
#define XF86XK_AudioRaiseVolume 0x1008FF13   /* Volume control up          */

Estranho ... valores diferentes de qualquer outra coisa, talvez existam vários sistemas para manipular chaves? link

Estou usando o Xubuntu e, para controlar as teclas, preciso mapear as ações manualmente (como

Então, tenho certeza de que os programas agora estão pegando a chave (para que nenhum script seja encontrado).

No Xubuntu eu tive esse problema com o Pulse Audio e usando scripts personalizados para alterar o volume, parecia que o Pulse estava interceptando a tecla Mute, A tecla Mute silencia o Alsa e o PulseAudio, mas ativa o som apenas do Alsa para soluções interessantes.

Verifique isso no NotifyOSD link

Se você observar esses diagramas: link

Especialmente este:

Issomostraqueexisteum"ouvinte de chaves de hardware" que recebe o formulário DBus ou HAL? Em seguida, "recupera o elemento visual do sistema", que os ícones de som e brilho estão na origem do Notify-OSD e, em seguida, cria o balão a partir daí.

Isso tudo é confuso, mas até onde eu entendi (até agora):

scancode bruto (ex. e016) > código de acesso (ex. 160) > keysym (ex. XF86AudioMute) > gnome-settings-daemon (ex. aumentar volume) > Sinal de DBus > hardware-keys-listener para notify-osd (ou outro programa escutando)

    
por Mateo 13.04.2017 / 14:25
1

Na maioria dos casos, não há scripts que são executados. Eles fazem com que os eventos sejam enviados para o gerenciador de janelas ou o daemon de configurações. A única vez que estou ciente do script no processo é quando você configura as associações de teclas personalizadas. Para atalhos de teclado personalizados, você pode adicionar linhas de comando (executáveis ou scripts) e vinculá-las a chaves.

Por favor, veja esta resposta que eu escrevi para uma pergunta sobre o backup de atalhos de teclado no Ubuntu: Onde os atalhos de teclado do GNOME são armazenados? Eu tenho um script que faz backup ou restaura todas as atalhos de teclado, incluindo as atalhos de teclado personalizados. Se você executar o script, você pode ver onde no dconf as combinações de teclas estão armazenadas e qual aplicativo é notificado sobre o evento chave.

    
por Stephen Ostermiller 30.01.2013 / 22:53
0

A resposta refere-se a Drivers .

Todo hardware deve ter um driver para interagir com o sistema operacional.

Citando link :

% bl0ck_qu0te%

Um dispositivo possui um registrador de dispositivo que armazena os bits de controle / status e bits de dados. Sempre que alguns dados precisam ser transferidos, geralmente são enviados definindo os bits de dados.

Portanto, sempre que você pressionar uma tecla no teclado, alguns dados serão gravados no registro. Esses bits são lidos pelo driver de dispositivo e a ação apropriada é executada. Esta é a breve explicação.

Links:

  • Se você estiver interessado, recomendo que você leia esta série sobre drivers de dispositivo que consiste em 17 artigos bem escritos por linuxforu : link .

  • Você pode ler o documento específico que contém instruções sobre como escrever um driver de dispositivo para o teclado USB: link

  • Se você está muito empolgado com os drivers de dispositivos linux, leia o livro "Linux Device Drivers" que está disponível gratuitamente em pdf: link

por green 05.02.2013 / 22:23