A modern, feature-rich typing speed test application built with Python and CustomTkinter. Test your typing speed, accuracy, and improve your skills with a clean, intuitive interface.
- Features
- Screenshots
- Installation
- Usage
- Controls
- Technical Details
- File Structure
- Contributing
- Roadmap
- System Requirements
- Troubleshooting
- License
- Author
- Acknowledgments
- Support
- Real-time typing test with live feedback
- Multiple time options: 30s, 60s, 120s
- Instant results with comprehensive statistics
- Custom text input for personalized practice
- Words Per Minute (WPM)
- Typing accuracy percentage
- Total characters typed
- Mistake count
- Word count
- Time elapsed
- Dark theme with orange accent colors
- Real-time visual feedback (green for correct, red for incorrect)
- Adjustable font size (10-24px)
- Scrollable text area for long passages
- Responsive layout
- Adjustable font size slider
- Multiple test duration options
- Custom text input capability
- Auto-generated practice text using Faker library
- Python 3.7 or higher
- pip package manager
git clone https://github.com/vidhun05/keysprint.git
cd keysprint
pip install -r requirements.txt
python keysprint.py- Launch the application
- Choose your preferred test duration (30s, 60s, or 120s)
- Adjust font size if needed using the slider
- Click anywhere and start typing - the timer starts automatically
- Click the "Custom Text" button
- Enter your desired text in the input field
- Press Enter to set the custom text
- Results appear automatically when the test completes
- View your WPM, accuracy, mistakes, and other statistics
- Click "Restart" to begin a new test
| Action | Control |
|---|---|
| Start Test | Begin typing |
| Restart Test | Click "Restart" button |
| Custom Text | Click "Custom Text" button |
| Change Duration | Select radio button (30s/60s/120s) |
| Adjust Font | Use font size slider |
- Python 3.x - Core programming language
- CustomTkinter - Modern UI framework
- Tkinter - Standard GUI toolkit
- Faker - Random text generation
- Event-driven design with real-time updates
- Modular functions for easy maintenance
- Global state management for test tracking
- Responsive grid layout system
on_keypress()- Handles real-time typing feedbackstart_timer()- Manages test timingshow_results()- Calculates and displays statisticsrestart()- Resets application state
keysprint/
├── main.py # Main application file
├── requirements.txt # Python dependencies
├── README.md # Project documentation
├── text_generator.py # text generator
└── icon.ico # application icon file
Contributions are welcome!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Add different typing modes (paragraph vs random words)
- Add profile saving and statistics tracking
- Support themes/light/dark toggle
- Add typing sounds for feedback
- Implement leaderboard integration
- User Profiles: Save and track progress
- Multiple Color Themes
- Text Difficulty Levels
- Historical Statistics Dashboard
- Audio Typing Feedback
- Online Leaderboards
- Exportable Results
- OS: Windows 10+, macOS 10.14+, Linux
- Python: 3.7 or higher
- RAM: 50MB minimum
- Storage: 10MB available space
- Make sure Python 3.7+ is installed
- Ensure all dependencies are installed:
pip install -r requirements.txt
- Try adjusting the font size using the slider
- Restart the application
- Make sure typing starts in the correct area
- Click restart and try again
This project is licensed under a custom Non-Commercial License based on the MIT License.
You are free to:
- Use the software for personal or educational purposes
- Modify and improve the code
- Contribute via pull requests
You are not allowed to:
- Sell or use this software for commercial purposes
- Distribute modified versions for profit
See the LICENSE file for full terms.
Vidhun Roshan - Initial work
- CustomTkinter for UI components
- Faker for random text generation
- Python community for extensive support
If you encounter any problems or have questions, please:
- Check the Issues page
- Create a new issue if your problem isn't listed
- Provide details about your environment and the issue
⭐ If you found this project helpful, give it a star! ⭐

