As a way to learn the MacOS Cocoa API and Swift, I set out to write a MacOS system tray app that would provide IBM Model M “clicky” keyboard sound effects whenever the OS detected a key up or down event.

To my complete surprise I was able to get a functional app working within an afternoon, which goes to prove that the ecosystem for writing MacOS apps is well designed and mature.

Demo

Functionality

Version 1.0 of the app is a system tray app, meaning that it runs in the background once started and does not appear in the Dock. There are 3 distinct sound effect libraries:

  • IBM Model M sounds
  • iOS button sound
  • generic mechanical typewriter sounds

These can be chosen from the system tray menu.

options

How to download and use

  1. Download the keydings.app.zip file from https://github.com/jsyang/keydings/releases/tag/1.0
  2. Extract and move keydings.app file somewhere, like in /Applications.
  3. Open “Security & Privacy” panel in System Preferences (Cmd+Space, then type “Security & Privacy”)
  4. Click on the “Privacy” tab then on Accessibility in the left hand menu.
  5. Click on the lock to enable changes to this section: on the right hand side you will see a list of apps with Accessibility access.
  6. Drag the keydings.app file into this list, this will enable the app to listen for keyDown and keyUp events across the OS.
  7. Then double click the keydings.app file in /Applications to run it. You should see a music note icon in the MacOS system tray.

Source code

The source code for the app can be found here: https://github.com/jsyang/keydings

You will need an up to date version of XCode to open the project.