# Keyboard Tester

> 免安裝的線上鍵盤測試：按哪個鍵，畫面上的鍵盤就亮哪個，測過的鍵會留下記號。還能抓按鍵連跳、測多鍵同按（N-key rollover），並顯示 key 與 code。

- URL: https://bytescope.dev/zh-Hant/keyboard-test/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/keyboard-test.md) · [ja](https://bytescope.dev/ja/keyboard-test.md)
- Runs: 全部在你的瀏覽器裡跑，什麼都不會上傳。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

按任一鍵，它就會在視覺化鍵盤上亮起（ANSI、ISO 或 JIS 配置；60%、TKL 或全尺寸），然後保持著色，讓你能一個鍵一個鍵走遍整塊鍵盤 — 這正是檢查新鍵盤或驗證二手鍵盤的標準流程。每次按鍵也會把完整的事件細節記錄下來 — `event.key`、`event.code`、舊式 keyCode、location、repeat — 記在一份可複製的等寬字型日誌中，並附一條即時的修飾鍵列顯示 Ctrl/Shift/Alt/Meta，以及 CapsLock/NumLock 的鎖定狀態。

有兩項檢查超出多數測試工具的範圍。Rollover：盡量同時按住越多鍵越好，工具會回報有多少個鍵同時被辨識（也就是你鍵盤真正的 N 鍵無衝突，含目前值與本次工作階段的最大值）。Chatter：當一次實體按壓被辨識成兩次 — 也就是機械軸磨損的經典故障 — 工具會標示任何放開到按下間隔小於 30 ms 的按鍵、把它標成洋紅色並計數，讓一個間歇性重複輸入的軸體帶著證據現形。

頁面對瀏覽器看不到的東西也很誠實：作業系統保留的快捷鍵（Cmd+Tab、某些 Win 鍵組合）與 Fn 層的按鍵永遠不會傳到頁面，它們會被如實列出，而不是被當成失敗顯示。全螢幕模式能奪回一些作業系統原本會吞掉的組合鍵，而測試時會攔截那些原本會捲動或導覽頁面的按鍵。

打字速度與節奏分析模式讓你輸入一句短範例文字，回報 WPM，並附上按鍵間隔的平均值、中位數與標準差，再加上這段節奏的小型直方圖 — 比起單一個 WPM 數字，更能感受一顆軸體或鍵帽輪廓實際打起來的手感。在支援的 Chrome／Edge 上，一個開關能載入 Keyboard Layout API，把每個實體按鍵在你目前作業系統配置下實際輸出的字元，直接疊加顯示在視覺化鍵盤上 — 一旦你用的不是 US 配置，這功能就很有意義，因為預設的 QWERTY 圖示會誤導人；不支援的瀏覽器會誠實顯示「無法使用」，而不是給你一個看起來能用卻是錯的疊加畫面。而完整壓力測試報告，會把整個測試過程濃縮成一份可複製的摘要：目前選定佈局中所有按鍵的完成百分比、尚未按過的按鍵清單、偵測到的每一次 chatter 事件，以及你曾經同時按住過的最大按鍵數 — 直接可以貼到二手拍賣頁面或保固申請裡的文字。

## Limits

Does not remap keys or test keyboards the operating system has not recognised; it shows what key events the browser receives.

## Machine output

Copy JSON copies an envelope `{ tool, url, generatedAt, userAgentHint, result }`. `tool` is `"keyboard-test"`; `result` is a de-duplicated, sorted set of `code` values. `key` values, composed strings, press-order lists, timestamp sequences, and per-code counts are omitted.

- `layoutVariant` (string | null) — `"ansi"` | `"iso"` | `"jis"`. `null` = layout variant not set.
- `layoutSize` (string | null) — `"60"` | `"tkl"` | `"full"`. `null` = layout size not set.
- `detectedCodes` (string[]) — Detected `code` values, de-duplicated and sorted lexicographically.
- `notPressedCodes` (string[]) — Layout codes that never produced a keydown, sorted. This is "not pressed yet", not "broken".
- `unresponsiveCodes` (string[] | null) — Codes judged unresponsive (pressed, no event). `null` = not judged (this page has no dead-key confirmation). Never filled from `notPressedCodes`.
- `chatterCodes` (string[]) — Codes that tripped chatter detection, sorted. Counts are omitted.
- `sessionMaxHeld` (number) — Peak concurrent held keys. `0` = none held this session.
- `lastEventAtMs` (number | null) — Timestamp of the most recent captured event. `null` = no event this session.

## FAQ

### 有個鍵不會亮 — 它壞了嗎？

先看看它是否在不可測試清單上（作業系統保留的組合鍵、Fn 層、某些媒體鍵） — 瀏覽器永遠收不到那些鍵，頁面也會明確列出。如果一個普通的字母／數字鍵在事件日誌裡也毫無反應，而且同一個鍵在其他 app 也失效，那這個軸體或薄膜就真的壞了。

### 什麼是按鍵 chatter？偵測器怎麼運作？

Chatter 是一次實體按壓被辨識成多次按壓 — 磨損或髒污的機械軸在電氣上彈跳所致。偵測器會標示任何 keyup→keydown 間隔小於 30 ms 的按鍵，那遠比人類的連點還快。如果某個鍵在正常打字時累積了 chatter 事件，那個軸體就需要清潔或更換。

### 同時應該有多少個鍵被辨識？

辦公室鍵盤通常支援 6 鍵無衝突（6KRO）加修飾鍵；電競鍵盤則標榜 NKRO — 每個鍵都能同時觸發。盡量在整塊鍵盤上按住越多鍵越好：同時辨識的最大數量就是你真正的 rollover，如果它卡在 6，那就是 6KRO 硬體（或是某些鍵盤讓你可切換的 USB 模式上限）。

### 為什麼 Cmd+Tab／Win+L／Fn 鍵不會出現？

作業系統會在瀏覽器看到任何事件之前就消化掉那些快捷鍵 — 這是一道安全／使用體驗的界線，不是鍵盤故障。全螢幕模式能救回一些組合鍵，而 Fn 層的行為完全發生在鍵盤自己的控制器裡，任何軟體測試都看不到。

### 打字速度模式實際上量測的是什麼？

標準的 gross WPM—— （輸入字元數 ÷ 5）除以經過的分鐘數——再加上這個數字背後的節奏：連續按鍵之間間隔的平均值、中位數與標準差，以及該分布的小型直方圖。它對自身的限制也很誠實：時間是以「傳到瀏覽器分頁」的當下量測的，所以除了你手指的動作，也包含了作業系統／瀏覽器的輸入延遲抖動；按住不放的自動重複輸入則不會被算成一次新的按鍵。

### 為什麼還要特地顯示我鍵盤的實際佈局 — 圖示不是本來就對嗎？

視覺化鍵盤畫的是一張實體參考圖（US ANSI／ISO／JIS），但每個鍵實際會打出什麼字，取決於你作業系統的鍵盤佈局設定 — 在 AZERTY、Dvorak 或非拉丁字母的佈局上，那可能跟印出來的圖示差很多。「顯示我的佈局」開關會呼叫 Keyboard Layout API，把每個鍵的實際字元疊加顯示出來。這個功能僅限 Chromium 系瀏覽器（Chrome／Edge）；其他瀏覽器會拿到一個誠實的「無法使用」標籤，而不是一個悄悄顯示錯誤內容的疊加畫面。

### 完整壓力測試報告裡有什麼？

一份可複製的純文字摘要：目前佈局中按過多少個鍵、佔比是多少、尚未測試的按鍵確切代碼、偵測到的每一次 chatter 事件（哪些鍵、幾次），以及你曾經同時按住的最大按鍵數（實測 rollover）。這是為了讓你能直接貼到二手拍賣頁面、保固申請，或是針對特定一台鍵盤的論壇討論串裡而設計的。
