跳到主要内容
网页工具 · 任意浏览器 · 免安装

Mac 上鼠标滚动发涩发跳 —— 自己测一测

在下面两个框里各滚动一次。这里会记录 macOS 在每次滚动事件中实际交给软件的数据,并把两个设备画在同一标尺上。滚轮为什么更难用,大约两秒就能看出来。

🔌 免安装·🔒 全部在你的浏览器本地测量·🚫 不上传、不留存

触控板

等待中

在框里用两指滚动。记得快速划一下再松手,让惯性也被记录下来。

不同步长数
事件数
事件 / 秒
步长中位数
最大步长
衰减尾巴

鼠标滚轮

等待中

在框里转动滚轮,距离和刚才滚动的差不多就行。

不同步长数
事件数
事件 / 秒
步长中位数
最大步长
衰减尾巴
共用纵轴标尺 —— 由两次录制中较大的一次决定

你看到的是什么

每一条竖线是一次滚动事件,横向位置代表它到达的时刻,高度代表它请求页面移动的距离。两个面板使用相同的柱宽和相同的纵轴标尺,所以两种形状可以直接比较。

真正关键的数字是「不同步长数」

触控板每次事件报告的距离都在连续变化,而且手指离开表面后仍会继续发送事件。滚轮则一遍又一遍地报告同一个固定档位值。触控板通常产生几十种不同的值,滚轮往往只产生一种。

这一个数字就说明了全部问题。当滚轮每次都发送同样的跳跃量时,macOS 没有任何可插值的中间状态,只能让页面硬生生地跳。这不是坏了,换更贵的鼠标也不会变 —— 那就是硬件报告的内容。

测量方法与局限

录制使用标准的 wheel DOM 事件。每个面板从你的第一次事件开始,静止 500 毫秒后结束。数值是浏览器暴露出来的,比原始设备高一层 —— macOS 已经施加了自己的滚动处理,浏览器在负载高时还可能合并事件。所以请对比同一台机器上的两个设备,而不是跨机器比较绝对数值。

常见问题

为什么在 Mac 上鼠标滚动发涩,触控板却很顺?

因为这两种设备发送的信号根本不同。触控板每秒多次报告连续变化的距离,并且在手指抬起后仍继续报告 —— 那段衰减就是你感觉到的惯性。滚轮每次点击都报告同一个固定档位值,中间什么都没有。macOS 直接采用滚轮的数值,于是页面就硬跳。本页的测试会把两种信号画在同一标尺上。

换一个更贵的鼠标能解决 macOS 上的滚动卡顿吗?

通常不能。步长是滚轮编码器的特性,和价格无关。有些高分辨率滚轮确实会报告更细的步长,测试中会表现为更高的「不同步长数」。但大多数鼠标 —— 包括高端型号 —— 只报告一个重复的数值,再多的硬件预算也改变不了 macOS 的插值方式,因为根本没有可插值的东西。

「不同步长数」是什么意思?

它统计的是一次录制中,你的设备报告过多少种不同的滚动距离(先四舍五入到两位小数,以排除浮点噪声)。触控板通常产生几十种,因为每次事件都略有差别。滚轮往往只产生一种。这个数字最能概括两者手感为何不同。

这是在直接读取我的硬件吗?

不是。它读取的是浏览器收到的标准 wheel 事件,比设备高一层:macOS 已经施加了自己的滚动处理,浏览器在负载高时还可能合并事件。因此绝对数值在不同浏览器和不同 macOS 版本之间会有差异。有意义的结果是同一台机器上两个设备之间的对比,而不是原始数值本身。

这个测试支持哪些浏览器?

全都支持,包括 Safari 和 Firefox。测试只使用标准的 wheel DOM 事件,不需要 WebHID,也不会弹出设备权限请求。不上传任何内容,也不留存 —— 刷新页面,录制就消失了。

滚轮滚动的卡顿真的能解决吗?

能,靠软件。滚轮从不发送的那些中间帧可以被生成出来:每一档不再是瞬间跳跃,而是一段短暂的缓动动画。LinguaX 在 macOS 13 及以上为任何 USB 或蓝牙鼠标做这件事,Min Step、Speed Gain、Duration 三个参数可调,支持按 App 单独开关,并且完全不干预触控板。

把左边那种形状变成右边那种。为任何 USB 或蓝牙鼠标提供平滑滚动,支持按 App 开关,触控板完全不受影响 —— LinguaX,原生应用约 10 MB,一次性 $9.9。

相关内容