usbmon에서 X11 누락된 마우스 ButtonRelease 이벤트를 디버깅하는 방법은 무엇입니까?

usbmon에서 X11 누락된 마우스 ButtonRelease 이벤트를 디버깅하는 방법은 무엇입니까?

며칠 전 두 버튼을 동시에 놓았을 때 마우스 버튼 릴리즈가 인식되지 않는 경우가 있었습니다. 따라서 한 버튼의 논리적 상태가 "누름" 상태에 고정되어 다시 눌러 재설정할 때까지 성가신 예상치 못한 동작이 발생합니다.

할 수 있다마우스 이벤트 모니터링과 관련된 문제가 재현되었습니다 xev(출력이 때때로 예상되는 키 릴리스 이벤트를 표시하지 않음). 나할 수 없다이벤트를 모니터링하여 문제를 재현합니다 /sys/kernel/debug/usb/usbmon(출력은 항상 실제 상황과 일치함).

따라서 결함은 분명히 X11 아래에 있지만 USB 위에 있는 일부 추상적인 소프트웨어 구성 요소에 있습니다.

원인은 무엇일까요? 어떻게 하면 범위를 더 좁힐 수 있나요?

답변1

USB 이벤트와 X 이벤트 간의 레벨은 다음과 같습니다.

  • 마우스가 특별하고 자체 드라이버가 있지 않는 한 HID 장치일 가능성이 높습니다. 해당 hidraw장치(선택됨 dmesg)를 찾아 해당 장치에서 이벤트를 받고 있는지 확인하세요. USB에서 HID로의 변환은 커널에 의해 수행됩니다.

  • 모든 입력 이벤트는 해당 장치가 있는 입력 계층을 통해 커널을 떠납니다 /dev/input. 루트로 실행하고 evtest마우스를 선택하여 이벤트가 수신되는지 확인합니다. HID 이벤트에서 입력 이벤트로의 변환은 커널에 의해 수행됩니다.

  • X는 대부분의 경우 모든 입력 장치에 대한 드라이버를 자동으로 로드합니다 evdev. /var/log/Xorg.0.log어떤 드라이버가 로드되었는지 확인하세요 . 이러한 드라이버는 입력 이벤트를 X 이벤트로 변환합니다.

관련 정보