Computer Keyboard Test Manual
Understand what reaches the browser, keep a clear test summary, and avoid mistaking a missing event for a hardware diagnosis.
Start and leave the test
Choose the diagram closest to the keys you want to check, select Windows or Mac key names, and select Start test. The outlined test area receives focus. Press and release keys on a physical keyboard. Clicking its visual keycaps does not create observations.
Press Esc and release it to pause. Tab moves focus normally and also pauses the test; Tab is never trapped. Pause is available outside the diagram. Selecting Resume test explicitly reactivates capture. Returning from another tab or window does not restart capture by itself.
Only keyboard events received while this test region is active and focused enter the session. Keys used in navigation, theme selectors, dialogs or other applications are not collected. Browser/operating-system shortcuts remain available and may interrupt the test. No Keyboard Lock, hardware permission or fullscreen mode is used.
Reference diagrams and key names
Full size contains 104 reference codes. Without numpad contains 87, removing the 17 numeric-keypad codes. Compact contains 61, also removing the function/control row, six navigation keys and four arrow keys. These are ANSI diagrams, not automatic detection of your hardware. Your keyboard may have a different arrangement or extra keys.
Windows and Mac key names change the displayed modifier names. Command corresponds to Meta codes and Option to Alt codes. They do not remap your keyboard or identify an Apple model. Non-ANSI codes such as IntlBackslash, IntlYen and IntlRo can be listed under Outside this diagram without raising the selected diagram's coverage.
Changing a diagram after observations asks you to reset the test. Cancel keeps the original diagram and results. Changing key names keeps the same code identities and counts. Neither choice is saved across a full reload. The defaults are Full size and Windows key names.
What the counts mean
- Observed on this diagram: distinct observed codes that belong to the selected reference. It is coverage of a diagram, not a hardware health percentage.
- Held now: observed keydown cycles for which this page has not yet seen a matching keyup while capture remains active.
- Maximum held together: the largest held-code set in this session, including codes outside the diagram. It is not a certified rollover rating.
- Presses: new keydown cycles. Pressing A ten times can give ten presses but only one distinct observed code.
- Repeats: additional keydown events while a code is already held. Normal auto-repeat does not establish switch chatter or a new press.
- Releases observed: matching keyup events. A release without an observed current hold creates no new observation.
- Interrupted holds: capture ended before the release was seen. This can happen when you switch tabs, open a menu/dialog, pause or export. It does not mean a key is stuck.
- Unmapped events: events without a usable physical code. The app does not guess physical keys from characters or obsolete keyCode values.
- Suppressed orphan repeats: repeat events received without a known current press. Release the key and press again to begin a fresh observed cycle.
Three worked examples
One tap
Press A and release it. For KeyA, expect one press, one release and one observed code. Held now returns to zero; maximum held together is one.
Hold A
Press A, hold it through two auto-repeat events, then release. Expect one press, two repeats and one release. It is still one distinct code. The number of repeats depends on the system settings and events the browser receives.
A combination interrupted by focus loss
Hold left Shift, then A. If both events reach the page, Held now and maximum held together become two. Switch away before releases are observed: capture pauses, Held now becomes zero, and each code receives one interrupted hold. No release is invented. Resuming keeps the earlier observed coverage.
Code, key value and location
The physical-position code is used for identity. The current key value reflects the active language/input layout. For example, a physical KeyQ position may produce a different letter on another layout. Left and right modifiers remain distinct; Enter differs from NumpadEnter, and Digit1 differs from Numpad1 even when both produce “1”.
Last key value is a temporary single-event display, limited to 32 Unicode code points. It is replaced by the next accepted event and excluded from reports. There is no typed-text buffer or chronological event list. Location and repeat are descriptive. A Dead value is a composing key, not evidence of failure. If text composition starts, capture pauses without collecting composition text; resume when ready.
If a key is not observed
Check that the test is active and focused, then release and press the key again. On a numeric keypad, Num Lock may change the character/navigation meaning while the physical code remains the same. Fn layers, brightness/media keys, Print Screen, Meta combinations and browser shortcuts may be intercepted before a webpage receives them. Some combinations can change focus or navigate away.
A phone's screen keyboard, accessibility input or other virtual device does not establish that a physical switch works. Connect an external keyboard for a physical-key test. Compare the behavior in another application, browser or device before drawing a hardware conclusion. This app does not measure latency, polling rate, switch reliability, WPM or hardware health, and it does not repair or remap keys.
Keep a report
Copy report produces Markdown. Download report offers Markdown (.md), structured JSON (.json), and plain text (.txt). Keeping a report first pauses capture and freezes a consistent snapshot. Copy and downloads reuse that snapshot until results or settings change. Check your browser's clipboard/download result; an automatic clipboard failure opens a manual-copy dialog.
The report contains app, engine and schema versions; a generated UTC timestamp; selected reference and key names; observed/not-yet-observed/outside-diagram code lists; per-code aggregate presses, repeats, releases and interrupted holds; aggregate unmapped/suppressed counts; and the maximum observed simultaneous count. It excludes raw key values, typed content, event order/timing, user-agent fingerprint and hardware identity. A report can still reveal which reference keys were used, so share it only when useful.
Filenames use the generated UTC date: computer-keyboard-test-YYYY-MM-DD.md, .json or .txt. Downloads are UTF-8 with LF newlines and no BOM. Clipboard and downloads are explicit copies outside this app; the selected destination can keep them. Nothing is sent to Mycelgrid as part of producing a report.
Structured JSON follows the Computer Keyboard Test report schema 1.0.0. This standalone format has its own schema identity; it is not the native Mycelgrid Keyboard Tester report format.
Session limits and reset
The test allows 256 distinct codes and up to 1,000,000 presses, repeats, unmapped events or suppressed orphan repeats per corresponding counter. Reaching a bound pauses capture and preserves the results for export/reset. Reports have a 1 MiB encoded UTF-8 limit. These are app resource bounds, not hardware findings.
Reset clears current observations, held states and current-event detail. When observations exist, confirmation gives you a chance to keep a report first. Cancel preserves results. Reset keeps the selected diagram and key-name style, then focuses Start test. Results live only in this page's memory: reload, tab closure or browser data loss can remove them. A browser history return may retain page memory, but capture stays paused and restoration is not guaranteed.
Internal navigation warns before leaving nonempty results. The app's current-page logo does not reload your session. Same-document fragments, new-tab links and downloads retain their normal behavior. Browser exit prompts depend on the browser and may not always appear.
Appearance and accessibility
The header and footer appearance selectors share this site's System, Light and Dark preference. The theme preference can persist, separately from test results. On a small screen, the keyboard scrolls sideways within its own region; controls and results remain outside it. While paused, use ordinary keyboard/touch scrolling to inspect the reference. In active capture, test keys can have their scrolling defaults prevented; Esc or Tab leaves the test area.
Observed keys have a dot and held keys a pressed shape as well as color. View details provides an ordinary table, and Start/Pause/reset/errors receive concise status messages rather than a spoken character stream.
Method references
Event semantics follow W3C UI Events, KeyboardEvent code values, and key values. The session grouping, reference diagrams and reporting rules described here are this app's own behavior. App 1.0.3 · engine 1.0.0 · report schema 1.0.0.