A lightweight, local-only desktop application that tracks keyboard analytics, monitors mouse activity, builds live heatmaps, and measures typing speed and accuracy.
KeyTracker is 100% offline, privacy-focused, and designed for gamers, developers, and anyone who wants deep insights into their input behavior.
- Visual map showing keypress frequency across your entire keyboard
- Live updates as you type
- Color-coded intensity visualization
- Measure WPM (Words Per Minute) and Accuracy
- Real-time character feedback (green for correct, red for incorrect)
- Multiple practice paragraphs
- Auto-completion when test finishes
- Progression history tracking
- Captures left, right, middle, and side button clicks
- Tracks scroll wheel interactions
- Comprehensive click statistics
- Dedicated monitoring for gaming keys (WASD, Space, Shift, Ctrl)
- Strafe Ratio Analysis - Calculate left/right movement distribution (A/D ratio)
- Number key tracking (1-5)
- Perfect for analyzing gaming performance
- Save and load tracking sessions as JSON
- View detailed session statistics
- Compare two sessions side-by-side
- Export data for analysis
- Zero network requests
- All data stored locally
- No telemetry, no tracking, no logins required
- Full control over your data
- Python 3.10+ (Download)
- Windows, macOS, or Linux
git clone https://github.com/vaavgit/Keyboard-Tracker.git
cd Keyboard-Tracker# Windows
python -m venv .venv
.venv\Scripts\activate
# macOS/Linux
python3 -m venv .venv
source .venv/bin/activatepip install -r requirements.txtpython main.pypip install pyinstaller
pyinstaller KeyTracker.specThe compiled executable will be in the dist/ directory. You can run it without Python installed!
- Enter a session name (e.g., "Gaming Session 1", "Coding Marathon")
- Click Start to begin tracking
- Your keyboard heatmap, click counts, and stats update in real-time
- Click Stop & Save when done
- Session is automatically saved as JSON
- Click Start Test
- Read the displayed paragraph
- Type it in the text box
- Watch real-time accuracy feedback (green = correct, red = mistakes)
- Test auto-completes when finished
- Check your WPM and Accuracy in the stats cards
- History of all test runs appears on the right
- Browse all saved sessions
- Click a session to see detailed statistics
- Compare top keys, WASD distribution, and strafe ratios
- Select two sessions from the left and right lists
- Click Compare Selected Sessions
- View a detailed diff of key distribution, mouse clicks, and KPM
For Gamers:
- Analyze your gaming performance
- Track WASD key distribution for movement patterns
- Monitor mouse click frequency
- Improve reaction time through typing speed tests
For Developers:
- Track your coding speed and efficiency
- Analyze keyboard patterns and hot keys
- Measure productivity in different coding sessions
For Typists:
- Measure WPM improvement over time
- Practice typing accuracy
- Build consistent touch typing habits
For Anyone:
- Private keyboard analytics
- No cloud storage or tracking
- Completely offline operation
Keyboard-Tracker/
├── main.py # Main UI and window management
├── engine.py # Core tracking engine & background thread
├── heatmap_widget.py # Keyboard heatmap visualization
├── theme.py # Dark theme and color constants
├── KeyTracker.spec # PyInstaller configuration
├── requirements.txt # Python dependencies
├── LICENSE # MIT License
├── README.md # This file
└── sessions/ # Auto-created directory for saved JSON data
- pynput - System-wide keyboard and mouse event hooks
- PyQt6 - Cross-platform desktop GUI framework
- matplotlib - Heatmap visualization
- numpy - Data processing
- Multithreaded: Background listener thread captures input without blocking UI
- Thread-safe: Locks protect shared state between UI and tracking threads
- Low overhead: Minimal CPU/memory usage
- Zero network: Completely self-contained
✅ Completely Offline
- No internet connection required
- No cloud storage
- No telemetry or tracking
✅ Full Data Control
- All session data stored locally in
sessions/directory - Data remains on your computer
- Export sessions as JSON anytime
✅ Open Source
- Transparent code you can audit
- MIT License - free for personal and commercial use
Solution: Grant accessibility permissions
# macOS: System Preferences → Security & Privacy → Accessibility
# Linux: May need sudo for keyboard hookingSolution: Reinstall dependencies
pip install --upgrade pynputSolution: Ensure Python 3.10+ is installed
python --versionThis project is open-source under the MIT License. See LICENSE for details.
You're free to:
- ✅ Use for personal or commercial purposes
- ✅ Modify and redistribute
- ✅ Fork and create derivatives
- ✅ Use privately or publicly
Contributions are welcome! To contribute:
- Fork the repository
- Create a branch for your feature (
git checkout -b feature/amazing-feature) - Make your changes and commit (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request with a clear description
See CONTRIBUTING.md for detailed guidelines.
- Dark/Light theme toggle
- Custom keyboard layouts
- Audio alerts for typing tests
- Export to CSV
- Advanced analytics dashboard
- Multiplayer comparisons
- Integration with fitness trackers
- Mobile companion app
- Found a bug? Open an Issue
- Have a feature request? Create a Discussion
- Want to contribute? Check out CONTRIBUTING.md
- Built with PyQt6
- Input hooking via pynput
- Visualization with matplotlib
- ⌨️ Tracks every keystroke
- 🖱️ Monitors all mouse interactions
- 📈 Real-time performance metrics
- 💾 Persistent session storage
Made with ❤️ by @vaavgit
⭐ If you find KeyTracker useful, please give it a star! ⭐