Que códigos de teclas correspondem a solicitações para ativação por touchpad e desativação por touchpad?

1

Estou tentando gravar um driver de kernel para suportar um switch de hardware no meu laptop. O interruptor deve controlar se o touchpad está ou não desativado ou ativado, e está embutido na dobradiça de 360 ° do laptop. Tomando uma sugestão de outros drivers para hardware quase idêntico, eu estou pegando os eventos de hardware do switch e, dependendo da posição do switch, estou enviando códigos de tecla correspondentes em um dispositivo de entrada. Os códigos de teclas são deixados para serem manipulados no espaço do usuário. Este é o mesmo mecanismo que observei sendo usado no driver do Windows 10 para este switch.

Descobri que posso enviar o código de tecla 191 ( KEY_F21 ) e o Gnome 3.18 o capta com êxito como uma solicitação para alternar o status do touchpad. Isso funciona quase perfeitamente, exceto que, se o switch for invertido enquanto o laptop estiver desligado ou adormecido, o estado de alternância fica fora de sincronia com a posição do comutador, e o comutador agora tem o oposto do efeito pretendido. O KEY_F21 parece ser projetado para switches sem estado, como uma tecla de atalho em um teclado, enquanto o comutador do meu laptop possui posições distintas de ativação e desativação.

Existe um par diferente de códigos de teclas que eu poderia usar como "solicite espaço de usuário para desabilitar touchpad" e "solicite espaço de usuário para habilitar touchpad" ao invés de um único "espaço de usuário de solicitação para alternar touchpad"? / strong> Na falta disso, que par de códigos de tecla seria seguro para mim usar no driver que não teria nenhum comportamento pré-definido no X ou em um ambiente de desktop para que eu pudesse configurar atalhos personalizados para eles no meu DE (Gnome 3.18)?

Algumas coisas que eu já tentei não funcionaram:

  • Usando KEY_F22 e KEY_F23 . À primeira vista, esses parecem ser códigos de ativação e desativação do touchpad. Infelizmente, verifica-se que eles não são pedidos de espaço do usuário para alterar o estado do touchpad, mas sim avisos para o espaço do usuário, "o driver ou hardware alterou o estado do touchpad e estou apenas deixando o espaço do usuário conhecer o novo status para exibir um alerta ".
  • Analisou a a versão mais recente do kernel de entrada event-codes.h para quaisquer outros códigos promissores óbvios. Os únicos que encontrei foram KEY_TOUCHPAD_TOGGLE , KEY_TOUCHPAD_ON e KEY_TOUCHPAD_OFF (0x212-0x214). Eu tentei estes, mas nenhum teve qualquer efeito porque o servidor X não pode receber códigos de teclas acima de 247 (0xF7). Eu preciso de X ou o DE para manipular o evento de ativação / desativação do touchpad no espaço do usuário, portanto códigos de teclas tão altos estão fora.
por ven42 26.04.2016 / 20:46

0 respostas