Como depurar a entrada de um dispositivo de entrada (/ dev / input / event *)

19

Eu tenho um receptor de IR que está usando o imon-driver e gostaria de fazê-lo funcionar com o kernel. No momento, metade das teclas do controle remoto ( imagem ) funciona, mas um pensamento muito importante, como as teclas numéricas, não!

O pensamento estranho é que o módulo de mapa de teclas do kernel (rc-imon-pad) parece estar correto, mas parece que não é realmente usado, já que exatamente as mesmas chaves estão trabalhando sem esse módulo.

Parece que o módulo rc-imon-pad sempre é carregado quando carrego o imon e, então, suspeito que os códigos de chave estejam armazenados em cache, para que não faça diferença se eu descarregar o rc-imon-pad

Agora estou perdido, se eu fizer cat /dev/input/event5ou ir-keytable -thouver dados, independentemente da tecla que eu pressionar, o driver registrará os botões, mas parece que eles foram traduzidos para os códigos de teclas errados.

Meus kernels são um kernel de estoque ubuntu da Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP terça-feira, 21 de dezembro às 23:42:56 UTC 2010 x86_64 GNU / Linux)

LassePoulsen
fonte
2
Parece que o problema é que o kernel envia códigos de chave maiores que 255, os quais o X não registra porque está limitado a um número inteiro de 8 bits não assinado. E agora estou recompilar o módulo do kernel com keycodes modificados para testar esta teoria ...
LassePoulsen
1
Btw, em vez de catvocê pode usar o evtestque fornece informações bem analisadas.
9000

Respostas:

3

Eu tenho o mesmo controle remoto e o envio de códigos de chave corretos para o meu kernel 2.6.38-gentoo-r3. Eu não compilei códigos de chave como um módulo, porque eles provavelmente ainda não tiveram tempo para possibilitar a seleção de mapas de teclas individuais ainda. É tudo ou nada e eu não gosto de um bilhão de módulos inúteis me entulhando. Em vez disso, estou deixando o v4l-utils lidar com isso com o udev.

Aprendi algumas coisas:

  • Verifique a saída do ir-keytable -r, ele deve listar todos os códigos de teclas aplicáveis ao seu controle remoto.
  • Carregue a tabela de teclas manualmente: ir-keytable -c -w bleh / keymaps / imon_pad, após o qual a ir-keytable -r deve devolver a tabela
  • Você pode realmente ter um receptor com defeito, não menciona nada sobre a história. Lembro-me de ter visto pelo menos uma mensagem na lista lirc, onde o cara disse que enviar o caso de volta e conseguir um novo resolveu seus problemas.

Deixe-nos saber como foi.

lkraav
fonte
Certifique-se de verificar esta resposta a todos, xinput testé muito útil aqui. Unix.stackexchange.com/a/6231/27902
Elijah Lynn
17

Você pode achar útil xinput liste xinput test <device>.

Por exemplo,

$ xinput list
Id ID do ponteiro do núcleo virtual = 2 [ponteiro mestre (3)]
Id ↳ ID do ponteiro do núcleo virtual XTEST = 4 [ponteiro escravo (2)]
Id id ID do TouchPad SynPS / 2 Synaptics = 11 [ponteiro escravo (2)]
Id ID do teclado do núcleo virtual = 3 [teclado principal (2)]
    Id ID do teclado XTEST do núcleo virtual = 5 [teclado escravo (3)]
    Button ID do botão liga / desliga = 6 [teclado escravo (3)]
    Bus ID do barramento de vídeo = 7 [teclado escravo (3)]
    Id Id do botão de suspensão = 8 [teclado secundário (3)]
    Buttons ID dos botões extras do laptop Asus = 9 [teclado escravo (3)]
    ↳ AT Traduzido Conjunto 2 id do teclado = 10 [teclado escravo (3)]

e posso monitorar meu teclado ( xinput test 10) ou touchpad ( xinput test 11ou mesmo xinput test "SynPS/2 Synaptics TouchPad") para todos os tipos de eventos de entrada, e eles são impressos no console e os parâmetros também são extraídos e impressos.

Isso não resolverá o seu problema, mas pelo menos ajudará um pouco a decifrar a desordem que, por exemplo, cat /dev/input/event1produz.

ulidtko
fonte
1
Muito obrigado! Eu construí um detector de teclado com base nesta resposta.
l0b0