libinput 버튼 스크롤: 버튼 누름과 스크롤 사이의 지연

libinput 버튼 스크롤: 버튼 누름과 스크롤 사이의 지연

나는 libinput을 사용하여 내 트랙볼에 대해 "버튼 스크롤"을 활성화하고 있습니다. 여기서 특정 버튼을 누르고 있으면 공 모션이 롤링 모션으로 변환됩니다.

xinput set-prop $TRACKBALL_ID "libinput Scroll Method Enabled" 0, 0, 1
xinput set-prop $TRACKBALL_ID "libinput Button Scrolling Button" 8

그러나 버튼을 누른 후 스크롤 번역이 시작되는 사이에는 수백 밀리초의 지연이 있을 수 있습니다. 타임라인은 이렇습니다.

+---+---+-------
^   ^   ^
|   |   +-- scrolling starts
|   +-- start moving ball
+-- button down

공을 언제 움직이기 시작하는지는 중요하지 않습니다. 중요한 것은 "버튼을 눌렀을 때"와 "좋아요, 움직임을 굴림으로 변환할 준비가 되었습니다" 사이에 고정된 지연이 있다는 것입니다.

듀얼 모드 버튼을 사용할 수 있도록 하기 위해 이러한 지연이 존재하는 것으로 보입니다. 버튼을 빠르게 눌렀다가 놓으면 일반 기능(브라우저 "뒤로" 버튼)이 수행됩니다.

(흥미롭게도 스크롤 출력이 시작되기 전이라도 버튼을 누른 직후 커서가 멈춥니다.)

이 지연을 구성하는 방법이 있나요? 필요한 경우 듀얼 모드 사용을 희생할 수 있어서 기쁩니다. 구성할 수 없더라도 이 상수는 누가, 어디서 정의합니까? 어쩌면 나는 그것이 어디서 왔는지 바꿀 수 있습니다.

답변1

@henrebotha가 강조한 값을 변경하고 libinput을 직접 컴파일하여 원하는 효과를 얻을 수 있습니다.

DEFAULT_BUTTON_SCROLL_TIMEOUT이 지연으로 인해 좌절감을 느껴 상수 (소스 코드에 있음)를 수정했습니다 .여기컴파일해 보니 문제가 해결된 것 같았습니다. 지난 한 시간 동안 테스트한 결과 이상한 동작은 관찰되지 않았습니다.

나는 다음 단계를 따랐다.이 페이지. 이전에 문제가 있었던 것처럼 모든 것이 루트로 작동합니다 ...

  1. 위의 링크를 따라 빌드 종속성을 설치하십시오(예를 들어 Ubuntu의 경우).
    • sudo pip3 install meson.
    • sudo apt-get install ninja-build.
    • sudo apt-get build-dep libinput.
  2. git clone https://gitlab.freedesktop.org/libinput/libinput.
  3. cd libinput.
  4. ./src/evdev.c:53원하는 시간으로 편집하세요 ( 50나에게 좋습니다). 에서 #define DEFAULT_BUTTON_SCROLL_TIMEOUT ms2us(200)까지 입니다 #define DEFAULT_BUTTON_SCROLL_TIMEOUT ms2us(50).
  5. sudo meson --prefix=/usr builddir/.
  6. sudo ninja -C builddir/.
  7. sudo ninja -C builddir/ install.
  8. 재시작.

이 작업이 가능해야 합니다.

답변2

libinput 저장소 /src/evdev.c:53(Git commit df527b07b47f5f512db48f0c30c76137d173e230)에서 발견된 하드코딩된 상수:

#define DEFAULT_BUTTON_SCROLL_TIMEOUT ms2us(200)

안타깝게도 이는 구성할 수 없음을 의미합니다.

관련 정보