스크롤 방향을 바꾼 후 마우스 스크롤 이벤트가 손실되는 원인은 무엇입니까?

스크롤 방향을 바꾼 후 마우스 스크롤 이벤트가 손실되는 원인은 무엇입니까?

저는 Xorg와 libinput이 있는 x86_64 시스템에서 Ubuntu 22.04.2를 사용하고 있습니다.

Logitech MX Master 마우스(첫 번째 모델)를 사용하고 있는데 스크롤할 때 이상한 동작을 발견했습니다. 마우스에는 "노치" 모드로 설정할 수 있는 자유 회전 스크롤 휠이 있어 각 스크롤 이벤트에 고유한 촉각 피드백을 제공합니다.

문제는 스크롤 이벤트가 가끔 누락된다는 것입니다. 예를 들어, Firefox 또는 IDE 창을 스크롤할 때 휠을 한 칸 움직여도 시각적 효과가 없지만 후속 사각형은 제대로 작동하는 경우가 있습니다.

좁혀보면 그럴듯하다대체 방향의 첫 번째 노치항상 폐기됩니다. 즉, 세 칸 아래로 스크롤하면 시각적 응답이 세 개의 스크롤 이벤트에 해당하고, 한 칸 위로 스크롤하면 응답이 없습니다. 두 번째 상승 이벤트는 시각적인 반응을 이끌어냅니다.

나는 그것을 사용했으며 xev -event button스크롤 휠을 한 단계 위/아래로 움직이면 ButtonPress 또는 ButtonRelease 이벤트가 명확하게 표시되지 않습니다. 새로운 사건을 보려면 방향을 바꿔서 두 단계 움직여야 합니다.

내가 사용했고 evtest장치 libinput debug-events자체는 확실히 스크롤 휠 동작에 대해 올바른 하위 수준 메시지를 생성하므로 하위 수준 및 하드웨어가 제대로 작동합니다.

~에서이것문제, 이것은 libinput에 문제가 있음을 나타내는 것 같습니다. 스택에서 살펴볼 다음 구성 요소는 무엇입니까?

편집: 이것이 xev문제를 보여주지만 libinput debug-events그렇지 않다는 점을 감안할 때 가장 먼저 살펴볼 곳은 xf86-input-libinput자체 버전을 구축했으며 곧 디버깅을 시작할 것입니다...

EDIT2: 디버깅 후 xf86-input-libinputlibinput에서 이 레이어로 들어오는 데이터가 완전하고 올바르게 보이는 것을 확인했지만 X11 입력 이벤트로 변환하면 일부 데이터가 손실되는 것 같습니다. 불행하게도 로그에 라이브 디버그 출력이 있으면 문제가 해결되므로 이것이 일종의 타이밍 관련 상황인지, 스크롤 휠 위치 추정과 관련된 것인지 궁금합니다. 시간이 나면 더 깊이 파헤쳐 보겠습니다.

답변1

Xorg 및 libinput을 사용하는 Pop!_OS 22.04 x86_64와 Logitech G502 Lightspeed 마우스에서 동일한 문제가 발생했습니다. 스크롤 방향을 반전한 후 매번 첫 번째 스크롤 노치가 누락됩니다. 테스트를 해보았 xev -event button는데 동일한 결과가 나타났습니다.

실제로 질문에 대한 답변이 아니기 때문에 이것을 댓글로 게시하고 싶지만 아직 이에 대한 평판이 충분하지 않습니다. 최소한 이것은 몇 가지 추가 정보를 추가하고 이 문제의 존재를 확인할 수 있습니다. 아마도 Logitech과 관련이 있을까요?

편집: 저에게는 시스템 설정 및 byobu 터미널 창과 같은 일부 창에서 첫 번째 스크롤 노치가 올바르게 감지되었습니다. Firefox와 Steam을 통해 플레이한 일부 게임에서는 방향을 바꾸면 첫 번째 간격이 누락됩니다.

편집 2: Firefox는 기본적으로 Xinput 1(?)을 사용하는 것으로 나타났습니다. Firefox를 시작하기 전에 MOZ_USE_XINPUT2설정할 수 있는 환경 변수가 있는데 , 1이것이 제 문제를 해결해 주는 것 같습니다.이 버그질라 스레드Xinput2의 사용과 스크롤/터치스크린 입력에 대한 논의가 있습니다. 환경 변수를 설정하면 휠이 잠금 해제되었을 때(예: 노치/햅틱 모드가 아닌 경우) 항상 미리 정의된 양만큼 움직이는 대신 부드럽게 스크롤할 수 있습니다. 이는 문제가 노치/촉각 스크롤을 달성하기 위해 부드러운 스크롤 휠(Xinput 1에서)을 사용하는 것과 관련이 있을 수 있음을 나타냅니다.

관련 정보