Skip to content

nirajrajgor/keesound

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Keesound

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+.

Quick start

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, ⌘R

On 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).

Features

  • 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 / backspace overrides
  • 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

Menu bar icon

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).

Samples

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.

Architecture

CGEventTap ──▶ KeyEventTap ──▶ MenuBarController ──▶ AudioEngine
                                                         │
                                                         ▼
                                    VoicePool (16 × AVAudioPlayerNode → Varispeed → mixer)
                                                         │
                                                         ▼
                                                AVAudioEngine output
  • KeyTap/ — system-wide event capture via Core Graphics
  • Audio/AVAudioEngine, voice pool, sample bank, jitter
  • Model/SwitchProfile, UserDefaults-backed Settings
  • UI/ — SwiftUI popover and permission views

Privacy

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.

FAQ

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.

License

MIT for code (see LICENSE). Bundled audio is MIT, licensed per-pack — see Samples/README.md.

About

Free, open-source mechanical keyboard sounds for macOS. A native, low-latency menu-bar app that plays Cherry MX Blue, Holy Panda & NovelKeys Cream switch sounds as you type.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors