マウスボタンの再プログラミング

マウスボタンの再プログラミング

ノックスクロム神田マウスを受け取りました。ちょっといいですが、まだ頑張っています。 Linux(debian jessie)でQuake 4をプレイしている間、左ボタンの1つが認識されず、右ボタンが弾丸1つだけを発射することがわかりました。

xevを使用してマウスイベントを確認した後、機能しないような左マウスボタンがボタン9にマップされているのに対して、右ボタンはデフォルトでボタン1と重複していることがわかりました。押すとボタン1を押して離したというメッセージが送信されます。

したがって、デフォルトでは役に立ちません。 Windowsでは、マウスにボタンの再プログラミング用のソフトウェアを含むCDが付属しています。迷惑、わかりました。しかし、私はちょうどそのボタンからそのクソ"自動発射"機能を取り除きたいだけだ。うまくいったようですが、Linuxを再起動すると、すべてが戻ってきました。

ワインを使ってソフトウェアを実行してみましたが、マウスを検出できず、virtualboxも検出できませんでした(両方とも汎用マウスを検出しました)。 Linuxで再プログラミングする方法はありますか?それとも別のマウスが必要ですか?ありがとうございます。

ベストアンサー1

最初のステップは、物理的なボタンが何であるかを調べることです。汎用ゲームマウス(私の場合はSaitek RAT3)を再マッピングするプロセスについて説明します。一般的な手順はすべてのマウスに適用されます。

  1. xinput listマウスのIDと名前を学ぶ
  2. xinput query-state {id}すべてのボタンの状態を確認してください。この機会を利用してマウスボタンの数を数えます。このプロセスをサポートするには、watch -n0 xinput query-state {id}保留するクエリを実行してください。
  3. 特別な動作を示すボタンを識別してください。
  4. どのボタンにどのボタンIDがあるかを記録してください。
  5. 50-mousename名前がtoのファイルを追加し、お気に入りの/usr/share/X11/xorg.conf.d/エディタで開きます。次のテンプレートを挿入してください。

    Section "InputClass"
        Identifier     "Mouse Remap"
        MatchProduct   "{mouse name}"
        MatchDevicePath "/dev/input/event*"
        Option         "ZAxisMapping" "4 5"
        Option         "ButtonMapping" "1 2 3 4 5 6 7 8 9 0 0 0 0 0"
        Option         "Resolution" "3200" #you will probably have to change this!
    

    重要な行は次のとおりです。Option "ButtonMapping" "1 2 3"... 以前に作成したボタンのリストを覚えていますか?このオプションは、どの物理ボタンがどのボタンイベントに対応するかを決定します。

    "1 2 3"「物理ボタン1」は「ボタンイベント1」、「物理ボタン2」は「ボタンイベント2」等を意味する。たとえば、スクロールホイールと右クリックを切り替えるには、「3 2 1」に変更します。わからない場合は、次の表を確認してください。

    | Physical Button | Button Event | normal action |
    |-----------------|--------------|---------------|
    |Left             |            1 |        select |
    |Middle           |            2 | paste/depends |
    |Right            |            3 |  context menu |
    |Scroll Up        |            4 |  context menu |
    |Scroll Down      |            5 |  context menu |
    |Custom           |           6+ |       depends |
    

    ボタンを無効にするには、その場所に0を入力します。たとえば、マウスの中央ボタンを無効にするには"1 0 3 4 5 6 7 8 9 ..."

この内容を適用するには、ログインしてログアウトする必要があります。

あまり言葉にならないようなので、私の過程をお見せしましょう。

username@hostname ~> xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Saitek Cyborg R.A.T.3 Mouse               id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳   USB Keyboard                            id=10   [slave  keyboard (3)]
    ↳   USB Keyboard                            id=11   [slave  keyboard (3)]

わかりました。私のデバイス名Saitek Cyborg R.A.T.3 MouseのIDは12です。

notafile@notapc ~> xinput query-state 12
2 classes :
ButtonClass
    button[1]=up
    button[2]=up
    button[3]=up
    button[4]=up
    button[5]=up
    button[6]=up
    button[7]=up
    button[8]=up
    button[9]=up
    button[10]=down
    button[11]=up
    button[12]=up
    button[13]=up
    button[14]=up
    button[15]=up
    button[16]=up
    button[17]=up
    button[18]=up
ValuatorClass Mode=Relative Proximity=In
    valuator[0]=1351
    valuator[1]=403
    valuator[2]=-372

だから私のマウスには合計18個のボタンがあります。私が見つけたマッピングは次のとおりです。

| Number | Button      |
|--------|-------------|
| 1      | Left        |
| 2      | Middle      |
| 3      | Right       |
| 4      | scroll up   |
| 5      | scroll down |
| 8      | upper thumb |
| 9      | lower thumb |
| 10     | mode red    |
| 11     | mode blue   |
| 12     | mode purple |
| 13     | DPI up      |
| 14     | DPI down    |

このマウスには特別な動作をするいくつかのボタンがあります。モードボタンをもう一度押すまで、ボタン10-12が押し続けられます。この問題は「AutoRelease」オプションを使用して解決できます。

したがって、私たちのマッピングは非常に簡単でなければなりません。ボタン1-5は通常のボタン、8と9はカスタムボタン、6-7と10+は実際には必要ないボタンです。結果マップは次のとおりです"1 2 3 4 5 0 0 0 8 9 0 0 0 0 0 0 0 0 0"。項目数がボタンに等しくなるように(この場合は18)、末尾にゼロを埋める必要があります。

私は終わった!これで、設定ファイルに挿入して/usr/share/X11/xorg.conf.d/50-saitek-rat3ログアウトしてから再度ログインします。

これが私の最終構成です。

Section "InputClass"
    Identifier     "Mouse Remap"
    MatchProduct   "Saitek Cyborg R.A.T.3 Mouse"
    MatchDevicePath "/dev/input/event*"
    Option         "ZAxisMapping" "4 5"
    Option         "ButtonMapping" "1 2 3 4 5 0 0 0 8 9 0 0 0 0 0 0 0 0 0"
    Option         "Resolution" "3200"
EndSection

おすすめ記事