Hold a key, and it repeats — blazing fast. No more finger fatigue from mashing the same button over and over.
A lightweight Windows utility with a simple GUI that rapidly repeats any key while it's physically held down — much faster than the default OS key repeat. Useful for gaming, accessibility, productivity, or anywhere you need rapid key repeats.
- Toggle ON/OFF with a single click
- Configurable target key — click "Change Key…" and press any key (default: E)
- Adjustable repeat speed — slider from 5 ms (~200 reps/sec) to 200 ms (~5 reps/sec)
- Lightweight tkinter GUI, no heavy dependencies
- Standalone
.exeavailable — no Python needed
- Gaming — spam interact/gather keys (e.g. gathering plants in Enshrouded, fishing in MMOs, rapid-fire actions)
- Accessibility — help users who have difficulty pressing keys repeatedly
- Productivity — rapid scrolling, text deletion, or any repetitive key action
Grab the latest KeyRepeatTool.exe from the Releases page — no Python installation needed. Just download and run!
You may need to right-click → Run as Administrator for the keyboard hooks to work.
Windows SmartScreen warning: Since the
.exeis not code-signed, Windows may show an "Unknown publisher" warning. This is normal for open-source tools. Click "More info" → "Run anyway" to proceed.
- Python 3.12+
keyboardlibrary
pip install -r requirements.txtpython key_repeat.pyNote: On Windows you may need to run your terminal as Administrator so the
keyboardlibrary can install global key hooks.
pip install pyinstaller
pyinstaller KeyRepeatTool.specThe executable will be in the dist/ folder.
- Launch the program.
- (Optional) Click Change Key… and press the key you want to repeat (default is E).
- Adjust the repeat interval with the slider if needed.
- Click ON to activate.
- Hold down the target key — it will repeat rapidly until you release it.
- Click OFF (or close the window) to deactivate.
The program uses the keyboard library to install a global hook on the configured key. When a key-down event is detected, a background thread starts sending rapid key-press events at the configured interval. When the key is released, the thread stops. A _simulating flag prevents the hook from reacting to the synthetic events it generates.
MIT