Jak debugować dane wejściowe z urządzenia wejściowego (/ dev / input / event *)

19

Mam odbiornik podczerwieni, który korzysta ze sterownika imon i chciałbym, aby działał z jądrem. W tej chwili połowa klawiszy na pilocie ( obrazie ) działa, ale najważniejsze jest to, że klawisze numeryczne nie działają!

Dziwne jest to, że moduł mapy klawiszy jądra (rc-imon-pad) wydaje się być poprawny, ale wydaje się, że tak naprawdę nie jest używany, ponieważ dokładnie te same klucze działają bez tego modułu.

Wygląda na to, że moduł rc-imon-pad zawsze ładuje się, gdy ładuję imon, a następnie podejrzewam, że kody klawiszy są buforowane, więc nie ma znaczenia, jeśli rozładuję rc-imon-pad

Teraz jestem zgubiony, jeśli to zrobię cat /dev/input/event5lub ir-keytable -tsą dane bez względu na to, który klawisz naciskam, więc sterownik rejestruje przyciski, ale wydaje się, że są one przetłumaczone na niewłaściwe kody.

Moje jądra to podstawowe jądro systemu Ubuntu od Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP Wt 21 grudnia 23:42:56 UTC 2010 x86_64 GNU / Linux)

LassePoulsen
źródło
2
Wydaje się, że problem polega na tym, że jądro wysyła kody kluczy większe niż 255, których X nie rejestruje, ponieważ jest ograniczony do 8-bitowej liczby całkowitej bez znaku. A teraz
kompiluję
1
Btw, zamiast catciebie możesz użyć, evtestco daje ładnie przeanalizowane informacje.
9000

Odpowiedzi:

3

Mam tego samego pilota i wysyłam poprawne kody dostępu do mojego jądra 2.6.38-gentoo-r3. Nie skompilowałem kodów klawiszy jako modułu, ponieważ prawdopodobnie nie mieli jeszcze czasu na wybranie poszczególnych map klawiszy. To wszystko albo nic, a ja nie lubię bezużytecznych, niepotrzebnych modułów. Zamiast tego pozwalam, aby v4l-utils obsługiwało to za pomocą udev.

Kilka rzeczy, których się nauczyłem:

  • Sprawdź wyjście ir-keytable -r, powinno wypisać wszystkie kody klawiszy odnoszące się do twojego pilota.
  • Załaduj zestaw klawiszy ręcznie: ir-keytable -c -w bleh / keymaps / imon_pad, po czym ir-keytable -r powinien zwrócić tabelę
  • Być może masz wadliwego odbiorcę, nie wspominasz nic o historii. Pamiętam, że widziałem przynajmniej jedną wiadomość na liście lc, w której facet powiedział, że odesłał skrzynkę i dostał nową, rozwiązał swoje problemy.

Daj nam znać, jak poszło.

lkraav
źródło
Pamiętaj, aby sprawdzić tę odpowiedź dla wszystkich, xinput testjest bardzo przydatna tutaj. unix.stackexchange.com/a/6231/27902
Elijah Lynn
17

Możesz znaleźć przydatne xinput listi xinput test <device>.

Na przykład,

Lista xinput $
⎡ Identyfikator wirtualnego wskaźnika rdzenia = 2 [wskaźnik główny (3)]
↳ ↳ Wskaźnik wirtualnego rdzenia XTEST id = 4 [wskaźnik slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [wskaźnik slave (2)]
⎣ Identyfikator wirtualnej klawiatury rdzenia = 3 [klawiatura główna (2)]
    ↳ Identyfikator klawiatury wirtualnego rdzenia XTEST = 5 [klawiatura podrzędna (3)]
    ↳ Przycisk zasilania id = 6 [klawiatura podrzędna (3)]
    ↳ Identyfikator magistrali wideo = 7 [klawiatura podrzędna (3)]
    ↳ Przycisk uśpienia id = 8 [klawiatura podrzędna (3)]
    ↳ Dodatkowe przyciski laptopa Asus id = 9 [klawiatura podrzędna (3)]
    ↳ AT Translated Set 2 keyboard id = 10 [slave keyboard (3)]

i mogę monitorować klawiaturę ( xinput test 10) lub touchpad ( xinput test 11lub nawet xinput test "SynPS/2 Synaptics TouchPad") pod kątem wszelkiego rodzaju zdarzeń wejściowych, a one są dość drukowane na konsoli, a parametry są również wyodrębniane i drukowane.

To nie rozwiąże twojego problemu, ale przynajmniej trochę pomoże odszyfrowując bałagan, który np cat /dev/input/event1. Powoduje.

ulidtko
źródło
1
Dziękuję bardzo! Na podstawie tej odpowiedzi zbudowałem detektor klawiatury .
l0b0