Waylandでマウスボタンを再マッピング

Waylandでマウスボタンを再マッピング

私は2つのロジクールトラックボール、Wireless TrackMan FXとMarble Mouseを持っています。どちらもevtestBTN_LEFT、、、で同じボタンセットを報告しますBTN_RIGHTが、それぞれ物理ボタンは4つしかありません。 TrackMan FXは、左、右、中央、側面など、私が望む正確なイベントを送信します。ところでMarble Mouseが代わりに転送していて、再マッピングしたいと思います。BTN_MIDDLEBTN_SIDEBTN_EXTRABTN_EXTRABTN_MIDDLE

この回答私が望むものを正確に扱っているようで、hwdbがこれを行うのに適した場所のようです。残念ながら、これは半分しか機能しません。なぜクリックで生成された2つの異なる入力イベントに関連しているのかわかりません。evtestFXのフィールドヒットレポートは次のとおりです(明確にするために無関係のタイムスタンプは省略されています)。

type 4 (EV_MSC), code 4 (MSC_SCAN), value 90003
type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1

MarbleMouseで変更されていないクリック:

type 4 (EV_MSC), code 4 (MSC_SCAN), value 90005
type 1 (EV_KEY), code 276 (BTN_EXTRA), value 1

だから私の99-marblebutton.hwdbファイルは次のようになります

evdev:input:b0003v046DpC408*
 ID_INPUT_KEY=1
 KEYBOARD_KEY_90005=btn_middle

結果入力イベントが修正されます。

type 4 (EV_MSC), code 4 (MSC_SCAN), value 90005
type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1

そのため、イベントを受け取りましたが、BTN_MIDDLE関連するMSC_SCAN値がまだ間違っているため、中間クリックがどこにも認識されないため、影響を与えるようです。実際に有効な入力イベントとは見なされないようです。libinput debug-events以下を使用して、変更されていないイベントを表示できます。

event7   POINTER_BUTTON          +97.374s      BTN_EXTRA (276) pressed, seat count: 1

hwdbの設定が完了した後、同じボタンを押しても何も報告されず、wevイベントは表示されません。

私が試した他のものには、swaywmでの再マッピングが含まれます。これは機能しますが、特定のアプリケーションでのみ機能します。

set $MOUSE "1133:50184:Logitech_USB_Trackball"
bindsym --input-device=$MOUSE --whole-window BTN_EXTRA seat - cursor press BTN_MIDDLE
bindsym --input-device=$MOUSE --whole-window --release BTN_EXTRA seat - cursor release BTN_MIDDLE

ブロックツールEV_KEYそしてイベントを「修正」するEV_MSCフィルタを作成します。効果はhwdbに似ています。イベントは正しく表示されますが、evtestlibinputではこれを見ることはできません。

Solaarは私のデバイスをサポートしていないようで、入力リマッパーを使用して役に立つタスクを実行するには太すぎます。

関連情報