
瀏覽器層級「滑鼠效能」的意義
若要在瀏覽器中測試滑鼠效能,請在單一擷取目標內按下每個實體滑鼠按鍵,然後檢查頁面所接收到的 MouseEvent.button 整數值:0 代表主要鍵(Primary)、1 代表輔助鍵(Auxiliary)、2 代表次要鍵(Secondary)、3 代表上一頁(Back)、4 代表下一頁(Forward)。一次乾淨的測試應該為每次刻意按壓產生剛好一個事件,且其標籤必須與你按下的開關一致。瀏覽器無法直接看到開關、感測器或連接線——它只能看見作業系統與網頁所允許通過的事件代碼——因此,檢查這些代碼,是你在不必安裝驅動程式、官方軟體或 HID 工具的情況下,所能進行的最誠實的效能測試之一。滑鼠測試工具正是圍繞這個單一問題而打造:當每個開關被按下時,哪些整數代碼會傳遞到頁面、出現幾次、依什麼順序?本指南將說明這些代碼的意義、如何刻意地執行測試、如何在不過度詮釋的情況下讀取總計與具名計數器,以及瀏覽器工作階段在何種情況下不再適合作為對硬體本身的可靠判定依據。
這也是為什麼當感覺哪裡不對勁時,按鍵代碼測試會是最有用的第一步。如果頁面為每次刻意按壓都剛好記錄一個事件,且標籤與按鍵相符,代表你的滑鼠、驅動程式與瀏覽器運作正常。如果頁面什麼都沒記錄、每次按壓記錄到多個事件,或標籤與按鍵不符,那麼某個上游環節——驅動程式、作業系統、擴充功能、遠端桌面用戶端,或硬體本身——正在造成干擾。滑鼠測試工具的設計,正是為了將這類干擾浮現出來,卻不會做出它無法佐證的聲明。
你的瀏覽器實際看見的 MouseEvent.button 代碼
每個滑鼠按下事件都帶有一個數值類型的 MouseEvent.button 欄位。Web 平台為該欄位定義了五個具名代碼,並將任何其他整數視為未知或合成值。這項對應關係已於 W3C Pointer Events 規範中標準化,且記載於 MDN,因此對於已記載的整數範圍,這些標籤在不同瀏覽器之間並不會改變。滑鼠測試工具所採用的,正是這套對應關係,不做任何重新對應,也不使用各家廠商自有的標籤。
| MouseEvent.button | 標籤 | 常見的實體來源 |
|---|---|---|
| 0 | Primary(主要鍵) | 主要啟動按鍵(通常為實體左鍵;可在作業系統設定中交換) |
| 1 | Auxiliary(輔助鍵) | 中間鍵或滾輪點擊 |
| 2 | Secondary(次要鍵) | 內容選單按鍵(通常為實體右鍵) |
| 3 | Back(上一頁) | 用於瀏覽歷史紀錄上一頁的額外拇指鍵 |
| 4 | Forward(下一頁) | 用於瀏覽歷史紀錄下一頁的額外拇指鍵 |
有兩項釐清對效能測試很重要。第一,「Primary」代表的是裝置的主要啟動按鍵,而非實體左鍵開關——在作業系統中左右鍵對調的使用者,會看到代碼 0 由另一側觸發,而滑鼠測試工具仍會將其標示為 Primary。第二,button 與 buttons 是不同的欄位。MouseEvent.button 用來識別觸發按下或釋放事件的單一按鍵;MouseEvent.buttons 則是一個位元欄位,列出在另一個滑鼠事件(例如 mousemove)發生當下,所有正被按住的按鍵。滑鼠測試工具只監聽按鍵按下事件,並對該事件中的單一整數代碼進行分類,因此它無法重建連續的按鍵按住狀態,也不會嘗試解讀組合鍵。這樣的範圍是刻意的設定:它讓結果成為對「單一事件」的忠實解讀。
執行按鍵代碼效能測試
這項測試是刻意設計且簡短的。開啟滑鼠測試工具,將游標移入虛線目標框內,逐個按下每個可用的滑鼠開關一次。確認頁面為每次按壓都記錄到剛好一個事件,且標籤與按鍵相符。若你想以乾淨狀態重新執行,請在開始前點擊「Reset test」。
- 將游標置於虛線目標框內,依序逐一按下每個可用的滑鼠按鍵——Primary、Auxiliary、Secondary、Back,最後是 Forward(若你的滑鼠具備這些按鍵)。
- 針對每個被接受的事件,確認總計次數剛好增加 1,且對應的具名計數(Primary、Auxiliary、Secondary、Back 或 Forward)也剛好增加 1。
- 檢查「Recent」(最近事件)清單,確認所接收事件的順序與你按下按鍵的順序一致。
- 重複按下同一個按鍵數次。每次按壓都應該只新增一個帶有相同標籤的事件,而不應出現其他結果。
- 若有按鍵似乎沒有反應,請在虛線區域內刻意重新按壓——此目標會抑制自身的內容選單與輔助啟動,使次要鍵或中間鍵的按壓不會立即以內容選單動作取代測試結果。
- 在發生問題的實際應用程式中(例如遊戲、設計工具、不同的瀏覽器分頁)重複相同步驟,因為應用程式與驅動程式可能以不同方式對應代碼,也會自行處理額外的按鍵。
- 點擊「Reset test」以清除記憶體中的計數器,再進行下一輪測試;計數僅保留於目前分頁中,當你重新整理或關閉分頁時便會消失。
解讀總計、具名計數與最近事件清單
滑鼠測試工具針對每個被接受的事件提供三項資訊,每一項都對應不同的問題。總計計數器最為單純——它應該等於你所進行的刻意按壓次數。若數值過高,代表瀏覽器正在傳遞重複事件;若數值過低,代表某個上游環節在頁面能看見事件之前便已將該次按壓吞掉。
具名計數器才是診斷的關鍵。在一次乾淨的測試之後,你應該會看到滑鼠上每個按鍵各有一筆計數,其數值應符合你按下該按鍵的次數。按下左鍵五次後,Primary 計數為五,代表頁面正確接收每一次按壓並正確標籤。按下左鍵三次後,Primary 計數為五,代表瀏覽器回報過多;按下左鍵五次後,Primary 計數為一,則代表瀏覽器或驅動程式回報過少。這兩種結果都是值得保留的資料點,且此工具無法單憑一次瀏覽器工作階段就釐清問題是源自硬體、驅動程式或傳輸層。
最近事件清單保留最新八筆被接受的標籤,因此你可以將接收事件的順序讀成一小串名稱。依序按下 Primary、Auxiliary、Secondary,清單應該依相同順序增長。若順序錯亂、出現你未曾按下的重複項目,或漏掉你確定有按下的標籤,這都是值得保留的資料點。無論總計為何,最近事件清單都能讓你確認頁面將每一次按壓視為獨立事件,而不是將它們合併在一起。
當計數顯示為零時——以及它並不代表什麼
零計數是最常被錯誤解讀的結果。瀏覽器、作業系統、擴充功能、驅動程式或遠端桌面軟體,都可能在頁面收到事件之前攔截該按鍵。Back 與 Forward 按鍵是最常見的嫌疑對象:許多瀏覽器會將它們綁定到歷史紀錄導覽,因此即使實體開關如預期般作動,頁面也永遠不會收到該次按壓。Auxiliary 與 Secondary 的按壓則可能被擴充功能或會合成自身事件的輔助科技軟體攔截。
在測試目標內阻止預設動作可減少意外的歷史紀錄跳轉,但無法凌駕瀏覽器或系統中優先順序更高的處理。因此,若 Back 或 Forward 計數持續為零,答案並不是「這個開關壞了」——而是「這個代碼從未抵達這個頁面」。若要釐清原因,請在實際需要該按鍵運作的應用程式中測試同一個裝置、檢查作業系統是否已重新指派該按鍵的功能,並嘗試在停用擴充功能的全新瀏覽器設定檔中測試。單次瀏覽器工作階段得到的零計數,是關於該頁面的真實訊號,而非對硬體的最終判決。
滑鼠測試工具不會量測的項目
按鍵代碼是一種範圍明確且定義清楚的訊號。許多人與「滑鼠效能」聯想在一起的指標,其實並不在此工具範圍內,需要使用其他工具。滑鼠測試工具並不會量測點擊速度、雙擊間隔、按鍵去彈跳、輪詢率、無線延遲、開關觸發力道、游標移動的平順度、滾輪捲動增量,或拖曳行為。它也無法認證無障礙適用性、遊戲適用性,或硬體狀態。這些聲明需要時間相關的資料或裝置診斷資訊,而一般網頁並無法取得這些資料,此工具也不會假裝自己擁有這些能力。
針對游標移動、捲動與點擊時間,Lizely 的整體生產力系列工具可補足這方面的不足。滑鼠滾輪測試會讀取原始的水平和垂直滾輪增量,並計算各方向的次數;雙擊測試則會量測兩次點擊之間的間隔,並保留最近數組的歷史紀錄。將三項結果(按鍵代碼、滾輪增量與雙擊間隔)相互比較,才能得到比任何單一測試更完整的全貌。請將按鍵代碼測試視為這項更廣泛檢查中的一個資料點,而非獨立的維修診斷依據。
若需要了解背後的定義,MDN 上的 MouseEvent.button 參考文件記載了相同的整數對應關係,而 W3C 的 Pointer Events 規範則是 button 與 buttons 欄位的權威來源。任何落在 0 到 4 整數範圍之外的值,滑鼠測試工具會將其視為「未知」,並以數值本身標示,而不會悄悄對應到任何具名代碼;這樣的設計,即使在傳送合成或經過重新對應之數值的裝置上,也能保持結果的可信度。