スクロールの方向を変えた後にマウスのスクロールイベントが失われる原因は何ですか?

スクロールの方向を変えた後にマウスのスクロールイベントが失われる原因は何ですか?

私はXorgとlibinputを持つx86_64システムでUbuntu 22.04.2を使用しています。

Logitech MX Masterマウス(最初のモデル)を使用していますが、スクロールすると奇妙な動作が見つかりました。マウスには「ノッチ」モードに設定できる自由回転スクロールホイールがあり、各スクロールイベントに固有の触覚フィードバックを提供します。

問題は、スクロールイベントが時々欠落していることです。たとえば、Firefox または IDE ウィンドウをスクロールするときにホイールを一行移動しても視覚的な効果はありませんが、後続の四角形は正しく機能することがあります。

絞ってみるとそうだ代替方向の最初のノッチ常に廃棄されます。言い換えれば、3 つのカーソルを下にスクロールすると視覚的な応答が 3 つのスクロールイベントに対応し、1 つのカーソルをスクロールすると応答がありません。 2番目の上昇イベントは視覚的な反応をもたらします。

私はそれを使用しており、xev -event buttonスクロールホイールを1段階上下に動かすと、ButtonPressまたはButtonReleaseイベントが明確に表示されません。新しいイベントを表示するには、方向を変えて2段階移動する必要があります。

私が使用し、デバイスevtest自体libinput debug-eventsは間違いなくスクロールホイールの動作に対して正しい下位レベルのメッセージを生成するので、下位レベルとハードウェアは正常に動作します。

~からこれ問題、これはlibinputに問題があることを示すようです。スタックを見てみましょう、次のコンポーネントは何ですか?

編集:これはxev問題を示していますが、libinput debug-eventsそうではないことを考えると、最初に見てみるのは独自のバージョンを構築xf86-input-libinputし、すぐにデバッグを開始します。

EDIT2: デバッグ後にxf86-input-libinputlibinput からこのレイヤーに入ってくるデータが完全で正しく見えることを確認しましたが、X11 入力イベントに変換すると一部のデータが失われるようです。残念ながら、ログにライブデバッグ出力があると問題が解決するため、これがタイミングの種類の種類であるのか、スクロールホイールの位置推定に関連しているのか疑問に思います。時間が経つともっと深く掘り下げてみましょう。

答え1

Xorgとlibinputを使用したPop!_OS 22.04 x86_64とLogitech G502 Lightspeedマウスで同じ問題が発生しました。スクロール方向を反転した後、毎回最初のスクロールノッチがありません。テストしてみxev -event buttonましたが、同じ結果が出ました。

実際には質問に対する答えではないので、これをコメントとして投稿したいのですが、まだこれに対する評判が十分ではありません。少なくとも、これはいくつかの追加情報を追加し、この問題の存在を確認できます。おそらくLogitechと関連がありますか?

編集:私には、システム設定やbyobuターミナルウィンドウなど、一部のウィンドウで最初のスクロールノッチが正しく検出されました。 FirefoxとSteamを介してプレイした一部のゲームでは、方向を変えると最初の間隔がありません。

編集2:FirefoxはデフォルトでXinput 1(?)を使用していることがわかりました。 Firefoxを起動する前にMOZ_USE_XINPUT2設定できる環境変数がありますが、1これが私の問題を解決してくれるようです。このバグジラスレッドXinput2の使用とスクロール/タッチスクリーン入力についての議論があります。環境変数を設定すると、ホイールがロック解除されたとき(たとえば、ノッチ/ハプティックモードでない場合)、常に事前定義された量だけ移動するのではなく、スムーズにスクロールできます。これは、問題がノッチ/触覚スクロールを達成するために滑らかなスクロールホイール(Xinput 1で)を使用することに関連している可能性があることを示しています。

関連情報