关于鼠标DPI、轮询率(Poll Rate)及数据传输机制的技术咨询
我的动机
大家好,我最近一直在琢磨鼠标DPI、轮询率的准确定义,还有鼠标到底给电脑传了什么信息——主要是因为玩FPS游戏的时候,想搞懂调整鼠标不同参数到底有啥利弊。
我的现有理解
鼠标传输的信息
我目前觉得,鼠标应该是给电脑发送移动增量(delta值),而不是绝对位置。比如鼠标不动的时候发(0,0),往右挪一点就发(0, +3)这类数据,持续几帧更新。
我不认为它会传屏幕上的绝对位置,不然鼠标还得知道显示器的分辨率和尺寸,这显然不合理。电脑收到这些增量后,会根据光标当前的位置来计算新位置,靠软件完成更新。
DPI的理解
我知道DPI是“dots per inch(每英寸点数)”,之前看一些文章说DPI和屏幕像素是1:1对应的——比如800DPI的鼠标,物理上移动1英寸,屏幕光标就移800像素。要是这样的话,把同一个鼠标插在物理尺寸相同、分辨率800x800和1600x1600的显示器上,前者的灵敏度会是后者的两倍?
但之前我一直以为DPI是和显示器尺寸、分辨率无关的参数,换电脑的时候只要把鼠标参数调一致,手感就没变化,实际体验也确实是这样。
我个人猜测,现在的光电鼠标用的是图像传感器,DPI其实指的是传感器的“虚拟可调分辨率”:
比如有个鼠标A,传感器是1x1英寸的正方形,设成4DPI时,能捕捉到鼠标垫上的细微灰色瑕疵来检测移动;但如果调到2DPI,传感器的采样分辨率不够,就检测不到这个瑕疵的移动了。要是真的是这样,那低DPI的鼠标平均能检测到的移动量更少,整体灵敏度也就更低。
轮询率的理解
拿两个鼠标举例:
- 鼠标A:5Hz轮询率
- 鼠标B:10Hz轮询率
我理解轮询率就是鼠标通过USB给电脑发数据包的频率。虽然鼠标B发数据的速度是A的两倍,但每次发的增量值会是A的一半,所以整体灵敏度不会变。不过轮询率高的话,能更快地检测到移动变化,手感会更跟手、反应更灵敏。
鼠标捕获类应用(比如FPS游戏)
如果按DPI和屏幕像素1:1的说法,那在FPS游戏里(没有光标,能无限转身)就说不通了。我猜这类应用是直接读取鼠标输出的增量值,这也反过来支持了“鼠标传的是增量”这个观点。
我的问题
以上是我目前的理解和想法,希望懂行的朋友能帮我纠正每个部分里的错误,或者补充更详细的细节,也可以给我讲讲相关的原理~
参考资料
为了搞懂这些,我先研究了光电鼠标的工作原理,还以ZOWIE EC3-C鼠标的3360传感器为参考,看了它的数据手册,里面的寄存器表提到了鼠标增量相关的内容。
备注:内容来源于stack exchange,提问作者cuppajoeman




