デュアルスクロールホイールマウスがスクロールホイールが1つしかないかのように動作するのはなぜですか?

デュアルスクロールホイールマウスがスクロールホイールが1つしかないかのように動作するのはなぜですか?

私は2つのスクロールホイールと5つの「ボタン」(中央の最初のスクロールホイールの「クリック」ボタンを含む3つ)と左右のボタン(下の図の暗い部分)を持つ光学式GreatEyeホイールマウスを持っています。出力がxinput --list-props正しいようです両方スクロールホイールがボタン6と7で動作する2番目のボタンの代わりにボタン4と5のように動作するのはなぜですか?どうすれば解決できますか?(2番目のスクロールホイールを水平スクロールホイールのように機能させるには)?

A4Tech Optical GreatEyeホイールラットメーカー製品写真

上の写真のソースは次のとおりです。A4技術ウェブサイト

出力。xinput list-props #ここで、#は正しいデバイスIDです。

Device 'ImExPS/2 Generic Explorer Mouse':
    Device Enabled (142):   1
    Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (269): 0
    Device Accel Constant Deceleration (270):   1.000000
    Device Accel Adaptive Deceleration (271):   1.000000
    Device Accel Velocity Scaling (272):    10.000000
    Device Product ID (261):    2, 6
    Device Node (262):  "/dev/input/event1"
    Evdev Axis Inversion (273): 0, 0
    Evdev Axes Swap (275):  0
    Axis Labels (276):  "Rel X" (152), "Rel Y" (153), "Rel Horiz Wheel" (267), "Rel Vert Wheel" (268)
    Button Labels (277):    "Button Left" (145), "Button Middle" (146), "Button Right" (147), "Button Wheel Up" (148), "Button Wheel Down" (149), "Button Horiz Wheel Left" (150), "Button Horiz Wheel Right" (151), "Button Side" (265), "Button Extra" (266), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264)
    Evdev Scrolling Distance (278): 1, 1, 1
    Evdev Middle Button Emulation (279):    0
    Evdev Middle Button Timeout (280):  50
    Evdev Third Button Emulation (281): 0
    Evdev Third Button Emulation Timeout (282): 1000
    Evdev Third Button Emulation Button (283):  3
    Evdev Third Button Emulation Threshold (284):   20
    Evdev Wheel Emulation (285):    0
    Evdev Wheel Emulation Axes (286):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (287):    10
    Evdev Wheel Emulation Timeout (288):    200
    Evdev Wheel Emulation Button (289): 4
    Evdev Drag Lock Buttons (290):  0

両方のスクロールホイールを使用して、表示されたxevイベントが同じであることがわかりました。私にとって、これはカーネル/モジュールの問題であることを示唆しています。私はバックポートでDebian "Jessie"を使用しています。後者は現在、次のようなものを使用していることを意味しますuname -a

Linux XXXXX 4.9.0-0.bpo.1-rt-amd64 #1 SMP PREEMPT RT Debian 4.9.2-2~bpo8+1 (2017-01-26) x86_64 GNU/Linux

推測的な仮説として私は知りたいです。 (実際に複数のラットを持つラットの数が限られていることを考えると)本物スクロールホイール)これが実際にカーネルに関連している可能性はありますか?それでは、補足的な答えで問題が何であるかについての詳細情報をどこで見つけることができますか?

更新:次の理由で私が間違っている可能性があります。

Evdev Wheel Emulation Axes (286):     0, 0, 4, 5

しなければならない:

Evdev Wheel Emulation Axes (286):     6, 7, 4, 5

しかし、xinput set-props # 286 6 7 4 5#を正しいID番号に変更するだけでは何の変更もありません...

奇妙なことに、grep私の/var/log/Xorg.0.logファイルを-pingすると、次のようになります。

[    46.173] (II) config/udev: Adding input device ImExPS/2 Generic Explorer Mouse (/dev/input/event1)
[    46.173] (**) ImExPS/2 Generic Explorer Mouse: Applying InputClass "evdev pointer catchall"
[    46.173] (**) ImExPS/2 Generic Explorer Mouse: Applying InputClass "evdev pointer catchall"
[    46.173] (II) Using input driver 'evdev' for 'ImExPS/2 Generic Explorer Mouse'
[    46.173] (**) ImExPS/2 Generic Explorer Mouse: always reports core events
[    46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: Device: "/dev/input/event1"
[    46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Vendor 0x2 Product 0x6
[    46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found 9 mouse buttons
[    46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found scroll wheel(s)
[    46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found relative axes
[    46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found x and y relative axes
[    46.173] (II) evdev: ImExPS/2 Generic Explorer Mouse: Configuring as mouse
[    46.173] (II) evdev: ImExPS/2 Generic Explorer Mouse: Adding scrollwheel support
[    46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: YAxisMapping: buttons 4 and 5
[    46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[    46.173] (II) XINPUT: Adding extended input device "ImExPS/2 Generic Explorer Mouse" (type: MOUSE, id 9)
[    46.174] (II) evdev: ImExPS/2 Generic Explorer Mouse: initialized for relative axes.
[    46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) keeping acceleration scheme 1
[    46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration profile 0
[    46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration factor: 2.000
[    46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration threshold: 4
[    46.174] (II) config/udev: Adding input device ImExPS/2 Generic Explorer Mouse (/dev/input/mouse0)

1行が含まれていますが、YAxisMapping: buttons 4 and 5該当するものはありませんXAxisMapping: buttons 6 and 7。これは暗黙的です...

メモ:(コメントへの応答)PS / 2コネクタマウスなので、USB関連の診断はおそらく役に立ちません。

パッケージを取り付けた後、evtest2つのローラーのイベントは同じですtype 2 (EV_REL)code 8 (EV_WHEEL)、最初のホイールには(または2つの反対方向に移動するため)がありますが、2番目のホイールにはまたはvalue 1があることを確認しました。興味深いことに、使用中に一部のアプリケーションでは、2番目のスクロールホイールがスクロールアクションを生成することがわかりました。-1value 2-2二重最初の大きさです。いくつかのコードが値を「方向」ではなく移動量として誤って解釈するように聞こえ始めました!

ベストアンサー1

これに気づいたようだ十五何年も前に!数日(2002年7月17-18日)にわたってLinuxカーネルメーリングリストに掲載された「PS2入力コアのサポート」というタイトルの一連の投稿には、この問題が知られていますが、具体的に処理する方法はいくつかあります。を表します。製品の場合は、同じデータを処理するために手動モジュールパラメーターを使用する必要があります。しかし、これは決して実を結ばなかったようです。詳しくはご覧になるのが一番ですこれ郵便はがき:

...

問題は、A4Techドライバが気にしないということです。これは私が説明したように着信データを解釈します。 +-1 は垂直移動、+-2 は水平移動、0 は移動なし、その他すべては無視されます。これはA4TechのImPS / 2の説明です。 ExPS/2 プロトコル。

したがって、GPMのようにホイールの動きは+-1のみ可能であると仮定することができ、+-2が水平方向の動きであると安全に仮定することができます。

私のすべての(A4Tech ...)PS / 2ホイールマウスは、10 Hzのサンプリングレートでも+ -1ホイールの動きだけを報告しますが、私のマウスがExPS / 2で達成できる代表的なサンプルだとは思いません。

いいえ、通常のImPS / 2およびExPS / 2マウスは実際に1より大きいホイールの動き値を報告できます。

いくつかの経験的方法を使用するか(3つの動きを見たことがありますか?それではA4Techマウスではありません...)、コマンドライン引数を使用できます。

私はいくつかのA4Techマウスを取り出し、少し拷問して特定のシーケンスに反応することを確認する必要があると思いました...

もう一つの点は、ボタンを使用してスクロールホイールを区別するUSB​​ A4Techマウスです。一方、USB仕様はマウスに2つのスクロールホイールを割り当てます。 :(. しかし、少なくとも検出は可能です。

-
Vojtech Pavlik
SuSEラボ

だから私はいくつかのカーネルハックを実行し、./drivers/input/mouse/psmouse_base.cアクティブになったときに問題を解決するためにマウスから読み取られたデータを破損するモジュール引数を追加します。psmouse_typePSMOUSE_IMEX

さて、今私に合うものがあり、Linuxカーネル入力グループ領域に投稿しました。入力:psmouse - A4Techデュアルホイールマウスの2番目のスクロールホイールを修正ただし、少数のユーザーにのみ機能するため、追加されるかどうかはわかりません。パッチは非常にマイナーですが、PS / 2と互換性のない他のマウスの動作を変更するため、マウスプロトコルは基本的により一般的な方法で有効になりません。モジュールとして、現在システムで使用されているすべてを介してアクティブにすることができます。デモの場合は、option psmouse a4tech_hack=1まずハッキングを無効にしてください。modules.confevtest

stephen@Ripley:~$ sudo modprobe psmouse options a4tech_hack=0 stephen@Ripley:~$ sudo evtest --grab /dev/input/event1 Input driver version is 1.0.1 Input device ID: bus 0x11 vendor 0x2 product 0x6 version 0x0 Input device name: "ImExPS/2 Generic Explorer Mouse" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 272 (BTN_LEFT) Event code 273 (BTN_RIGHT) Event code 274 (BTN_MIDDLE) Event code 275 (BTN_SIDE) Event code 276 (BTN_EXTRA) Event type 2 (EV_REL) Event code 0 (REL_X) Event code 1 (REL_Y) Event code 6 (REL_HWHEEL) Event code 8 (REL_WHEEL) Properties: Property type 0 (INPUT_PROP_POINTER) Testing ... (interrupt to exit) Event: time 1511190325.037494, type 2 (EV_REL), code 8 (REL_WHEEL), value -1 Event: time 1511190325.037494, -------------- SYN_REPORT ------------ Event: time 1511190325.069545, type 2 (EV_REL), code 8 (REL_WHEEL), value -1 Event: time 1511190325.069545, -------------- SYN_REPORT ------------ Event: time 1511190325.103279, type 2 (EV_REL), code 8 (REL_WHEEL), value -1 Event: time 1511190325.103279, -------------- SYN_REPORT ------------ Event: time 1511190325.360609, type 2 (EV_REL), code 8 (REL_WHEEL), value -1 Event: time 1511190325.360609, -------------- SYN_REPORT ------------ Event: time 1511190325.754597, type 2 (EV_REL), code 8 (REL_WHEEL), value -2 Event: time 1511190325.754597, -------------- SYN_REPORT ------------ Event: time 1511190326.226203, type 2 (EV_REL), code 8 (REL_WHEEL), value 2 Event: time 1511190326.226203, -------------- SYN_REPORT ------------ Event: time 1511190326.335886, type 2 (EV_REL), code 8 (REL_WHEEL), value -2 Event: time 1511190326.335886, -------------- SYN_REPORT ------------ Event: time 1511190326.420238, type 2 (EV_REL), code 8 (REL_WHEEL), value -2 Event: time 1511190326.420238, -------------- SYN_REPORT ------------ Event: time 1511190326.849670, type 2 (EV_REL), code 8 (REL_WHEEL), value -2 Event: time 1511190326.849670, -------------- SYN_REPORT ------------

次に、有効にした後、値が+ / - 2のREL_WHEELイベントがどのようにREL_HWHEELイベントに正しくマップされているかを確認します。

stephen@Ripley:~$ sudo modprobe -r psmouse stephen@Ripley:~$ sudo modprobe psmouse options a4tech_hack=1 stephen@Ripley:~$ sudo evtest --grab /dev/input/event1 Input driver version is 1.0.1 Input device ID: bus 0x11 vendor 0x2 product 0x6 version 0x0 Input device name: "ImExPS/2 Generic Explorer Mouse" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 272 (BTN_LEFT) Event code 273 (BTN_RIGHT) Event code 274 (BTN_MIDDLE) Event code 275 (BTN_SIDE) Event code 276 (BTN_EXTRA) Event type 2 (EV_REL) Event code 0 (REL_X) Event code 1 (REL_Y) Event code 6 (REL_HWHEEL) Event code 8 (REL_WHEEL) Properties: Property type 0 (INPUT_PROP_POINTER) Testing ... (interrupt to exit) Event: time 1511190624.369531, type 2 (EV_REL), code 8 (REL_WHEEL), value 1 Event: time 1511190624.369531, -------------- SYN_REPORT ------------ Event: time 1511190625.580824, type 2 (EV_REL), code 8 (REL_WHEEL), value -1 Event: time 1511190625.580824, -------------- SYN_REPORT ------------ Event: time 1511190626.139235, type 2 (EV_REL), code 8 (REL_WHEEL), value 1 Event: time 1511190626.139235, -------------- SYN_REPORT ------------ Event: time 1511190626.419281, type 2 (EV_REL), code 8 (REL_WHEEL), value -1 Event: time 1511190626.419281, -------------- SYN_REPORT ------------ Event: time 1511190626.693413, type 2 (EV_REL), code 8 (REL_WHEEL), value 1 Event: time 1511190626.693413, -------------- SYN_REPORT ------------ Event: time 1511190628.506133, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1 Event: time 1511190628.506133, -------------- SYN_REPORT ------------ Event: time 1511190628.669774, type 2 (EV_REL), code 6 (REL_HWHEEL), value -1 Event: time 1511190628.669774, -------------- SYN_REPORT ------------ Event: time 1511190628.921986, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1 Event: time 1511190628.921986, -------------- SYN_REPORT ------------ Event: time 1511190628.970915, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1 Event: time 1511190628.970915, -------------- SYN_REPORT ------------ Event: time 1511190629.235774, type 2 (EV_REL), code 6 (REL_HWHEEL), value -1 Event: time 1511190629.235774, -------------- SYN_REPORT ------------ Event: time 1511190629.425575, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1 Event: time 1511190629.425575, -------------- SYN_REPORT ------------ Event: time 1511190629.475333, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1 Event: time 1511190629.475333, -------------- SYN_REPORT ------------ Event: time 1511190629.668506, type 2 (EV_REL), code 6 (REL_HWHEEL), value -1 Event: time 1511190629.668506, -------------- SYN_REPORT ------------ Event: time 1511190629.730081, type 2 (EV_REL), code 6 (REL_HWHEEL), value -1 Event: time 1511190629.730081, -------------- SYN_REPORT ------------ Event: time 1511190629.862513, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1 Event: time 1511190629.862513, -------------- SYN_REPORT ------------ Event: time 1511190629.909745, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1 Event: time 1511190629.909745, -------------- SYN_REPORT ------------ Event: time 1511190630.139196, type 2 (EV_REL), code 6 (REL_HWHEEL), value -1 Event: time 1511190630.139196, -------------- SYN_REPORT ------------

おすすめ記事