Mechanical keyboard sounds for your Mac. mach is a lightweight macOS menu bar app that plays realistic typing sounds globally while you type.
Built with Swift and designed to be configurable, mach supports KeyZen-style per-key sound routing with both keydown and keyup sounds for an authentic mechanical keyboard experience.
- Native macOS Experience - Clean menu bar app with no Dock icon (
LSUIElement) - Global Key Capture - Works across all apps via
CGEventTap - Per-Key Sound Routing - Scancode-based mapping for down/up sounds
- Sound Pack System - Configurable packs with sprite slicing or individual samples
- Adjustable Volume - Control sound level from the menu bar
- Launch at Login - Optional auto-start on macOS boot
Requirements: macOS 13+ (Ventura or later)
brew tap fauzanazz/mach
brew install --cask machTip: For easier installation without Gatekeeper warnings, use Homebrew instead.
- Go to the Releases page
- Download
mach.zip - Extract and drag
mach.appto/Applications - First Launch: Right-click the app → Open → click Open on the warning dialog
- Grant Input Monitoring permission when prompted
git clone https://github.com/fauzanazz/mach.git
cd mach
scripts/build-app.sh
open mach.appmach requires Input Monitoring permission to capture global key events.
If key sounds do not play:
- Open System Settings → Privacy & Security → Input Monitoring
- Enable
mach(or remove and re-add it) - Quit and relaunch the app
| Issue | Solution |
|---|---|
CGEvent.tapCreate FAILED |
Re-grant Input Monitoring permission, then relaunch |
| App runs but no sound | Check enabled state and volume in menu bar; verify pack has valid assets |
| Debug logs | tail -f ~/mach-debug.log |
- Development Guide - Architecture, sound pack format, scripts
- Release Guide - Build, sign, notarize workflows
- Homebrew Tap Setup - Distribute via Homebrew
- Branch Protection - CI/CD configuration
The per-key sound routing approach is inspired by shivabhattacharjee/KeyZen.
MIT License - see LICENSE file for details.