Native macOS menu-bar app that plays mechanical-keyboard switch sounds as you type.
- Minimal latency
- Fully offline, no telemetry
- Free and open-source (MIT)
Requires macOS 14+ and Xcode 16+.
A prebuilt, signed app is coming soon. Until then, build from source with Xcode (below).
brew install xcodegen
git clone https://github.com/nirajrajgor/keesound.git
cd keesound
cp Configs/Local.xcconfig.example Configs/Local.xcconfig # then set your Apple Team ID
xcodegen generate
open Keesound.xcodeproj # pick the Keesound scheme, ⌘ROn first launch macOS prompts for Input Monitoring — grant it in System Settings → Privacy & Security → Input Monitoring, then ⌘R again.
To install a Release copy to /Applications (launchable from Spotlight), run Scripts/install.sh (override the destination with KEESOUND_INSTALL_DIR).
- Four switch profiles: NovelKeys (NK) Cream (linear), Holy Panda (tactile), Cherry MX Blue and Kailh Turquoise (clicky)
- 5 random generic variants per profile, plus optional
space/enter/backspaceoverrides - Per-hit pitch (±5%) and gain (±25%) jitter so repeated strikes don't sound identical
- Volume, profile, and enabled state persist across launches
- Audio engine auto-suspends after 60 s idle and resumes on the next keystroke
The icon only changes for the one thing that needs attention — Input Monitoring permission:
| Icon | Meaning |
|---|---|
⌨ + ellipsis badge |
Permission not granted — open the popover to grant it |
⌨ (filled) |
Running normally |
Open the popover for the full runtime state (Active / Idle / Disabled / Permission missing).
Each profile ships real, MIT-licensed recordings from Mechvibes and kbsim. See Samples/README.md for sources, licenses, and how to swap in your own packs.
CGEventTap ──▶ KeyEventTap ──▶ MenuBarController ──▶ AudioEngine
│
▼
VoicePool (16 × AVAudioPlayerNode → Varispeed → mixer)
│
▼
AVAudioEngine output
KeyTap/— system-wide event capture via Core GraphicsAudio/—AVAudioEngine, voice pool, sample bank, jitterModel/—SwitchProfile, UserDefaults-backedSettingsUI/— SwiftUI popover and permission views
Keesound taps CGEventTap with .listenOnly: keystrokes are inspected to pick a sound and immediately discarded. Nothing is logged, stored, or sent anywhere — there's no network code in the binary.
Does it work on any keyboard? Yes — it listens for key events, not for a specific device, so the built-in MacBook keyboard, a Magic Keyboard, or anything else all work.
Is it a free alternative to Klack or Mechvibes? That's the idea. MIT-licensed, no purchase, no account, runs entirely on-device.
Will it lag my typing?
No. Sounds fire from a 16-voice pool on AVAudioEngine; the engine auto-suspends after 60 s idle and wakes on the next keystroke.
MIT for code (see LICENSE). Bundled audio is MIT, licensed per-pack — see Samples/README.md.