私は2つのロジクールトラックボール、Wireless TrackMan FXとMarble Mouseを持っています。どちらもevtest
:BTN_LEFT
、、、で同じボタンセットを報告しますBTN_RIGHT
が、それぞれ物理ボタンは4つしかありません。 TrackMan FXは、左、右、中央、側面など、私が望む正確なイベントを送信します。ところでMarble Mouseが代わりに転送していて、再マッピングしたいと思います。BTN_MIDDLE
BTN_SIDE
BTN_EXTRA
BTN_EXTRA
BTN_MIDDLE
この回答私が望むものを正確に扱っているようで、hwdbがこれを行うのに適した場所のようです。残念ながら、これは半分しか機能しません。なぜクリックで生成された2つの異なる入力イベントに関連しているのかわかりません。evtest
FXのフィールドヒットレポートは次のとおりです(明確にするために無関係のタイムスタンプは省略されています)。
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に似ています。イベントは正しく表示されますが、evtest
libinputではこれを見ることはできません。
Solaarは私のデバイスをサポートしていないようで、入力リマッパーを使用して役に立つタスクを実行するには太すぎます。