입력 장치(/dev/input/event*)의 입력을 디버깅하는 방법

입력 장치(/dev/input/event*)의 입력을 디버깅하는 방법

나는 imon 드라이버를 사용하는 적외선 수신기를 가지고 있고 그것이 커널과 함께 작동하도록 만들고 싶습니다. 이제 리모콘 버튼 중 절반(영상)는 작동하지만 숫자 키와 같은 매우 중요한 아이디어는 작동하지 않습니다!

이상한 생각은 커널 키 매핑 모듈(rc-imon-pad)이 올바른 것 같지만 실제로는 사용되지 않는 것 같습니다. 해당 모듈 없이도 똑같은 키가 작동하기 때문입니다.

imon을 로드하면 rc-imon-pad 모듈이 항상 로드되는 것 같고 키코드가 캐시된 것으로 의심되므로 rc-imon-pad를 제거해도 아무런 차이가 없습니다.

이제 이 작업을 수행하면 길을 잃 cat /dev/input/event5거나 ir-keytable -t어떤 키를 눌러도 데이터가 있으므로 드라이버가 버튼을 등록하지만 잘못된 키코드로 변환되는 것 같습니다.

내 커널은 Natty의 우분투 스톡 커널입니다(Linux xbmc 2.6.37-11-generic #25-Ubuntu SMP Tue Dec 21 23:42:56 UTC 2010 x86_64 GNU/Linux)

답변1

유용 xinput list하고 xinput test <device>.

예를 들어,

$x 입력 목록
⎡ 가상 코어 포인터 id=2 [메인 포인터(3)]
⎜ ↳ 가상 코어 XTEST 포인터 ID=4 [포인터 (2)에서]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [포인터(2)에서]
⎣ 가상 코어 키보드 id=3 [기본 키보드(2)]
    ↳ 가상 코어 XTEST 키보드 ID=5 [키보드 (3)에서]
    ↳ 전원 버튼 ID=6 [키보드 (3)에서]
    ↳ 비디오 버스 ID=7 [키보드(3)에서]
    ↳ 절전 버튼 ID=8 [키보드(3)에서]
    ↳ ASUS 노트북 추가 버튼 ID=9 [키보드 (3)에서]
    ↳ AT Translated Set 2 키보드 ID=10 [키보드 (3)에서]

내 키보드( xinput test 10)나 터치패드( )를 모니터링할 수 있습니다 xinput test 11.xinput test "SynPS/2 Synaptics TouchPad") 다양한 입력 이벤트의 경우 콘솔에 보기 좋게 인쇄되고 인수가 추출되어 인쇄됩니다.

이렇게 해도 문제가 해결되지는 않지만 최소한 다음과 같이 cat /dev/input/event1발생한 혼란을 해독하는 데 도움이 될 것입니다.


편집하다(댓글의 @alphanum에서):

10년 전 제 답변이 정확하지 않았습니다...죄송합니다. 이 빠른 다이어그램을 즐겨보세요.

┌─────────────────────┐            ┌─────────────────┐               ┌──────────────┐    ┌──────────────────┐
│                     │ HID events │                 │ xinput events │              │    │                  │
│  HID/input device   ├───────────►│ Device-specific ├──────────────►│  the kernel  ├───►│ Userspace (apps) │
│ (e.g. USB keyboard) │    ▲       │     driver      │     ▲         │              │    │                  │
└─────────────────────┘    │       └─────────────────┘     │         └──────────────┘    └──────────────────┘
                           │                               │
                  evtest /dev/input/XX            xinput test <xinput id>

2가지 포인트 표시:

  • 당신이 얻는 결과 xinput test는 "xinput-unified"입니다. 즉, 장치 드라이버에 의해 처리됩니다. 이는 사용자 공간 애플리케이션이 보는 것과 더 유사합니다.
  • 당신이 얻는 결과 evtest /dev/input/XX는 더 "원시적"이며 xinput 형식으로 변환되지 않았습니다. 이는 HID 장치가 보는 것과 더 유사합니다.

실제 HID 장치를 구축하는지 아니면 애플리케이션을 구축하는지에 따라 디버깅에 사용할 것인지 evtest선택할 수 있습니다. xinput test두 가지를 비교하면 장치 드라이버 문제를 해결하는 데 도움이 될 수도 있습니다.

답변2

나는 동일한 리모컨을 가지고 있으며 올바른 키코드를 2.6.38-gentoo-r3 커널로 보냅니다. 아직 개별 키맵을 선택할 시간이 없었을 것이기 때문에 키코드를 모듈로 컴파일하지 않았습니다. 전부 아니면 전무입니다. 저는 셀 수 없이 많은 쓸모없는 모듈이 저를 어수선하게 만드는 것을 좋아하지 않습니다. 대신 v4l-utils가 udev를 사용하여 처리하도록 했습니다.

나는 몇 가지를 배웠습니다:

  • ir-keytable -r의 출력을 확인하면 목록이 표시됩니다.적용 가능한 모든 키코드당신의 리모콘에.
  • 키 테이블을 수동으로 로드합니다: ir-keytable -c -w bleh/keymaps/imon_pad, 그러면 ir-keytable -r이 테이블을 반환해야 합니다.
  • 실제로 수신기에 결함이 있을 수 있지만 기록을 언급하지 않았습니다. 적어도 하나의 메시지를 본 기억이 나네요lirc 목록그 사람은 상자를 반품하고 새 상자를 구입하면 문제가 해결되었다고 말했습니다.

어떻게 진행되는지 알려주세요.

관련 정보