วิธีการดีบั๊กอินพุตจากอุปกรณ์อินพุต (/ dev / input / event *)


19

ฉันมีตัวรับสัญญาณ IR ที่ใช้ไดรเวอร์ imon และฉันต้องการให้มันทำงานกับเคอร์เนล ตอนนี้ครึ่งหนึ่งของปุ่มบนรีโมท ( ภาพ ) ใช้งานได้แล้ว แต่ความคิดที่สำคัญทั้งหมดไม่เหมือนกับปุ่มตัวเลข!

ความคิดแปลก ๆ ก็คือโมดูลเคอร์เนลเคอร์เนล (rc-imon-pad) ดูเหมือนว่าจะถูกต้อง แต่ดูเหมือนว่ามันไม่ได้ใช้งานจริง ๆ เนื่องจาก excantage คีย์เดียวกันนั้นทำงานได้โดยไม่มีโมดูลนั้น

ดูเหมือนว่าโมดูล rc-imon-pad จะได้รับการโหลดเสมอเมื่อฉันโหลด imon แล้วฉันก็สงสัยว่ารหัสที่ถูกแคชนั้นจะไม่สร้างความแตกต่างถ้าฉันยกเลิกการโหลด rc-imon-pad

ตอนนี้ฉันหลงทางถ้าฉันทำcat /dev/input/event5หรือir-keytable -tมีข้อมูลไม่ว่าฉันจะกดปุ่มใดก็ตามดังนั้นคนขับจะลงทะเบียนปุ่ม แต่ดูเหมือนว่าพวกเขาจะได้รับการแปลรหัสผิด

เมล็ดของฉันคือเคอร์เนลหุ้นอูบุนตูจาก Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP อังคาร 21 ธ.ค. 23:42:56 UTC 2010 x86_64 GNU / Linux)


2
ดูเหมือนว่าปัญหาคือเคอร์เนลส่งคีย์โค้ดที่มีขนาดใหญ่กว่า 255 ซึ่ง X ไม่ได้ลงทะเบียนเนื่องจากถูก จำกัด ให้เป็นจำนวนเต็ม 8 บิตที่ไม่ได้ลงนาม และตอนนี้ผม recompiling เคอร์เนลโมดูลที่มีการพิมพ์ซ้ำแก้ไขเพื่อทดสอบทฤษฎีนี้ ...
LassePoulsen

1
Btw แทนคุณcatสามารถใช้evtestซึ่งให้ข้อมูลที่แจงอย่างดี
9000

คำตอบ:


3

ฉันมีรีโมทตัวเดียวกันและส่งรหัสที่ถูกต้องไปยังเคอร์เนล 2.6.38-gentoo-r3 ของฉัน ฉันไม่ได้รวบรวมรหัสคีย์เป็นโมดูลเพราะพวกเขาอาจยังไม่มีเวลาที่จะทำให้สามารถเลือกคีย์แมปแต่ละรายการได้ มันคือทั้งหมดหรือไม่มีอะไรและฉันไม่ชอบโมดูลไร้ประโยชน์ gazillion ที่เกะกะฉัน แต่ฉันปล่อยให้ v4l-utils จัดการกับ udev

สองสิ่งที่ฉันเรียนรู้:

  • ตรวจสอบเอาต์พุตของ ir-keytable -r ควรแสดงรายการรหัสคีย์ทั้งหมดที่ใช้กับรีโมตของคุณ
  • โหลด keytable ด้วยตนเอง: ir-keytable -c -w bleh / keymaps / imon_pad หลังจากที่ ir-keytable -r ควรให้ตารางกลับ
  • คุณอาจมีผู้รับผิดปกติคุณไม่ได้พูดถึงประวัติศาสตร์ ฉันจำได้ว่าเห็นข้อความอย่างน้อยหนึ่งข้อความในรายการที่คนพูดว่าการส่งเรื่องกลับมาและการแก้ไขใหม่

แจ้งให้เราทราบว่ามันไปอย่างไร


อย่าลืมตรวจสอบคำตอบนี้ทุกคนxinput testมีประโยชน์มากที่นี่ unix.stackexchange.com/a/6231/27902
Elijah Lynn

17

คุณอาจพบว่ามีประโยชน์และxinput listxinput test <device>

ตัวอย่างเช่น,

$ xinput list
⎡ id ตัวชี้ core เสมือน = 2 [ตัวชี้หลัก (3)]
⎜↳ id ตัวชี้ core เสมือน XTEST = 4 [ตัวชี้ทาส (2)]
Pad ↳ TouchPad SynPS / 2 Synaptics id = 11 [ตัวชี้ทาส (2)]
⎣แป้นพิมพ์คอร์เสมือน id = 3 [แป้นพิมพ์หลัก (2)]
    ↳ id คอร์คีย์บอร์ด XTEST เสมือน = 5 [คีย์บอร์ดทาส (3)]
    ↳ปุ่มเปิดปิด id = 6 [คีย์บอร์ดทาส (3)]
    Bus Video Bus id = 7 [คีย์บอร์ดทาส (3)]
    ↳ปุ่มสลีป id = 8 [คีย์บอร์ดทาส (3)]
    ↳อัสซุสแล็ปท็อปปุ่มพิเศษ id = 9 [คีย์บอร์ดทาส (3)]
    ↳ AT id ชุดคีย์บอร์ด 2 ที่แปล = 10 [คีย์บอร์ดทาส (3)]

และฉันสามารถตรวจสอบแป้นพิมพ์ของฉัน ( xinput test 10) หรือทัชแพด ( xinput test 11หรือแม้กระทั่งxinput test "SynPS/2 Synaptics TouchPad") สำหรับกิจกรรมป้อนข้อมูลทุกประเภทและพวกเขาก็พิมพ์ไปที่คอนโซลและพารามิเตอร์ต่างๆก็ถูกสกัดและพิมพ์เช่นกัน

สิ่งนี้จะไม่แก้ปัญหาของคุณ แต่อย่างน้อยจะช่วยแก้ปัญหาความวุ่นวายที่cat /dev/input/event1เกิดขึ้นเช่น


1
ขอบคุณมาก! ฉันสร้างตัวตรวจจับคีย์บอร์ดตามคำตอบนี้
l0b0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.