我买了一个 8200dpi 的游戏鼠标。但是,当我在 Linux 中使用它时,我遇到了一个问题。当我不使用 PC 或观看视频时,鼠标有时会在触摸桌子甚至有人在房间里走动时产生短暂的移动。这些响应会结束屏幕保护程序并导致视频播放器 GUI 显示。这很烦人。
我该怎么做才能解决这个问题?
答案1
一个可能的解决方案是下面的背景脚本。
它能做什么
- 在(任意)空闲时间之后,脚本将禁用鼠标,使其对您使用鼠标执行的任何操作都不敏感。我会将这个时间设置得相对较短,这样中间干扰的可能性就很小。
- 然而,一个简单的击键(任何)都可以再次启用鼠标。
由于是xprintidle
由鼠标或键盘事件触发的(而不是由屏幕上发生的事情触发),因此脚本不会受到播放电影等的干扰。
这样,您就不必担心不必要的鼠标动作会扰乱任何东西,同时您仍然可以轻松访问控件和计算机。
与往常一样(并且应该与后台脚本一样),该脚本的编写方式几乎不消耗任何资源。
剧本
#!/usr/bin/env python3
import subprocess
import time
# ---
# set your device (mouse), as found from the command: xinput list
device = 8
# set the desired idle time (in seconds) to disable the mouse
set_idletime = 5
# ---
# don't change anything below
idle1 = 0
while True:
time.sleep(1)
idle2 = int(int(subprocess.check_output(["xprintidle"]).decode("utf-8").strip())/1000)
if all([idle1 <= set_idletime, idle2 > set_idletime]):
subprocess.Popen(["xinput", "set-prop", str(device), "Device Enabled", "0"])
elif idle2 < idle1:
subprocess.Popen(["xinput", "set-prop", str(device), "Device Enabled", "1"])
idle1 = idle2
如何使用
该脚本需要
xprintidle
:sudo apt-get install xprintidle
将脚本复制到一个空文件中,另存为
mouse_toosensitive.py
通过在终端中运行来找出鼠标的设备(编号,整数):
xinput list
在脚本的头部部分,设置设备编号和所需的空闲时间(参见脚本中的说明)。
使用以下命令从终端窗口运行它进行测试:
python3 /path/to/mouse_toosensitive.py
如果一切正常,请将其添加到您的启动应用程序中:Dash>启动应用程序>添加命令:
/bin/bash -c "sleep 15 && python3 /path/to/mouse_toosensitive.py"
答案2
当然,我相信您已经尝试过鼠标控制,例如:
$ xset mouse [speed] [threshold]
和
查找您的输入设备编号
$ xinput
$ xinput --set-prop 9 'Device Accel Constant Deceleration' 3
如果试验可用的值没有帮助,请尝试将鼠标垫换成阻力更大的表面。换句话说,试验不同类型的鼠标垫以获得不同的灵敏度。
答案3
如果你正在使用xscreensaver
,有一个配置参数非常适合 -pointerHysteresis
:
如果鼠标在一秒钟内移动的像素数少于这么多,则忽略它(不要将其视为“活动”。)这样屏幕就不会因为您碰到桌子而恢复空白(或无法空白)。默认值:10 像素。
我会尝试的另一个解决方案是购买一个好的硅胶鼠标垫,这可以将不必要的动作减少到最低限度。
答案4
将一支墨水笔放在鼠标背面下方,将光学传感器抬高到其对运动做出反应的距离以上,当您想再次使用鼠标时,请取出墨水笔。