나는 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
이 지연으로 인해 좌절감을 느껴 상수 (소스 코드에 있음)를 수정했습니다 .여기컴파일해 보니 문제가 해결된 것 같았습니다. 지난 한 시간 동안 테스트한 결과 이상한 동작은 관찰되지 않았습니다.
나는 다음 단계를 따랐다.이 페이지. 이전에 문제가 있었던 것처럼 모든 것이 루트로 작동합니다 ...
- 위의 링크를 따라 빌드 종속성을 설치하십시오(예를 들어 Ubuntu의 경우).
sudo pip3 install meson
.sudo apt-get install ninja-build
.sudo apt-get build-dep libinput
.
git clone https://gitlab.freedesktop.org/libinput/libinput
.cd libinput
../src/evdev.c:53
원하는 시간으로 편집하세요 (50
나에게 좋습니다). 에서#define DEFAULT_BUTTON_SCROLL_TIMEOUT ms2us(200)
까지 입니다#define DEFAULT_BUTTON_SCROLL_TIMEOUT ms2us(50)
.sudo meson --prefix=/usr builddir/
.sudo ninja -C builddir/
.sudo ninja -C builddir/ install
.- 재시작.
이 작업이 가능해야 합니다.
답변2
libinput 저장소 /src/evdev.c:53
(Git commit df527b07b47f5f512db48f0c30c76137d173e230
)에서 발견된 하드코딩된 상수:
#define DEFAULT_BUTTON_SCROLL_TIMEOUT ms2us(200)
안타깝게도 이는 구성할 수 없음을 의미합니다.