KeyBlaster is an open-source macOS menu-bar app that plays a shotgun blast on every keystroke when armed. It lives in the menu bar only (no Dock icon, no main window) and uses a listen-only system event tap to detect key presses—never recording or transmitting which keys you type.
Inspired by ShotgunKeyboard. KeyBlaster is not affiliated with, endorsed by, or maintained by ShotgunKeyboard or its authors.
| Feature | Behavior |
|---|---|
| On / Off | Toggle arming from the menu; the menu bar icon dims when disarmed |
| Volume | Adjust blast loudness from 10% to 100% |
| Hold-to-repeat | Off by default (ignores autorepeat); enable to fire on held keys |
| Modifier keys | Off by default (Shift, Command, Option, and Control alone do not fire); enable to include them |
| Launch at login | Register or unregister a login item so KeyBlaster starts with macOS |
| Test sound | Preview the blast without typing |
| Permissions | Guided setup for Input Monitoring; the app relaunches automatically after you grant access |
KeyBlaster listens for the fact that a key was pressed so it can play a sound. It never records, stores, logs, or transmits which key was pressed or what you typed. No analytics, no network calls, no keystroke history.
Local diagnostics (app lifecycle and errors only—never key identity) are written under:
~/Library/Application Support/KeyBlaster/Logs/
Files rotate when they exceed 50 MB. Only the 5 most recent log files are kept; older ones are deleted automatically.
KeyBlaster needs Input Monitoring permission before it can hear keystrokes.
- Click the KeyBlaster menu bar icon and choose Open Input Monitoring… (macOS opens System Settings → Privacy & Security → Input Monitoring).
- Enable the toggle for KeyBlaster.
- KeyBlaster detects the grant within about a second and relaunches itself so the event tap can attach. You should hear blasts on keystrokes once armed.
If permission is missing, the menu shows a reminder and the app stays silent until access is granted.
macOS ties Input Monitoring to the app’s code signature. Ad-hoc or constantly rebuilt Xcode binaries get a new identity every build, so System Settings can show an old KeyBlaster entry as On while the running binary is treated as unauthorized.
Fix:
- In Xcode, use Signing & Capabilities → Team (Apple Development), not unsigned/ad-hoc.
- In System Settings → Privacy & Security → Input Monitoring, remove every KeyBlaster row, then launch the app once and enable the new entry.
- Prefer Product → Run from the same signed scheme going forward so the grant sticks across rebuilds.
Requires macOS 14 Sonoma or later and Xcode 16+.
- Clone this repository.
- Open
KeyBlaster.xcodeprojin Xcode. - Select the KeyBlaster scheme and your Mac as the run destination.
- Press Run (⌘R).
The app runs as a menu-bar accessory. Use the status item to arm, adjust settings, or quit.
macOS may suppress keyboard events in secure input contexts (password fields, some terminal sessions, certain apps with elevated privacy). KeyBlaster cannot blast in those situations—this is an OS limitation, not a bug in the app.
The bundled blast sample is CC0 (public domain). See NOTICE for source URL and license details.
KeyBlaster is released under the MIT License.