Bagaimana cara men-debug input dari perangkat input (/ dev / input / event *)

19

Saya memiliki penerima IR yang menggunakan imon-driver dan saya ingin membuatnya bekerja dengan kernel. Saat ini separuh dari tombol pada remote ( gambar ) berfungsi, tetapi yang paling penting seperti kunci numerik tidak!

Pikiran yang aneh adalah bahwa modul kernel keymap (rc-imon-pad) tampaknya benar tetapi tampaknya itu tidak benar-benar digunakan karena selain tombol yang sama bekerja tanpa modul itu.

Tampaknya modul rc-imon-pad selalu dimuat ketika saya memuat imon, dan kemudian saya menduga bahwa kode kunci di-cache sehingga tidak ada bedanya jika saya membongkar rc-imon-pad

Sekarang saya tersesat, jika saya lakukan cat /dev/input/event5atau ir-keytable -tada data tidak peduli tombol apa yang saya tekan, jadi pengemudi mendaftarkan tombol tetapi sepertinya mereka diterjemahkan ke kode kunci yang salah.

Kernel saya adalah kernel stok ubuntu dari Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP Tue 21 Des 23:42:56 UTC 2010 x86_64 GNU / Linux)

LassePoulsen
sumber
2
Tampaknya masalahnya adalah bahwa kernel mengirim kode kunci lebih besar dari 255 yang tidak didaftarkan X karena terbatas pada integer 8bit yang tidak ditandatangani. Dan saya sekarang mengkompilasi ulang modul kernel dengan kode kunci yang dimodifikasi untuk menguji teori ini ...
LassePoulsen
1
Btw, bukannya catAnda bisa menggunakan evtestyang memberikan info yang diuraikan dengan baik.
9000

Jawaban:

3

Saya memiliki remote yang sama dan saya mengirimkannya keycodes yang benar ke kernel 2.6.38-gentoo-r3 saya. Saya tidak mengkompilasi kode kunci sebagai modul, karena mereka mungkin belum punya waktu untuk memungkinkannya untuk memilih masing-masing kode kunci. Ini semua atau tidak sama sekali dan saya tidak suka banyak trilyunan modul yang tidak berguna mengacaukan saya. Sebaliknya, saya membiarkan v4l-utils menanganinya dengan udev.

Beberapa hal yang saya pelajari:

  • Periksa output dari ir-keytable -r, harus mencantumkan semua kode kunci yang berlaku untuk remote Anda.
  • Load keytable secara manual: ir-keytable -c -w bleh / keymaps / imon_pad, setelah itu ir-keytable -r akan memberi Anda tabel kembali
  • Anda mungkin benar-benar memiliki penerima yang salah, Anda tidak menyebutkan tentang sejarah. Saya ingat pernah melihat setidaknya satu pesan di lirc-list di mana lelaki berkata mengirim koper itu kembali dan mendapatkan koper baru menyelesaikan masalahnya.

Beritahu kami bagaimana hasilnya.

lkraav
sumber
Pastikan untuk memeriksa jawaban ini semua orang, xinput testsangat berguna di sini. unix.stackexchange.com/a/6231/27902
Elijah Lynn
17

Anda mungkin menemukan bermanfaat xinput listdan xinput test <device>.

Sebagai contoh,

daftar $ xinput
⎡ Virtual core pointer id = 2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id = 4 [pointer slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [pointer slave (2)]
⎣ Id keyboard inti virtual = 3 [keyboard master (2)]
    ↳ Id keyboard virtual inti XTEST = 5 [keyboard slave (3)]
    ↳ Tombol Daya id = 6 [keyboard slave (3)]
    ↳ Video Bus id = 7 [keyboard slave (3)]
    ↳ Tombol Tidur id = 8 [keyboard slave (3)]
    ↳ Tombol ekstra Laptop Asus id = 9 [keyboard slave (3)]
    ↳ AT Translated Set 2 keyboard id = 10 [keyboard slave (3)]

dan saya dapat memonitor keyboard saya ( xinput test 10) atau touchpad ( xinput test 11, atau bahkan xinput test "SynPS/2 Synaptics TouchPad") untuk semua jenis acara input, dan mereka cukup dicetak untuk konsol, dan parameter bisa diekstraksi dan dicetak juga.

Ini tidak akan menyelesaikan masalah Anda, tetapi setidaknya akan membantu sedikit dengan menguraikan kekacauan yang misalnya cat /dev/input/event1menghasilkan.

ulidtko
sumber
1
Terima kasih banyak! Saya membangun detektor keyboard berdasarkan jawaban ini.
l0b0