Libinput

libinput 按鈕滾動:按鈕按下和滾動之間的延遲

  • February 24, 2022

我正在使用 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

我什麼時候開始移動球並不重要——關鍵是在“按下按鈕”和“好的,準備好將移動轉換為滾動”之間有一個固定的延遲。

似乎存在此延遲以啟用雙模式按鈕使用。如果我只是快速按下並釋放按鈕,則會執行其正常功能(瀏覽器“返回”按鈕)。

(有趣的是,即使在滾動輸出開始之前,按下按鈕時游標也會立即靜止。)

有沒有辦法配置這個延遲?如有必要,我非常樂意犧牲雙模式使用。即使不可配置,誰定義了這個常量,在哪裡定義?也許我可以改變它的來源。

您可以更改@henrebotha 突出顯示的值並自己編譯libinput 以達到預期的效果。

這種延遲讓我感到沮喪,所以我修改了DEFAULT_BUTTON_SCROLL_TIMEOUT常量(在原始碼中找到並編譯,這似乎解決了問題。過去一個小時一直在測試,沒有觀察到奇怪的行為。

我按照此頁面中的步驟進行操作。像我以前遇到問題一樣以root身份做所有事情……

  1. 按照上面的連結安裝建構依賴項(例如,在 Ubuntu 上對我來說)。
  • sudo pip3 install meson.
  • sudo apt-get install ninja-build.
  • sudo apt-get build-dep libinput.
  1. git clone https://gitlab.freedesktop.org/libinput/libinput.
  2. cd libinput.
  3. 編輯./src/evdev.c:53到您想要的時間(50對我有好處)。即從#define DEFAULT_BUTTON_SCROLL_TIMEOUT ms2us(200)#define DEFAULT_BUTTON_SCROLL_TIMEOUT ms2us(50)
  4. sudo meson --prefix=/usr builddir/.
  5. sudo ninja -C builddir/.
  6. sudo ninja -C builddir/ install.
  7. 重啟。

那應該這樣做。

引用自:https://unix.stackexchange.com/questions/499959