瀏覽器中的滑鼠按鍵測試會讀取頁面在每次 mousedown 時收到的整數 MouseEvent.button 程式碼,並告訴你瀏覽器實際偵測到的是五個具名按鍵中的哪一個。瀏覽器辨識的五個程式碼分別為整數 0 Primary、1 Auxiliary、2 Secondary、3 Back 和 4 Forward,而此對應關係來自 W3C Pointer Events 規格,而非根據實體左側或右側做出任何假設。因此,當工具顯示 Primary 次數為一、Secondary 次數為零時,你便能根據明確證據判斷頁面收到了什麼,而不是對硬體下結論。當指標位於虛線目標內且你一次按下一個按鍵時,工具會增加總數、增加相符的具名計數器,並將標籤附加到「Recent」清單,保留最近八次接受的按壓紀錄。這正是 Mouse Tester 頁面的用途,而本指南的其餘內容會說明如何執行測試、讀取各項結果,以及避免將零次計數誤解為硬體故障。

大多數人是因為某些情況看起來不正確,才使用滑鼠按鍵測試:瀏覽器中的 Back 鍵突然沒有反應、中鍵貼上不再生效、不該有反應的額外側鍵卻被偵測到,或剛重新設定對應的滑鼠使實體左鍵現在代表 Secondary。瀏覽器只會知道以滑鼠事件傳到頁面的按鍵,而多個層級——瀏覽器、作業系統、驅動程式軟體、無障礙功能介面、瀏覽器擴充功能和遠端桌面工具——都可能在頁面收到程式碼之前就先攔截按壓。因此,能監聽按鍵按下事件,並以已知網頁名稱標示每個事件的工具就很有用:它會告訴你瀏覽器最後實際傳送的內容,讓你可以將其與預期結果比較。在瀏覽器中試用 Mouse Tester 即可進行這項測試。

mouse button test
滑鼠按鍵測試:解析瀏覽器看到的內容

工具能讀取的五個 MouseEvent.button 程式碼

瀏覽器會在每次 mousedown 時,將 MouseEvent.button 當成單一整數傳給頁面。MDN 中 MouseEvent.button 的參考資料列出了五個常見程式碼,而 Mouse Tester 會依瀏覽器傳送事件的順序套用相同的標籤。其他整數——例如無障礙工具注入的合成值——會連同其數值程式碼顯示為 Unknown;小數值則會被拒絕,因為有文件記載的對應關係僅使用整數。

程式碼工具中的名稱常見的實體意義
0Primary主要啟動按鍵(通常是左鍵;可在作業系統設定中對調)
1Auxiliary中鍵或滾輪點擊
2Secondary次要按鍵(通常是右鍵;可在作業系統設定中對調)
3Back額外側鍵,瀏覽器通常會將其對應到 history.back()
4Forward額外側鍵,瀏覽器通常會將其對應到 history.forward()

該表格中有兩項細節貫穿本文的其餘內容。第一,Primary 與 Secondary 描述的是網頁事件模型中的角色,而非實體側邊,因此,即使左手使用者採用右手滑鼠設定,右側開關仍會以 Primary 觸發。第二,只有在瀏覽器公開 Back 與 Forward 時,這兩個按鍵才會存在——當擴充功能、遠端工作階段或作業系統本身在頁面收到按壓前先攔截時,即使硬體狀況良好,該程式碼的具名計數仍會維持為零。

如何執行滑鼠按鍵測試

在瀏覽器中開啟 Mouse Tester,將指標停在虛線目標內,並逐一測試裝置提供的按鍵。頁面會在目標內抑制自身的右鍵選單和輔助預設行為,因此按一下中鍵或右鍵時,結果不會立即被選單或貼上動作取代。

  1. 將指標移至頁面上的虛線目標內,並在整个工作階段中保持該位置。
  2. 刻意按一下主要按鍵,然後放開。
  3. 依序各按一次次要按鍵、中鍵或滾輪,以及所有額外側鍵(Back、Forward)。
  4. 每次按壓後,確認總數增加一,且相符的具名標籤也增加一。
  5. 在實際出現問題的應用程式中重複相同步驟——例如遊戲、設計工具或另一款瀏覽器——然後使用 Reset test 清除此瀏覽器專屬的工作階段。

每個按鍵按一次只是初步檢查。若要排除不穩定的情況,請將相同步驟重複三或四次,並確認每輪都有相同的具名計數增加。如果單次實體按壓產生兩個事件,該輪的計數就會增加二,而這便是一項有用的資料點——在將其視為硬體故障之前,請搭配製造商提供的診斷工具進行判斷。

讀取計數與 Recent 清單

每次按壓時,工具都會顯示三項資訊:每當目標收到按鍵按下事件就會增加的單一 Total 計數器;只有相符程式碼抵達時才會各自增加的五個具名計數器(Primary、Auxiliary、Secondary、Back、Forward);以及 Recent 清單,它會依瀏覽器傳送的順序保留最近八個已接受的標籤。

你可以透過具名計數器回答原本的問題,也就是:這個滑鼠按鍵是否正常運作?如果滑鼠的 Back 按鍵應該傳送程式碼 3,而且 Back 計數器在每次按壓後都增加一,代表瀏覽器有傳送事件。如果 Back 計數器維持為零,則事件基於某種原因並未傳到頁面。Recent 清單還能進一步保留順序:如果你依序按下 Back、Forward,再按 Back,清單由下往上就應顯示 Back、Forward、Back。當應用程式或驅動程式會消耗某些事件並重新對應其他事件時,這項順序檢查十分重要,因為按鍵仍可能傳到頁面,只是名稱與你預期的不同。

按鍵為何可能未在頁面上註冊

具名按鍵的計數為零是真實資料,但它並不等於硬體診斷結果。按壓可能根本未到達頁面,而最常見的原因是裝置上方的多個層級:

  • 瀏覽器導覽:Back 和 Forward 按鍵通常會由瀏覽器本身指派給 history.back() 和 history.forward(),因此頁面經常不會收到相應的 mousedown。
  • 作業系統:macOS、Windows 和許多 Linux 桌面環境可能會重新對應額外按鍵,或攔截它們以執行 Mission Control、工作檢視或虛擬桌面切換。
  • 驅動程式與製造商軟體:在瀏覽器看到這些按鍵之前,Logitech、Razer、Corsair 之類的工具通常會先將額外按鍵用於巨集或 DPI 循環切換。
  • 擴充功能:分頁管理工具、手勢工具和無障礙輔助工具經常會將側鍵綁定到自己的快速鍵。
  • 遠端桌面用戶端:當本機滑鼠控制遠端指標時,按鍵程式碼可能會依通訊協定遭到轉換或捨棄。

當其中任何一層級攔截按壓時,在目標內防止預設行為也無法強迫頁面收到事件。正確的下一步是先在發生問題的應用程式中測試同一裝置,再於另一款瀏覽器中測試,然後才能對實體開關本身下任何結論。

這項測試不會測量的內容

Mouse Tester 只會回報瀏覽器的按鍵按下事件。它不會測量點擊速度、兩次點擊之間的間隔、輪詢率、按鍵去彈跳、無線延遲、開關致動力、指標移動、滾輪位移量或拖曳行為。它也無法認證無障礙功能、遊戲適用性或硬體狀態——這些主張需要不同的測量方式,在某些情況下還必須實際接觸裝置。

由於每項計數只存在於目前分頁中,切換分頁、重新載入頁面或按下 Reset test 都會清除工作階段。這個工具不會要求裝置識別資訊、安裝驅動程式、上傳事件、儲存歷史紀錄,也不會在可見測試目標之外進行監聽,因此,你根據某次工作階段做出的任何結論,都只適用於該裝置在該時間點上的該款瀏覽器。如果需要進行比較,請在兩款瀏覽器中執行相同步驟,並將相同的具名計數視為裝置正從頭到尾傳送標準滑鼠事件的一項正面訊號。

如果你正在評估不同選項,Windows 上的滑鼠捲動測試:檢查滾輪方向對此有詳細說明。

如果你正在評估不同選項,滑鼠點擊測試:確認每個按鍵按一次對此有詳細說明。