禁用滾輪水平按鈕(後退/前進)
我最近買了一台羅技 M500:
匯流排 002 設備 004:ID 046d:c069 Logitech, Inc. M500 雷射滑鼠
它有九個我可以辨識的按鈕:
- 左邊兩個
- 左右
- 輪壓機
- 滾輪向上滾動,滾輪向下滾動
- 左輪壓,右輪壓
最後兩個快把我逼瘋了。每次我嘗試點擊滾輪時,我不小心點擊了“滾輪向左”按鈕,Firefox 會轉到上次訪問的頁面。這很煩人。
很容易,對吧?只需找出 xev 顯示的按鈕並禁用它們。錯誤的!xev 不會生成“ButtonPress/ButtonRelease”事件,而是生成奇怪的“LeaveNotify/EnterNotify/KeymapNotify”對:
LeaveNotify 事件,序列號 40,合成 NO,視窗 0x4a00001, 根 0x94,subw 0x0,時間 2344319,(104,86),根:(113,207), 模式 NotifyGrab,詳細 NotifyAncestor,same_screen 是, 聚焦 YES,狀態 0 EnterNotify 事件,序列號 40,合成 NO,視窗 0x4a00001, 根 0x94,subw 0x0,時間 2344319,(104,86),根:(113,207), 模式 NotifyUngrab,詳細 NotifyAncestor,same_screen YES, 聚焦 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
現在可以肯定的是,4294967188(-108 二進制補碼為 32 位整數,如果有幫助的話)將是鍵碼,對吧?又錯了!水平輪左/右和側後/前按鈕的編號相同。
這是我的設備的 xinput 列表:
羅技 USB 雷射滑鼠 id=15 [從指針 (2)] 報告 7 類: 類起源於:15。類型:XIButtonClass 支持的按鈕:16 按鈕標籤:“按鈕左”“按鈕中間”“按鈕右”“按鈕輪向上”“按鈕輪向下”“按鈕水平輪左”“按鈕水平輪右”“按鈕側”“按鈕額外”“按鈕前進”“按鈕返回”“按鈕任務”“按鈕未知”“按鈕未知”“按鈕未知”“按鈕未知” 按鈕狀態: 類起源於:15。類型:XIValuatorClass 估價器 0 的詳細資訊: 標籤: 相對 X 範圍:-1.000000 - -1.000000 解析度:1單位/米 模式:相對 類起源於:15。類型:XIValuatorClass 估價師 1 的詳細資訊: 標籤: 相對 Y 範圍:-1.000000 - -1.000000 解析度:1單位/米 模式:相對 類起源於:15。類型:XIValuatorClass 估價師 2 的詳細資訊: 標籤: Rel Horiz Wheel 範圍:-1.000000 - -1.000000 解析度:1單位/米 模式:相對 類起源於:15。類型:XIValuatorClass 估價師 3 的詳細資訊: 標籤:Rel Vert Wheel 範圍:-1.000000 - -1.000000 解析度:1單位/米 模式:相對 類起源於:15。類型:XIScrollClass 評估器 2 的滾動資訊 類型:2(水平) 增量:1.000000 標誌:0x0 類起源於:15。類型:XIScrollClass Valuator 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 事件(例如左/右)的滑鼠按鈕確實會按應有的方式“向下”顯示廣告。
**TL;DR:**問題
xinput set-prop <deviceId> "libinput Horizontal Scroll Enabled" 0
我可以從輸出中獲取
<deviceId>
值。xinput -list
我欠一個藍牙羅技 M555b 滑鼠;它摔倒了很多次(我的壞),去年秋天它開始發出間歇性爆發的“滑鼠右鍵滾動”。我注意到它只是在編碼時,程式碼一直向右滾動。在其他用途(即網際網路瀏覽、遊戲等)中,問題根本不可見。
我開始玩這個
xev
命令,但在這些爆發期間它不知道任何事件。相反,我在這些爆發中
xinput --test <deviceId>
看到了幾個命令。motion a[2]=<bigNum>
然後使用命令,
xinput --list-props <deviceId>
我看到一個名為Horizontal Scroll Enabled
set to 1 的屬性,我使用 TL;DR 命令將其設置為 0,並且,volià,突發停止(我可以在結束時使用值 1 而不是 0 重新啟用它命令)。希望它可以幫助別人。
我有一個羅技 M325,它還使用按鈕 8 和 9 來左右傾斜滾輪。我使用這個腳本來禁用它們:
#!/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