Version 1.2.0 — A terminal-based typing trainer inspired by keybr.com, built entirely in Python using the curses library.
Idea credits: The adaptive learning concept (progressive letter unlocking, per-letter confidence scoring, bigram tracking) was inspired by aradzie's keybr.com.
- 6 Practice Modes to improve different aspects of your typing
- Real-time WPM (words per minute) tracking
- Accuracy tracking with per-letter statistics
- Persistent progress saved across sessions (
~/.keybr_stats.json) - Color-coded feedback for correct and incorrect keystrokes
- Statistics dashboard with best WPM, averages, weak letters, and session history
- Keybr Offline mode with adaptive learning, progressive letter unlocking, and bigram tracking
- Keyboard Diagnostic — a professional visual keyboard tester with live key states, coverage tracking, guided and gaming modes, NKRO monitoring, and more
| Mode | Description |
|---|---|
| Common Words | High-frequency English words (365 words) |
| Hard Words | Challenging vocabulary (159 words) |
| Sentences | Full sentences for flow practice (25 sentences) |
| Symbols & Punctuation | Sentences with !, ?, ", :, ;, (), [], $ and more |
| Capital Letters | Real sentences with proper capitalization rules |
| Keybr Offline | Adaptive learning (keybr.com style) - progressive letter unlocking, weak-key targeting, bigram tracking |
| Keyboard Test | Visual keyboard diagnostic - live key layout, coverage tracker, guided & gaming modes, NKRO/anti-ghosting, repeat-rate & press-duration timing, scan-code info |
- Python 3
- A terminal that supports
curses(Linux / macOS) - Windows users will need
windows-curses(pip install windows-curses)
python3 Keybr.py| Key | Action |
|---|---|
↑ / ↓ |
Navigate the menu |
Enter |
Select a mode |
ESC |
Return to menu during practice |
Backspace |
Delete the last character |
| Any printable key | Type the displayed text |
A professional in-terminal keyboard tester (select Keyboard Test from the menu):
- Full layout — function row, QWERTY, nav cluster, arrows, and numpad with live key states
- Key states — pressed (green), held (yellow), released (fades back to gray)
- Modifier glow — Ctrl (red), Alt (blue), Shift (purple), Super/Win (cyan), combining naturally
- Coverage tracker — shows
X/Y keys testedand Keyboard Successfully Tested when complete - Guided mode — highlights the next key to press and waits for the correct one
- Gaming mode — emphasizes WASD / QER / 1-5 / modifiers / arrows for anti-ghosting tests
- NKRO / anti-ghosting — simultaneous-key counter with max detected
- Repeat-rate & press-duration — real-time Hz, repeat delay, and hold time in ms
- Scan-code info — key name, virtual key code, unicode character, device info
- Event history — scrolling, timestamped, capped at the latest 50 events
- Sound feedback — optional terminal-bell clicks (toggle with
Ctrl+T)
| Key | Action |
|---|---|
Ctrl+F |
Free mode (press anything) |
Ctrl+G |
Guided test mode |
Ctrl+B |
Gaming mode |
Ctrl+T |
Cycle sound: off → soft click → mechanical |
Ctrl+Q |
Return to menu |
Terminal limitations: a terminal cannot report key release events, so a key is treated as released after a short silence. CapsLock / Alt / Win / Menu / NumLock / PrtSc / ScrLk / Pause / media keys produce no dependable terminal event and are excluded from the coverage total. Shift is inferred from uppercase/shifted symbols and Ctrl from control characters.
- Select a practice mode from the main menu
- Type the displayed text as accurately and quickly as possible
- Green = correct, Red = incorrect, Yellow underline = current character
- When finished, your results are shown and the next round starts automatically
- Press
ESCat any time to return to the menu
Your progress is saved to ~/.keybr_stats.json after every session, including:
- Total sessions completed
- Best and average WPM
- Accuracy per letter (to identify weak points)
- Session history (last 100 sessions)
This project is licensed under the MIT License - see the LICENSE file for details.
- aradzie/keybr.com — Original keybr.com adaptive learning concept (https://github.com/aradzie/keybr.com)
- Python
curseslibrary for terminal UI
Created by johnvexcoder - github.com/johnvexcoder