A lightweight Python desktop application that analyzes typing activity and keyboard usage patterns within an application window.
The program records keyboard events while typing, calculates typing statistics, and allows exporting session data in JSON and CSV formats. The project demonstrates event-driven programming, GUI development, automated testing, and CI/CD workflows.
The interface allows users to start a typing session, monitor keyboard activity, and export session analytics.
- Tkinter-based desktop GUI
- Real-time typing statistics
- Keyboard event tracking within the application window
- Export typing session data
- JSON and CSV data export
- Modular Python code structure
- Automated testing using pytest
- Continuous Integration using GitHub Actions
The application tracks and calculates:
- Total key presses
- Net characters typed
- Backspace usage
- Space and Enter key counts
- Keys per minute (KPM)
- Most frequently used characters
These statistics help analyze typing behavior and keyboard usage patterns.
keyboard-typing-analyzer
│
├── app.py
├── analyzer.py
├── export_utils.py
│
├── tests
│ └── test_analyzer.py
│
├── screenshots
│ └── app-interface.png
│
├── .github
│ ├── workflows
│ │ └── python-tests.yml
│ └── ISSUE_TEMPLATE
│ └── bug_report.md
│
├── CONTRIBUTING.md
├── README.md
├── LICENSE
└── .gitignore
- Python
- Tkinter
- Pytest
- JSON
- CSV
- GitHub Actions
Clone the repository:
git clone https://github.com/joshuvavinith/keystroke-dynamics-analysis.git
cd keystroke-dynamics-analysisCreate a virtual environment:
python -m venv venv
venv\Scripts\activatepython3 -m venv venv
source venv/bin/activateInstall dependencies for testing:
pip install pytestRun the program using:
python app.pyThis will open the typing analyzer interface.
- Enable the consent checkbox
- Click Start to begin recording
- Type inside the text area
- Click Stop to end the session
- Export results as JSON or CSV
Run automated tests using:
pytestThis project uses GitHub Actions to automatically run tests on every push or pull request.
The CI pipeline ensures:
- Code stability
- Automated verification of functionality
- Maintainable development workflow
Contributions are welcome.
To contribute:
- Fork the repository
- Create a new feature branch
- Make your changes
- Submit a pull request
Please refer to CONTRIBUTING.md for detailed guidelines.
This project does not perform global keylogging.
Keyboard events are captured only within the application window, making it safe for educational and demonstration purposes.
The software should not be used to monitor users without their consent.
This project originated from a college value-added cybersecurity course focused on keyboard event monitoring in Python.
It has been redesigned into a portfolio-ready typing analysis tool demonstrating modern software engineering practices.
This project is licensed under the MIT License.
