Mechanical keyboard and mouse sounds, everywhere you type.
Free and open source, for macOS and Windows (Linux coming soon). Built with Laravel and NativePHP.
Larakey lives in your menu bar (macOS) or system tray (Windows) and plays mechanical keyboard and mouse sounds as you type and click, in every app.
- 12 keyboard switch packs: Classic Mechanical, Creamy Linear, Tactile Brown, Clicky Blue, Box Jade, Buckling Spring, Low Profile, Silent Linear and four Keychron-style packs (K Red, K Brown, K Blue, Q Thock)
- 4 mouse click packs: Classic Mouse, Gaming Mouse, Heavy Click and Muted Mouse
- Per-key sounds: space, enter, backspace and modifier keys each sound different, with stabilizer rattle on the big keys
- Key release sounds and natural pitch variation, so fast typing never sounds robotic
- Global shortcut to mute and unmute:
Cmd+Shift+Kon macOS,Ctrl+Shift+Kon Windows - Launch at login
- Low latency: sounds are decoded once and played with the Web Audio API
- Private: Larakey only sees which kind of key was pressed, never what you type. Nothing is recorded, stored or sent anywhere.
Get the latest version from the Releases page.
| Platform | File |
|---|---|
| macOS (Apple Silicon: M1, M2, M3…) | Larakey-x.x.x-arm64.dmg |
| macOS (Intel) | Larakey-x.x.x-x64.dmg |
| Windows (64-bit) | Larakey-x.x.x-setup.exe |
| Linux | Coming soon |
Larakey is free and not code-signed (signing costs money every year). Your operating system will warn you the first time you open it. That warning is expected.
-
Open the
.dmgand drag Larakey into Applications. -
Open Larakey. If macOS says "Larakey can't be opened" or "Larakey is damaged", open Terminal and run:
xattr -cr /Applications/Larakey.app
Then open Larakey again. Alternatively, go to System Settings → Privacy & Security, scroll down and click Open Anyway.
-
Grant Accessibility access. Larakey needs it to hear your keyboard and mouse outside its own window. When prompted, open System Settings → Privacy & Security → Accessibility and switch Larakey on. Sounds start within a few seconds.
After updating on macOS: macOS may forget the Accessibility permission for unsigned apps. If the sounds stop after an update, select Larakey in the Accessibility list, remove it with the − button, then add it again with +.
- Run
Larakey-x.x.x-setup.exe. - If you see "Windows protected your PC", click More info, then Run anyway.
- Click the Larakey icon in the menu bar or system tray to:
- turn Keyboard Sounds on or off
- open Settings…
- Quit
- Press
Cmd/Ctrl + Shift + Kanywhere to mute or unmute. - In Settings, pick a keyboard pack and a mouse pack, set the volume and choose your options. Changes apply instantly, and you can try them in the Try it box.
- Windows: Larakey checks for updates automatically and installs them when you quit.
- macOS: automatic updates require a signed app, so download each new version from the Releases page and replace the app in Applications. Your settings are kept.
- PHP 8.3+ and Composer
- Node.js 22+ and npm
git clone https://github.com/codingwithrk/larakey.git
cd larakey
composer install
cp .env.example .env
php artisan key:generate
npm install
npm run buildcomposer native:devOn macOS, grant Accessibility access to the development Electron app when prompted.
php artisan test --compact| Part | Location |
|---|---|
| Settings window, tray menu, global shortcut | Laravel: app/, resources/views/ |
| Sound engine: global key/mouse hook (uiohook-napi) and audio playback | Electron: nativephp/electron/src/main/larakey/ |
| Sound pack recipes | config/larakey.php |
| Generated sound packs | public/sounds/keyboard/ and public/sounds/mouse/ |
Laravel saves settings to NativePHP's settings store. The Electron sound engine watches that store and applies changes immediately. Key events never pass through PHP, which keeps latency low.
Important: the sound engine lives inside the published NativePHP Electron project.
composer updaterunsnative:install --force --publish, which overwritesnativephp/electron. Commit your work before updating dependencies and restorenativephp/electron/src/main/larakey/, thestartLarakey(app)call innativephp/electron/src/main/index.jsand theuiohook-napidependency if they are replaced.
All sounds are synthesized (modal synthesis). There are no recordings, so there are no licensing
concerns. To tweak a pack or add a new one, edit its recipe in config/larakey.php and regenerate:
php artisan larakey:generate-soundsYou can also add your own recorded pack: create a folder under public/sounds/keyboard/ or
public/sounds/mouse/ containing WAV files and a pack.json manifest in the same format as the
generated packs.
Every push to main runs the Tests workflow (code style and the test suite). Releases are
never automatic. A release is only offered when the tests pass and the version has changed,
and it only goes ahead after a maintainer approves it.
- Bump
NATIVEPHP_APP_VERSIONin.env.example, for example1.0.0→1.1.0, and push tomain. - Once the tests pass, the Release workflow pauses with Review deployments. Open it from the Actions tab, or from the notification email.
- Approve to build the macOS (Apple Silicon and Intel) and Windows installers and publish
them as
v1.1.0, or Reject to skip.
Pushes that don't change the version never offer a release, and failing tests never offer one. Builds are unsigned.
One-time setup: go to Settings → Environments → New environment, name it release, enable
Required reviewers and add yourself. The release workflow refuses to run without this
protection.
To build locally instead, set GITHUB_TOKEN (with repo scope) in .env, then run
php artisan native:publish mac on a Mac or php artisan native:publish win on Windows.
Contributions are welcome! Read CONTRIBUTING.md for setup, coding standards and how to submit sound packs and pull requests.
Please report vulnerabilities privately. See SECURITY.md. Never open a public issue for a security problem.
The "Keychron-style" packs are synthesized imitations of the general sound character of those keyboards. Larakey is not affiliated with or endorsed by Keychron, and contains no Keychron recordings. All trademarks belong to their respective owners.
Larakey is open-source software licensed under the MIT license.