禁用滑鼠指針移動
我想禁用由 bash 腳本控制的滑鼠移動,因此
xdotool
可以接管和碰撞滑鼠,否則不會成為問題。但是,我需要這些按鈕才能繼續工作,因此不能簡單地禁用滑鼠。
這與這個問題相同,但那裡的解決方案對我不起作用。我的滑鼠似乎沒有這些屬性。
xinput list
顯示滑鼠 3 次。ID 10 具有最多的屬性,另外兩個具有選項子集。輸出
xinput list-props 10
:Device 'Logitech Gaming Mouse G502': Device Enabled (152): 1 Coordinate Transformation Matrix (154): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Accel Speed (290): 0.000000 libinput Accel Speed Default (291): 0.000000 libinput Accel Profiles Available (292): 1, 1 libinput Accel Profile Enabled (293): 1, 0 libinput Accel Profile Enabled Default (294): 1, 0 libinput Natural Scrolling Enabled (295): 0 libinput Natural Scrolling Enabled Default (296): 0 libinput Send Events Modes Available (275): 1, 0 libinput Send Events Mode Enabled (276): 0, 0 libinput Send Events Mode Enabled Default (277): 0, 0 libinput Left Handed Enabled (297): 0 libinput Left Handed Enabled Default (298): 0 libinput Scroll Methods Available (299): 0, 0, 1 libinput Scroll Method Enabled (300): 0, 0, 0 libinput Scroll Method Enabled Default (301): 0, 0, 0 libinput Button Scrolling Button (302): 2 libinput Button Scrolling Button Default (303): 2 libinput Middle Emulation Enabled (304): 0 libinput Middle Emulation Enabled Default (305): 0 Device Node (278): "/dev/input/event2" Device Product ID (279): 1133, 49277 libinput Drag Lock Buttons (306): <no items> libinput Horizontal Scroll Enabled (307): 1
我試著弄亂座標變換矩陣,但據我所知,它沒有做任何事情。
其他屬性似乎都不能幫助我 - 還有其他方法可以解決這個問題嗎?
編輯:輸出
xinput list
:⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech Gaming Mouse G502 id=11 [slave pointer (2)] ⎜ ↳ Logitech Gaming Mouse G502 id=10 [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)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Logitech G510 Gaming Keyboard id=8 [slave keyboard (3)] ↳ Logitech G510 Gaming Keyboard id=9 [slave keyboard (3)] ↳ Eee PC WMI hotkeys id=12 [slave keyboard (3)] ↳ Logitech Gaming Mouse G502 id=13 [slave keyboard (3)]
使用
xinput test <ID>
我注意到只有 ID 為 10 的設備響應了任何事件。
顯然,改變座標變換矩陣確實有效,我只是做錯了。
將其設置為全 0 矩陣根本不會做任何事情。更改隨機值可能會或可能不會產生影響。
最後,我注意到使矩陣右下角的條目變大,減慢了我的滑鼠速度。因此,將此值更改為較大的值具有預期的效果。
例如:
xinput set-prop 10 154 1 0 0 0 1 0 0 0 1000000
這僅適用於 ID 為 10 的滑鼠設備。
編輯:將其他 1 值設置為較小的值 - 例如 0 - 也會使其變慢。所以這也有效:
xinput set-prop 10 154 0 0 0 0 0 0 0 0 1
更好的是,
xinput test 10
它不會輸出任何東西。但是,當與 xdotool 一起使用時,我注意到我的游標跳到了螢幕的左上角。我不確定這是否仍在這個問題的範圍內,但這仍然是一個問題。
Edit2:似乎跳轉到螢幕左上角是由
xdotool mousemove
. 如果在使用上述矩陣設置發出這樣的命令後移動滑鼠,滑鼠指針會跳到左上角。為了防止這種情況發生,您可以簡單地通過相對運動來跟進它。例如像這樣:
xdotool mousemove X Y mousemove_relative 1 1 mousemove_relative -- -1 -1
。這會將指針移動到提供的 X 和 Y 座標,並且不受滑鼠進一步移動的影響。