私は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として機能します...
- 上記のリンクに従ってビルド依存関係をインストールします(たとえば、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
。- 再起動。
これは可能です。