Linux

禁用滑鼠指針移動

  • May 3, 2019

我想禁用由 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 座標,並且不受滑鼠進一步移動的影響。

引用自:https://unix.stackexchange.com/questions/375199