最近Logitech M500を購入しました。
バス 002 デバイス 004: ID 046d: c069 Logitech, Inc. M500レーザーマウス
私が認識できるボタンは9つです。
- 左側に2つあります。
- ~について
- ホイールプレス
- ホイールが上にスクロールし、ホイールが下にスクロールします。
- ホイールは左にスライドし、ホイールは右にスライドします
最後の2つは私を狂わせます。ホイールをクリックしようとするたびに、誤って左のホイールボタンをクリックしてFirefoxが最後に訪問したページに移動します。これは非常に迷惑なことです。
簡単ですか? xevがどのボタンを表示するかを見つけて無効にします。間違った! xevは "ButtonPress / ButtonRelease"イベントを生成しませんが、代わりに奇妙な "LeaveNotify / EnterNotify / KeymapNotify"ペアを生成します。
LeaveNotifyイベント、シーケンス番号40、合成NO、ウィンドウ0x4a00001、 ルート0x94、下位0x0、時間2344319、(104,86)、ルート:(113,207)、 モード NotifyGrab, 詳細 NotifyAncestor, same_screen YES, フォーカスはい、ステータス0 EnterNotifyイベント、シーケンス番号40、合成NO、ウィンドウ0x4a00001、 ルート0x94、下位0x0、時間2344319、(104,86)、ルート:(113,207)、 モード NotifyUngrab, 詳細 NotifyAncestor, same_screen YES, フォーカスはい、ステータス0 KeymapNotifyイベント、シーケンス番号40、合成NO、ウィンドウ0x0、 キー:4294967188 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
これで、4294967188(32ビット整数の2の補数 - 役に立つ場合は108)が確かにキーコードになります。そうですか?また間違っています!水平ホイールの左/右ボタンと側面背面/前ボタンの番号は同じです。
これは私のデバイスxinputのリストです。
ロジクールUSBレーザーマウスID=15 [スレーブポインタ(2)] 7つのクラスに登録してください: 次から派生したクラス: 15. タイプ:XIButtonClass サポートされるボタン: 16 ボタンラベル:「ボタン左」「ボタン中央」「ボタン右」「ボタンホイール上」「ボタンホイール下」「ボタン水平ホイール左」「ボタン水平ホイール右」「ボタン側面」「ボタン追加」「ボタン前」 「戻るボタン」「操作ボタン」「不明なボタン」「不明なボタン」「不明なボタン」「不明なボタン」 ボタンの状態: 次から派生したクラス: 15. タイプ: XIValuatorClass 評価者0の詳細: タグ:RelX 範囲: -1.000000 - -1.000000 分解能: 1つの単位/メートル モード:相手 次から派生したクラス: 15. タイプ: XIValuatorClass 評価者1の詳細: タグ:Rel Y 範囲: -1.000000 - -1.000000 分解能: 1つの単位/メートル モード:相手 次から派生したクラス: 15. タイプ: XIValuatorClass 評価者2の詳細: タグ:相対水平ホイール 範囲: -1.000000 - -1.000000 分解能: 1つの単位/メートル モード:相手 次から派生したクラス: 15. タイプ: XIValuatorClass 評価者3の詳細: タグ:相対垂直ホイール 範囲: -1.000000 - -1.000000 分解能: 1つの単位/メートル モード:相手 次から派生したクラス: 15. タイプ: XIScrollClass ローリング評価者2情報 タイプ: 2(横) 増分: 1.000000 フラグ:0x0 次から派生したクラス: 15. タイプ: XIScrollClass ローリング評価者3情報 タイプ:1(垂直) 増分: -1.000000 フラグ:0x2(優先)
ボタンマッピングは通常と同じように見えます。それでは、ループで "xinput query-state $DEVNO"を呼び出す小さなスクリプトを書いて怖いボタンを押すとどうなりますか?あなたはそれを推測した:
カテゴリ2: ボタンクラス ボタン[1] =上 ボタン[2] =上 ボタン[3] =上 ボタン[4] =上 ボタン[5] =上 ボタン[6] =上 ボタン[7] =上 ボタン[8] =上 ボタン[9] =上 ボタン[10] =上 ボタン[11] =上 ボタン[12] =上 ボタン[13] =上 ボタン[14] =上 ボタン[15] =上 ボタン[16] =上 ValuatorClassモード=相対的な親密度=In 評価者[0]=538 評価者[1]=456 評価者[2]=-2 評価者[3]=-464
明らかに「下」と表示されていますが、常に「上」と表示されます。正しいButtonPressイベント(左/右など)を生成するマウスボタンは、期待どおりに広告を「下」と表示します。
答え1
ボタン8と9を使用してホイールを左右に傾けるLogitech M325があります。このスクリプトを使用して無効にします。
#!/bin/bash
set -eu
MOUSE_ID=$(xinput --list | grep Logitech | sed -r 's/.*id=([0-9]+).*/\1/')
if [ -n "$MOUSE_ID" ]; then
xinput set-button-map $MOUSE_ID 1 2 3 4 5 6 7 0 0
fi
答え2
簡単に言うと:質問xinput set-prop <deviceId> "libinput Horizontal Scroll Enabled" 0
出力<deviceId>
から値を取得できます。xinput -list
私はBluetooth Logitech M555bマウスを持っていますが、私は何度も倒れました(私は間違っています)、最後に倒れたときに断続的に「マウスの右ボタンのスクロール」音が鳴り始めました。コーディング中にコードが右にスクロールし続けることがわかりました。他の用途(例:インターネット検索、ゲームなど)では問題はまったく表示されません。
コマンドの使用を開始しましたが、xev
これらの拡散中にどのイベントも認識できませんでした。
代わりに、コマンドに従ってこれらの爆発が何度も発生するのをxinput --test <deviceId>
見ましたmotion a[2]=<bigNum>
。
その後、そのコマンドを使用すると、set to 1という属性がxinput --list-props <deviceId>
表示されます。 Horizontal Scroll Enabled
上部でTL; DRコマンドを使用して0に設定すると、バーストが停止します(代わりに値1を使用して再び有効にできます)。 0)順序)。
それが他の人に役立つことを願っています。