| Crates.io | morseytype |
| lib.rs | morseytype |
| version | 0.1.2 |
| created_at | 2025-08-11 10:28:33.876766+00 |
| updated_at | 2025-08-11 11:48:52.254555+00 |
| description | MorseyType is a terminal-based Morse code typing trainer designed to help you improve your Morse code proficiency through structured practice sessions. The application presents words from english vocabulary lists, challenges you to type them in Morse code, and provides real-time performance feedback. |
| homepage | |
| repository | https://github.com/piter231/morseytype.git |
| max_upload_size | |
| id | 1789885 |
| size | 51,516 |
MorseyType is a terminal-based Morse code typing trainer designed to help you improve your Morse code proficiency through structured practice sessions. The application presents words from english vocabulary lists, challenges you to type them in Morse code, and provides real-time performance feedback.
in order to run it, just run
# cargo is just package manager for rust
cargo install morseytype
morseytype
#and begin to press spaces in specific duration.
its dependency is x11, should be installed by default, otherwise just install libx11 using your os package manager.
git clone https://github.com/piter231/morseytype.git
cd morseytype
cargo build --release
cargo run -- [WORD_COUNT] [THRESHOLD_MS]
# 10 words, 150ms threshold
cargo run
# 5 words, 200ms threshold
cargo run -- 5 200
| Parameter | Default | Description |
|---|---|---|
| WORD_COUNT | 10 |
Number of words to practice |
| THRESHOLD_MS | 150 |
Duration threshold in milliseconds to distinguish dots (.) and dashes (-) |
| Key | Function |
|---|---|
Space |
Press and release quickly for dot (.), hold longer for dash (-) |
f |
Insert letter separator (/) |
j |
Insert word separator (space) |
; |
Backspace (remove last character) |
q or Esc |
Exit program |
Special thanks to SMenigat for creating and maintaining the thousand-most-common-words repository, which provides the word lists used in this application. I converted the en.json from this repo into current dict.rs, in order to make it easy to use as one execuitable.
Input Handling: The application uses precise timing to distinguish between dots (.) and dashes (-). The default threshold is 150ms, but you can adjust this based on your typing speed and preference.
Performance: The real-time WPM calculation is based on completed words. The final average WPM is calculated based on the total time taken to complete all words.
The main inspiration to make this project was watching the experienced morse operator on the video, and how quickly he does his job. Developing MorseyType was a challenging but rewarding experience. One of the most difficult aspects was implementing the precise timing mechanism for distinguishing between dots and dashes. After several iterations of trial and error with different timing approaches, I finally succeeded in creating a reliable system that:
The result is a responsive typing experience that faithfully translates your key presses into Morse code characters.
Contributions are welcome! If you'd like to improve MorseyType, please follow these steps:
git checkout -b feature/your-feature)git commit -am 'Add some feature')git push origin feature/your-feature)This project is licensed under the MIT License - see the LICENSE file for details.