按鍵計數器是一種基於瀏覽器的工具,用於統計傳送至聚焦擷取區域的 keydown 事件,並將其顯示為累計總計、排序後的頻率表,以及簡短的最近歷史清單。每一次計數代表瀏覽器 KeyboardEvent API 所回報的一個已接受的 keydown 事件,而非一次實體按鍵的觸發,因此這些數字描述的是軟體活動,而非硬體的真實情況。聚焦範圍是界線:在擷取區域外、在其他應用程式中輸入的按鍵,或是在網頁接收前就被作業系統攔截的按鍵,皆不會被計算。Tab 鍵仍可使用,以便鍵盤使用者離開擷取區域而不受困,其他按鍵則會抑制其一般的頁面層級預設行為,以避免意外捲動或啟動按鈕。計數器為本機端運作,代表標籤與計數不會被上傳、不會在重新整理後保留,也不會自動複製,因此適合中性測試,而非任何敏感性用途。

按鍵計數器計算什麼(又不計算什麼)
按鍵計數器僅接受目標為其可見擷取元素、且在該元素擁有焦點時所發生的 keydown 事件。擷取區域是一個虛線方框,點擊一次即可使其取得焦點;從那一刻起,瀏覽器為該元素傳遞給網頁的每一次 keydown 都會成為候選計數。在頁面其他地方或其他應用程式中輸入的按鍵會被完全忽略,因為處理常式是附加於擷取元素,而非整份文件。
在該界線內,計數器會對每個已接受的事件執行三項動作:將總計加一、將該按鍵標準化標籤的頻率項目加一,並將該標籤推入僅保留最後十筆的最近歷史清單。標籤來自瀏覽器的 KeyboardEvent.key 值,經過轉換後顯示:字面上的空格會變成 "Space",單一可見字元會在支援地區轉換的情況下以大寫顯示,而像 "ArrowUp" 這類命名值則會保持可讀。控制字元、代理碼點以及 Unicode 的換行或段落分隔符會在儲存前移除。空白的結果會變成 "Unknown",而超過四十個 Unicode 碼點的標籤會被截斷,以免合成事件破壞頁面上的表格。
計數器刻意不會做的事包括:繪製實體佈局、識別鍵盤型號、測試每一個按鍵開關、計算每分鐘字數、評分準確率,或判斷某個按鍵是否有瑕疵。它也不會測量實體的反跳間隔、掃描碼、輪詢率或延遲。這些屬於硬體診斷的範疇,而計數器僅回報瀏覽器事件。
瀏覽器的 Keydown 事件如何成為數字
按鍵計數器位於一個簡單的管線前端:焦點檢查、重複檢查、標籤清理,然後對總計、頻率與最近歷史進行不可變更新。焦點檢查是守門員。重複檢查決定瀏覽器標記為按住重複的事件是否應被計數或忽略。標籤清理會標準化你所看見的內容。更新步驟刻意設計為不可變,代表計數器不會就地變更累計總計,而是產生一個新計數供表格呈現。
重複旗標之所以重要,是因為瀏覽器通常會在按下按鍵時傳遞一次初始的 keydown,接著在按鍵持續按住期間傳遞一連串標記為 repeat 的事件。當重複開關關閉時,那些標記為重複的事件會回傳未變動的現有狀態,因此一次實體按住等於一次計數。當開關開啟時,每次接收到的重複事件都會將總計與該按鍵的頻率加一。計數器信任瀏覽器的重複旗標,不會自行判斷重複事件是來自按住按鍵、彈跳、自動化、遠端桌面軟體、輸入法或輔助工具。
標籤清理可保護表格免於格式錯誤的合成事件影響。若沒有這層保護,一個含有控制位元組或一千個字元貼上內容的雜散事件可能會扭曲頻率檢視。將標籤上限設為四十個碼點並移除控制字元是一種防禦性契約,而非宣稱擁有通用的鍵盤對應表。
如何使用按鍵計數器
若要從此工具取得可靠的數字,請在已開啟 按鍵計數器 的瀏覽器分頁中依循以下步驟:
- 點擊虛線擷取區域一次,使其明顯取得焦點。一次點擊即可;處理常式現在僅附加於該元素。
- 按下中性測試按鍵,例如字母、數字、空格、Enter 與方向鍵。請避免輸入密碼、復原碼、私訊或任何敏感內容;計數器為本機端運作,但養成防禦性習慣仍然重要。
- 決定是否應計算按住按鍵的重複。若希望「一次實體按住算一次」,請將重複開關保持關閉;若希望將瀏覽器標記的每一次重複事件都納入總計,請將其開啟。
- 觀察累計總計、最近十個標籤,以及排序後的頻率表在每次接受事件後的更新。
- 隨時可按下 Tab 將鍵盤焦點移出擷取區域,而不會產生計數。
- 選擇重設計數器以清除總計、頻率對應表與最近歷史,開始一個全新階段。
閱讀總計、最近標籤與頻率表
總計是最簡單的欄位:目前階段中已接受的 keydown 事件數量。當開關關閉時,它不包含重複事件,也不包含任何目標在擷取區域外的事件。
最近標籤清單僅依序保留最後十個已接受的標籤。它刻意設計得短小,因為它只回答一個狹隘的問題:我剛剛按了什麼?若要確認像「A 三次、空格兩次」這類模式,該檢視已足夠;如果你需要完整重建所有輸入內容,計數器並非為此設計,你也不該在任何測試區域中輸入敏感資料。
頻率表是計數器的價值所在。資料列依計數遞減排序,若計數相同則依標籤排序以維持穩定的平手規則,因此頂端列為本階段最常被按下的按鍵,且相同的計數在重新載入相同資料時永遠以相同方式決定先後。每一列顯示標準化標籤,以及該標籤被標記的已接受事件數量。頻率對應表涵蓋目前階段,並會與其他內容一同在重設時清除。
按鍵計數器 vs 鍵盤測試工具
這兩種工具回答不同的問題,而選擇正確的工具始於釐清問題。
| 你想回答的問題 | 按鍵計數器 | 鍵盤測試工具 |
|---|---|---|
| 瀏覽器接收了多少 keydown 事件? | 是,每階段總計 | 否 |
| 哪個按鍵標籤出現最多次? | 是,排序後的頻率表 | 否 |
| 瀏覽器是否看到某個實體按鍵被按下? | 僅在擷取區域擁有焦點時 | 是,完整佈局檢視 |
| 某個開關是否有瑕疵、卡鍵或鬼鍵? | 否 | 是,那就是診斷項目 |
| 計數是否包含按住按鍵的重複? | 可透過開關選擇 | 不適用 |
| 已接受標籤的最近順序 | 僅最後十個 | 不適用 |
計數器著重於數量與分布。測試工具則著重於某個按鍵是否會產生事件。針對彈跳調查,請先使用測試工具確認每個按鍵都有註冊;若為習慣或數量的問題,計數器才是合適的工具。
當按住按鍵的重複改變了計數
因為重複原則是最常見的混淆來源,值得逐一檢視兩種狀態。當重複計數關閉時,按住字母 H 兩秒會在總計中產生一個 "H" 事件,在頻率表中產生一筆計數為一,儘管瀏覽器實際傳遞了數十個事件。這符合「一次實體按住算一次」的心智模型,也是預設值,因為大多數人習慣以這種方式思考按鍵。
當重複計數開啟時,同樣的按住會產生數十個 "H" 事件,全部都會被計算並累計。總計會快速增加,頻率表則會被持續按住的那個按鍵主導。當你特別想觀察瀏覽器端的重複行為時,這個模式相當有用,例如檢查某個輸入法或自動化工具是否產生額外事件,但對於一般性的打字計數,這通常不是你想要的。
計數器不會測量重複之間的間隔,因此無法告訴你鍵盤的重複速率。它也不會裁決重複旗標;若合成事件以 repeat 設為 true 派送且開關為開啟,該事件就會被計入。
隱私與限制須知
計數器所顯示的一切都存在於目前的瀏覽器分頁中。已接受的標籤與計數不會被上傳、不會儲存至帳號、不會自動複製,也不會在重新整理後保留。沒有隱藏的全文件監聽器;處理常式附加於可見的可聚焦區域,因此計數器無法看見你在頁面上其他輸入欄位中所輸入的內容。這種僅限本機端的契約是可靠的,這也是此工具可在共用機器上使用而不會留下永久紀錄的原因。
有幾項因素可能使數字與你的預期不同。合成事件、瀏覽器擴充功能、遠端桌面軟體、輸入法、輔助工具以及螢幕鍵盤都可能影響頁面所接收的事件。行動裝置鍵盤可能產生不同的標籤或編輯行為。瀏覽器與作業系統的快捷鍵可能在網頁看到之前就被攔截,因此並非每一次實體動作都保證會產生紀錄。組合文字可能與實體按鍵不完全一對一對應,特別是依賴 IME 組字的語言。計數器回報的是瀏覽器事件,而非硬體真實情況,因此與鍵盤測試工具的任何交叉比對,都應被視為兩種不同測量方式之間的比較,而非對任一者的確認。
若想深入了解,請參閱使用織毛線計數器時避免犯錯。
若想深入了解,請參閱多計數器中的計數器名稱與數值是否會被上傳?。