Come eseguire il debug dell'input da un dispositivo di input (/ dev / input / event *)


19

Ho un ricevitore IR che usa il driver imon e vorrei farlo funzionare con il kernel. In questo momento la metà dei tasti sul telecomando ( immagine ) funziona, ma un pensiero importante come i tasti numerici no!

La cosa strana è che il modulo keymap del kernel (rc-imon-pad) sembra essere corretto ma sembra che non sia realmente utilizzato poiché, in pratica, le stesse chiavi funzionano senza quel modulo.

Sembra che il modulo rc-imon-pad venga sempre caricato quando carico imon, e quindi sospetto che i codici chiave siano memorizzati nella cache, quindi non fa differenza se scarico rc-imon-pad

Ora mi sono perso, se lo faccio cat /dev/input/event5o non ir-keytable -tci sono dati indipendentemente dal tasto che premo, quindi il driver registra i pulsanti ma sembra che siano tradotti in codici chiave errati.

I miei kernel sono un kernel stock di Ubuntu di Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP mar 21 dic 23:23:56 UTC 2010 x86_64 GNU / Linux)


2
Sembra che il problema sia che il kernel invia codici chiave maggiori di 255 che X non registra perché è limitato a un numero intero a 8 bit senza segno. E ora sto ricompilando il modulo del kernel con codici chiave modificati per testare questa teoria ...
LassePoulsen,

1
A proposito, invece di catte puoi usare evtestche fornisce informazioni ben analizzate.
9000

Risposte:


3

Ho lo stesso telecomando e ho l'invio di codici chiave corretti al mio kernel 2.6.38-gentoo-r3. Non ho compilato i codici chiave come modulo, perché probabilmente non hanno avuto il tempo di rendere ancora possibile selezionare le singole mappe dei tasti. È tutto o niente e non mi piacciono i moduli inutili che mi ingombrano. Invece lascio che v4l-utils lo gestisca con udev.

Un paio di cose che ho imparato:

  • Controlla l'output di ir-keytable -r, dovrebbe elencare tutti i codici chiave applicabili al tuo telecomando.
  • Carica manualmente il keytable: ir-keytable -c -w bleh / keymaps / imon_pad, dopodiché ir-keytable -r dovrebbe restituirti la tabella
  • Potresti davvero avere un ricevitore difettoso, non menzioni nulla sulla storia. Ricordo di aver visto almeno un messaggio sulla lista circolare in cui un ragazzo ha detto di rispedire il caso e di averne uno nuovo risolto i suoi problemi.

Fateci sapere come è andata.


Assicurati di dare un'occhiata a questa risposta a tutti, xinput testè molto utile qui. unix.stackexchange.com/a/6231/27902
Elijah Lynn il

17

Potresti trovare utile xinput liste xinput test <device>.

Per esempio,

$ xinput list
⎡ Puntatore core virtuale id = 2 [puntatore master (3)]
⎜ ↳ ID del puntatore XTEST del core virtuale = 4 [puntatore slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntatore slave (2)]
⎣ ID tastiera core virtuale = 3 [tastiera master (2)]
    ↳ ID tastiera XTEST del core virtuale = 5 [tastiera slave (3)]
    ↳ Pulsante di accensione id = 6 [tastiera slave (3)]
    ↳ ID bus video = 7 [tastiera slave (3)]
    ↳ ID pulsante sospensione = 8 [tastiera slave (3)]
    ↳ Pulsanti extra Asus Laptop id = 9 [tastiera slave (3)]
    ↳ AT Translated Set 2 id tastiera = 10 [tastiera slave (3)]

e posso monitorare la mia tastiera ( xinput test 10) o il touchpad ( xinput test 11o anche xinput test "SynPS/2 Synaptics TouchPad") per tutti i tipi di eventi di input, e vengono stampati piuttosto sulla console e anche i parametri vengono estratti e stampati.

Questo non risolverà il tuo problema, ma almeno aiuterà un po 'decifrando il disordine che ad esempio cat /dev/input/event1produce.


1
Grazie mille! Ho costruito un rilevatore di tastiere basato su questa risposta.
l0b0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.