Skip to content

Typing Test

Scrimas edited this page Sep 15, 2026 · 1 revision

Typing Test

A Monkeytype-style typing test that runs entirely offline, inside the launcher: tap Super, type ^ (or the word typing, or wpm) and start typing. Time, words or zen modes, a live keyboard preview that points at the next key and can colour every key by the finger that should press it, Monkeytype sound packs, and a score history that keeps aggregate numbers only. Split and custom keyboards running Vial firmware are drawn from the keyboard's own layout.

Quick start

  1. Super, then ^ — the test panel replaces the results. Or search typing.
  2. Start typing the words. Ctrl + R restarts; Ctrl + 1 / 2 / 3 switches between time, words and zen.
  3. Ctrl + , opens the test's own settings page; Ctrl + H the score history; Ctrl + S the statistics.
  4. Prefer a full page? The same test is a Cheat Sheet tab too (Super + /), on by default under Settings → Cheat Sheet → Enable Typing test.

Modes

  • Time — a countdown: 15, 30 (default), 60 or 120 s.
  • Words — a fixed count: 10, 25, 50 (default) or 100, finishing on the last word without a trailing space (switchable).
  • Zen — no timer and no quota. Free zen types whatever you like; guided zen (Ctrl + G) generates the same words the other modes use and keeps extending them, so speed and accuracy are still measured against real text, but nothing counts down and the test ends only when you end it (Shift + Enter). The clock is hidden while it runs. Zen results (free or guided) are shown and count toward the lifetime totals, but are not stored as scores.

Punctuation (Ctrl + P) and numbers (Ctrl + N) can be mixed in, and the language (Ctrl + L) comes from Monkeytype's word lists (english_1k by default).

The typing surface

Text size, how many lines stay on screen, the caret style (line, block, underline or off), smooth caret and line motion, highlighting only the current word, blind mode (mistakes hidden until the result), live speed and accuracy readouts, and whether Tab restarts outright or first points at the restart button (off by default, because Tab also walks the launcher's controls).

Keyboard preview

A keyboard is drawn under the text and can point at the next key. Layouts: qwerty, qwertz, azerty, dvorak, colemak — or vial, which reads the keyboard actually plugged in.

Finger guide

Finger guide (off by default) — Color keys by finger and guide the next keystroke: each key is tinted by the finger that should press it, and a hand legend lights the finger for the next character. Fingers are suggested by key position; Adjust fingers lets you reassign any key and Reset fingers goes back. Assignments are stored per board (Config.options.search.typingTest.keyboard.fingerAssignments), so a custom board keeps its own.

Vial keyboards

With the layout set to vial, scripts/typing/vial_keyboard.py reads the keyboard's physical layout and keymap over raw HID. Nothing is hardcoded per keyboard: the firmware carries its own KLE layout and keymap, so a split, staggered or rotated board draws itself correctly and its layers come back labelled (switchable under the preview). Only read commands are used, so it works while the keyboard is locked (Vial's lock only gates writes). If nothing is found, the preview says No Vial keyboard is readable. Plug it in, or pick another layout. — check the connection and the hidraw device permissions.

Sound

Key sounds and a separate mistake sound from the Monkeytype packs (catalogued in assets/typing/sounds-manifest.json), with a volume slider.

Score history and statistics

Keep results on this machine stores aggregate scores only — never the words or the keys — in ~/.local/state/quickshell/states.json, up to a configurable number of results (100 by default), with personal bests per exact setup and lifetime totals on the statistics page, and a button to clear everything.

Shortcuts

Keys Action
Esc Back, or leave the page
Ctrl + R Restart
Tab, Enter Point at restart, then press it (Tab alone restarts when enabled)
Shift + Enter Finish zen, or start the next test
Ctrl + Backspace Erase the current word
Ctrl + 1–3 Time, words or zen
Ctrl + G Free or guided zen
Ctrl + [ / ] Previous or next length
Ctrl + P / N / L Punctuation / numbers / next language
Ctrl + , Settings
Ctrl + H / S Score history / statistics

Configuration

  • Settings → Launcher → Search modules → Typing test enables the panel (Config.options.search.modules.typingTest.enable); its prefix is under Search Prefixes (Config.options.search.prefix.typingTest, ^ by default).
  • Settings → Cheat Sheet → Enable Typing test (Config.options.cheatsheet.enableTypingTest) adds the full-size tab.
  • The test's own settings live inside it (Ctrl + ,) and persist under Config.options.search.typingTest.

Under the hood

Piece Role
modules/ii/overview/TypingTestPanel.qml + typing/ The panel: engine, word viewport, toolbar, results, history and statistics pages, settings page, keyboard preview, finger hands and palette
modules/ii/cheatsheet/CheatsheetTypingTest.qml The Cheat Sheet tab
services/TypingLanguages.qml, services/TypingSoundPacks.qml Word lists and sound packs
services/VialKeyboard.qml, scripts/typing/vial_keyboard.py Reading a Vial board over raw HID
scripts/typing/sync_monkeytype_languages.py, sync_monkeytype_sounds.py Fetching the Monkeytype assets

Related pages

← Back to Home

Clone this wiki locally