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 單獨開關,並且完全不干預觸控板。