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時間のテストの結果、奇妙な動作は観察されませんでした。

私は次のステップに従いました。このページ。以前に問題があったように、すべてがrootとして機能します...

  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. 再起動。

これは可能です。

おすすめ記事