更新 4:事实证明,只有旧版本有此行为,因此这不是普遍问题。也许我们永远不会知道原因。
更新 3:(另请参阅 Arch bbs 帖子)似乎问题仅出在鼠标上(可能是这只特定的鼠标)。因为这个问题出现在 Raspberry Pi OS 和 Windows 中。我已经向零售商索要了一个新的,稍后会更新问题。
更新 2:我开始认为这不是睡眠模式问题(见下面的粗体文本)。我让鼠标闲置了 10 分钟,它进入了一种必须通过单击按钮才能唤醒的模式。这可能是真正的睡眠模式。(或者有两种,一种是深度睡眠模式,一种是正常睡眠模式?)
更新1:我在 Arch bbs 上发布了同样的问题:https://bbs.archlinux.org/viewtopic.php?id=270149,也请参阅那里的讨论。
我在笔记本电脑上使用 Arch Linux 和无线鼠标,在本例中是 Inphic PM6 无线鼠标。
行为:
在一段时间(对于当前鼠标来说,正好是 60 秒)不活动之后,如果我再次移动鼠标,则每 383.8 毫秒,光标将冻结约 100 毫秒(大多数时间约为 120 毫秒)。
在文章的后面部分,我将解释我为分析行为所做的工作以及如何得到 383.8 毫秒的精确周期。
解决方法:
关闭鼠标然后重新打开(为什么不呢:))将暂时使鼠标正常工作,但在相同的不活动时间后问题仍然会出现。
问题:
有人遇到过同样的问题吗?如何解决周期性短暂冻结的问题?
======
什么是(不)相关的/我(未)尝试过的:
我认为口吃(我不确定这是否是正确的词,我不是母语人士)主要与鼠标的睡眠功能,节省电量.大多数无线鼠标都具有该功能。
我曾经连续玩了一个多小时的游戏,没有任何问题。我猜是因为鼠标没有进入睡眠模式。
这可能与软件占用 CPU 或任何特定软件阻塞鼠标无关。即使我的计算机处于空闲状态,也会出现此问题。
我在其他无线鼠标上也遇到过这个问题,但我没有深入研究并对其进行如下分析。我会研究这些问题,稍后更新此帖子。
我还没有尝试过其他操作系统或计算机硬件。我有另一台 Arch Linux 桌面和一台装有 Raspberry Pi OS 的 Raspberry Pi 4B。我稍后也会在这些机器上尝试。
我还没有尝试更换驱动程序或类似的低级软件。这是因为我不熟悉这些东西,我不知道从哪里开始。
======
由于我是一名科学研究生,我使用我的技能来分析我从“xev”命令获得的结果。这些是步骤:
我运行以下命令,并在“xev”窗口内以圆圈方式移动鼠标(重点是不停地移动鼠标)以获取鼠标事件的时间序列:
xev | grep root | sed 's/.*time \([0-9]*\).*/\1/p' > data.txt
我使用以下 Python 代码绘制了两个鼠标事件之间的时间跨度与时间的关系:
import numpy import matplotlib.pyplot as plt data = numpy.loadtxt('data.txt') t = data - data[0] difft = t[1:] - t[:-1] plt.plot(t[1:], difft, lw=0.5)
我得到以下图像:
解释:
如果图中数据点较大,说明有一段时间鼠标完全没有移动(冻结),高度表示冻结时间的长度,两个冻结点之间的长度即为冻结的周期。
因此,如果您打开图像链接,您将看到鼠标冻结 110~120 毫秒,时间几乎完美。我测量(在 plt.show() 中,我可以获得更准确的坐标)该周期每次都是准确的 383.8 到 383.9 毫秒。