Como posso depurar os eventos ButtonRelease de mouse ausentes do X11 que estão presentes no usbmon?

1

Alguns dias atrás, meus lançamentos de botão do mouse começaram a não ser reconhecidos quando eu soltava dois dos botões simultaneamente. O estado lógico de um botão, portanto, fica preso em "baixo", causando ações não intencionais irritantes até que eu pressione-o novamente para redefini-lo.

Eu poderia reproduzir os eventos do mouse de monitoramento de problemas em xev (a saída, às vezes, não mostra eventos de liberação de chave esperados). Eu não consegui reproduzir o problema monitorando eventos em /sys/kernel/debug/usb/usbmon (a saída é sempre consistente com a realidade).

Assim, a falha está claramente em um componente de software em alguma abstração abaixo do X11, mas acima de USB.

O que poderia estar causando isso? Como eu poderia reduzir isso ainda mais?

    
por Anko 09.11.2017 / 23:03

1 resposta

3

Os níveis entre eventos USB e eventos X são:

  • A menos que seu mouse seja especial e tenha seu próprio driver, é muito provável que seja um dispositivo HID. Encontre o dispositivo hidraw correspondente (verifique dmesg ) e verifique se você recebe eventos lá. A conversão de USB para HID é feita pelo kernel.

  • Todos os eventos de entrada deixam o kernel através da camada de entrada, os dispositivos correspondentes estão em /dev/input . Execute evtest como root, selecione seu mouse, veja se você recebe eventos. A tradução de eventos HID para eventos de entrada é feita pelo kernel.

  • X carrega automaticamente os drivers para todos os dispositivos de entrada, na maioria dos casos, o driver evdev . Veja /var/log/Xorg.0.log sobre quais drivers são carregados. Esses drivers traduzem eventos de entrada para eventos X.

por 10.11.2017 / 08:44