RapidFire
The RapidFire module lets a user send repeated key taps while a key is held.
Some instances where this may be useful are:
- MMOs and other games where you are encouraged to repeatedly spam a key
- More responsive volume up and volume down
- Faster cursor key navigation
- Combine with the Mouse Keys module to create rapid-fire mouse clicks
- Anywhere else you may need an ergonomic alternative to repetitive key tapping
Keycodes
| Key | Description |
|---|---|
KC.RF(kc) | Repeatedly sends the specified keycode while pressed |
Usage
Each repeat counts as one full cycle of pressing and releasing. RapidFire works with modifiers (i.e., holding Shift plus a RapidFire key will repeatedly send the shifted version of that RapidFire key) and chaining (i.e., KC.RF(KC.LSHIFT(KC.A)). Multiple RapidFire keys can be held down at the same time, and their timers work independently of each other.
The RapidFire keycode has a few different options:
| Option | Default Value | Description |
|---|---|---|
interval | 100 | The time between key taps sent in milliseconds. Note: 10 appears to be the minimum effective value. |
timeout | 200 | The amount of time in milliseconds the key must be held down before RapidFire activates. Useful if you want to be able to type with keys that have a low interval value. A value of 0 will result in no waiting period. |
enable_interval_randomization | False | Enable randomizing the value of interval. Useful for making the repetitive input look human in instances where you may be flagged as a bot otherwise. |
randomization_magnitude | 15 | If enable_interval_randomization is True, the time between key taps sent will be interval plus or minus a random value up to this amount. |
toggle | False | If set to True, activating RapidFire will toggle it on or off. Useful if you don’t want to have to keep the button held. Set timeout to 0 if you would like to toggle on tap. |
Example Code
from kmk.modules.rapidfire import RapidFire
keyboard.modules.append(RapidFire())
# After 200 milliseconds, repeatedly send Shift+A every 75-125 milliseconds while the button is held
SPAM_A = KC.RF(KC.LSFT(KC.A), timeout=200, interval=100, enable_interval_randomization=True, randomization_magnitude=25)
# Immediately toggle repeatedly sending Enter every 50 milliseconds on tap
SPAM_ENTER = KC.RF(KC.ENT, toggle=True, timeout=0, interval=50)
keyboard.keymap = [[
SPAM_A, SPAM_ENTER
]]