So debuggen Sie die Eingabe von einem Eingabegerät (/ dev / input / event *)

19

Ich habe einen IR-Empfänger, der den Imon-Treiber verwendet, und ich möchte, dass er mit dem Kernel funktioniert. Im Moment funktioniert die Hälfte der Tasten auf der Fernbedienung ( Bild ), aber ein wichtiger Gedanke wie die Zifferntasten funktioniert nicht!

Der seltsame Gedanke ist, dass das Kernel-Keymap-Modul (rc-imon-pad) korrekt zu sein scheint, aber es scheint nicht wirklich verwendet zu werden, da genau die gleichen Schlüssel ohne dieses Modul funktionieren.

Es scheint, dass das rc-imon-pad-Modul immer geladen wird, wenn ich imon lade, und dann vermute ich, dass die Schlüsselcodes zwischengespeichert sind, so dass es keinen Unterschied macht, wenn ich rc-imon-pad entlade

Jetzt bin ich verloren, wenn ich Daten tue cat /dev/input/event5oder ir-keytable -tes gibt, egal welche Taste ich drücke, so registriert der Fahrer die Tasten, aber es scheint nur, dass sie in die falschen Schlüsselcodes übersetzt sind.

Mein Kernel ist ein Ubuntu-Aktienkernel von Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP Di 21.12. 23:42:56 UTC 2010 x86_64 GNU / Linux)

LassePoulsen
quelle
2
Es scheint, dass das Problem darin besteht, dass der Kernel Schlüsselcodes größer als 255 sendet, die X nicht registriert, weil sie auf eine 8-Bit-Ganzzahl ohne Vorzeichen beschränkt sind. Und jetzt kompiliere ich das Kernel-Modul mit modifizierten Schlüsselcodes neu, um diese Theorie zu testen ...
LassePoulsen
1
Übrigens können Sie anstelle von catverwenden, evtestdie schön geparste Informationen gibt.
9000

Antworten:

3

Ich habe die gleiche Fernbedienung und sende die richtigen Schlüsselcodes an meinen 2.6.38-gentoo-r3-Kernel. Ich habe Keycodes nicht als Modul kompiliert, da sie wahrscheinlich noch keine Zeit hatten, einzelne Keymaps auszuwählen. Es ist alles oder nichts und ich mag keine Unmengen nutzloser Module, die mich überladen. Stattdessen lasse ich v4l-utils mit udev umgehen.

Einige Dinge, die ich gelernt habe:

  • Überprüfen Sie die Ausgabe von ir-keytable -r. Darin sollten alle für Ihre Fernbedienung geltenden Schlüsselcodes aufgeführt sein .
  • Laden Sie die Schlüsseltabelle manuell: ir-keytable -c -w bleh / keymaps / imon_pad. Danach sollte ir-keytable -r Ihnen die Tabelle zurückgeben
  • Möglicherweise haben Sie tatsächlich einen defekten Empfänger, Sie erwähnen nichts über die Geschichte. Ich erinnere mich, dass ich mindestens eine Nachricht auf der Liste gesehen habe, in der jemand gesagt hat, er sende den Fall zurück und lasse sich einen neuen schicken, um seine Probleme zu lösen.

Lassen Sie uns wissen, wie es gelaufen ist.

lkraav
quelle
Stellen Sie sicher, dass Sie diese Antwort lesen, die xinput testhier sehr nützlich ist. unix.stackexchange.com/a/6231/27902
Elijah Lynn
17

Vielleicht finden Sie nützlich xinput listund xinput test <device>.

Beispielsweise,

$ xinput Liste
⎡ ID des virtuellen Kernzeigers = 2 [Hauptzeiger (3)]
⎜ ↳ XTEST-Zeiger-ID des virtuellen Kerns = 4 [Slave-Zeiger (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad-ID = 11 [Slave-Zeiger (2)]
⎣ ID der virtuellen Kerntastatur = 3 [Mastertastatur (2)]
    ↳ XTEST-Tastatur-ID des virtuellen Kerns = 5 [Slave-Tastatur (3)]
    ↳ Einschaltknopf-ID = 6 [Slave-Tastatur (3)]
    ↳ Videobus-ID = 7 [Slave-Tastatur (3)]
    ↳ Sleep-Button-ID = 8 [Slave-Tastatur (3)]
    ↳ Asus Laptop zusätzliche Tasten id = 9 [Slave-Tastatur (3)]
    ↳ AT Übersetztes Set 2 Tastatur-ID = 10 [Slave-Tastatur (3)]

und ich kann meine Tastatur ( xinput test 10) oder mein Touchpad ( xinput test 11oder sogar xinput test "SynPS/2 Synaptics TouchPad") auf alle Arten von Eingabeereignissen überwachen , und sie werden hübsch auf die Konsole gedruckt, und Parameter werden extrahiert und auch gedruckt.

Dies wird Ihr Problem nicht lösen, aber zumindest ein wenig helfen, indem Sie die Unordnung entschlüsseln, die z cat /dev/input/event1. B. erzeugt.

ulidtko
quelle
1
Ich danke dir sehr! Basierend auf dieser Antwort habe ich einen Tastaturdetektor gebaut .
03.