Skip to content

Repository files navigation

KeyBlaster

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.

Features

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

Privacy

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.

Logs

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.

Input Monitoring setup

KeyBlaster needs Input Monitoring permission before it can hear keystrokes.

  1. Click the KeyBlaster menu bar icon and choose Open Input Monitoring… (macOS opens System Settings → Privacy & Security → Input Monitoring).
  2. Enable the toggle for KeyBlaster.
  3. 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.

“Already enabled, but KeyBlaster still asks”

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:

  1. In Xcode, use Signing & Capabilities → Team (Apple Development), not unsigned/ad-hoc.
  2. In System Settings → Privacy & Security → Input Monitoring, remove every KeyBlaster row, then launch the app once and enable the new entry.
  3. Prefer Product → Run from the same signed scheme going forward so the grant sticks across rebuilds.

Build and run

Requires macOS 14 Sonoma or later and Xcode 16+.

  1. Clone this repository.
  2. Open KeyBlaster.xcodeproj in Xcode.
  3. Select the KeyBlaster scheme and your Mac as the run destination.
  4. Press Run (⌘R).

The app runs as a menu-bar accessory. Use the status item to arm, adjust settings, or quit.

Secure input fields

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.

Sound attribution

The bundled blast sample is CC0 (public domain). See NOTICE for source URL and license details.

License

KeyBlaster is released under the MIT License.

About

macOS menu bar app that plays a shotgun blast on every keystroke — open source ShotgunKeyboard-style fun

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages