![如何禁用鼠标移动输入,同时保持鼠标按钮启用?](https://linux22.com/image/49038/%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%8A%A8%E8%BE%93%E5%85%A5%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BF%9D%E6%8C%81%E9%BC%A0%E6%A0%87%E6%8C%89%E9%92%AE%E5%90%AF%E7%94%A8%EF%BC%9F.png)
我有一个鼠标,仅用于按钮。我只想禁用鼠标的移动输入。物理覆盖传感器是行不通的。
答案1
您可以使用xinput
。
>xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Mouse0 id=6 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Keyboard0
在这里您可以得到鼠标的名称,在本例中为 Mouse0。
使用以下命令,您可以将鼠标速度减慢 100000 倍,然后基本上为零。
xinput --set-prop 6 'Device Accel Constant Deceleration' 100000
或者
xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 100000
要恢复,您可以使用相同的
xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 1
答案2
我的鼠标没有“设备加速恒定减速”属性。我仍然可以禁用运动
xinput set-prop 9 266 -1
xinput set-prop 9 269 0 1
并重新启用它
xinput set-prop 9 269 1 0
input set-prop 9 266 0.0
我还禁用了我的按钮
xinput set-button-map 9 0 0 0
设备 9 是我的三美电机 Apple 光学 USB 鼠标。
设备列表
Device 'Mitsumi Electric Apple Optical USB Mouse':
Device Enabled (132): 1
Coordinate Transformation Matrix (134): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Accel Speed (266): -1.000000
libinput Accel Speed Default (267): 0.000000
libinput Accel Profiles Available (268): 0, 0
libinput Accel Profile Enabled (269): 0, 1
libinput Accel Profile Enabled Default (270): 1, 0
libinput Natural Scrolling Enabled (271): 0
libinput Natural Scrolling Enabled Default (272): 0
libinput Send Events Modes Available (250): 1, 0
libinput Send Events Mode Enabled (251): 0, 0
libinput Send Events Mode Enabled Default (252): 0, 0
libinput Left Handed Enabled (273): 0
libinput Left Handed Enabled Default (274): 0
libinput Scroll Methods Available (275): 0, 0, 1
libinput Scroll Method Enabled (276): 0, 0, 0
libinput Scroll Method Enabled Default (277): 0, 0, 0
libinput Button Scrolling Button (278): 2
libinput Button Scrolling Button Default (279): 274
libinput Middle Emulation Enabled (280): 0
libinput Middle Emulation Enabled Default (281): 0
Device Node (253): "/dev/input/event4"
Device Product ID (254): 1452, 772
libinput Drag Lock Buttons (282): <no items>
libinput Horizonal Scroll Enabled (255): 1
答案3
如果我man 4 mousedrv
没看错的话,您可以在 xorg.conf 的 CorePointer 部分中设置,
Option "EmulateWheel" true
Option "EmulateWheelButton" 0
Option "EmulateWheelInertia" 10000
这会将移动转换为鼠标滚轮按钮事件,但惯性设置会使其过于不敏感而无法注册事件。在现代系统上,它是 evdev 而不是 mousedrv。这也可以在运行时使用 xinput 设置,例如:
xinput --set-prop 17 'Evdev Wheel Emulation' 1
xinput --set-prop 17 'Evdev Wheel Emulation Button' 0
xinput --set-prop 17 'Evdev Wheel Emulation Inertia' 10000
其中 17 应该是您自己的设备编号。我使用一个函数通过设备名称获取此数字,并在启动脚本期间将其存储在 $device-id 中。
set_device_id() {
device_id=$(xinput --list | grep -m 1 "$1")
device_id=${device_id##*id=}
device_id=${device_id%%[[:space:]]*}
}
不幸的是,这会产生禁用设备滚轮输入的副作用。