Linux
Xinput 按鍵映射和中鍵模擬
我有一個帶有 4 個物理按鈕的滑鼠(Kensington Slimblade 軌跡球),我們稱它們為 ABCD,外加 3 個軸:滑鼠 X、Y 和滾輪。
按鈕 A 和 B 開箱即用,作為主要按鈕(按鈕 1)和右鍵點擊(按鈕 3)。同時按下 A + B 會產生中間點擊(按鈕 2),這也很棒。
現在我想為自己的目的映射按鈕 C 和 D,但我找不到如何將按鈕 C 與 A+B 仿真分開映射。
使用預設按鈕映射,我得到這個映射:
physical buttons: A C B D xinput button-map: 1 2 3 4 5 6 7 8 9 10 11 12
如果我嘗試將按鈕 C 映射到 8 並將 D 映射到 9,
xinput set-button-map
則按 A+B 也會映射到按鈕 8!physical buttons: A C B D xinput button-map: 1 8 3 0 0 0 0 9 ^ A+B emulation becomes 8 too!
如何將按鈕 C 映射到任意按鈕編號,同時將 A+B 仿真保持為按鈕 2?
我應該在比 Xinput 更低的級別上工作嗎?如何?我應該使用不同的 Xinput 設置嗎?
編輯:這是
evtest
4 個按鈕的程式碼:A: type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001 type 1 (EV_KEY), code 272 (BTN_LEFT), value 1 B: type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002 type 1 (EV_KEY), code 273 (BTN_RIGHT), value 1 C: type 4 (EV_MSC), code 4 (MSC_SCAN), value ff000001 type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1 D: type 4 (EV_MSC), code 4 (MSC_SCAN), value ff000002 type 1 (EV_KEY), code 275 (BTN_SIDE), value 1
我最終修補了 Xorg evdev 驅動程序以添加一個 Emulate3Button 選項,該選項配置由中間按鈕仿真發出的按鈕編號。(我將更新檔送出到郵件列表,它遲早會被合併。)
然後我添加了這段配置:
Section "InputClass" Identifier "SlimBlade Trackball" Driver "evdev" Option "ButtonMapping" "1 8 3 4 5 6 7 9 0 2" Option "Emulate3Button" "10" EndSection
這使得中間按鈕仿真發出按鈕編號 10,然後將按鈕 C 映射到 8,D 映射到 9,並將 10 映射到 2。瞧。