Reality is harsh. Money is scarce. The price of mechanical keyboards leaves penniless folk left in the shadows of their mechnical-keyboard possessing brethren. The exalted clicks of mechanical switches are but a pipe dream for most people. Until now.

reject membrane, embrance monke

What it does

Much like the visionaries that created DownloadMoreRam, we present to you monke. One simple click is all you need to have a mechanical keyboard at your fingertips (auditorily).

Don't believe us? Take a look at how monke fares against the average mechanical keyboard.


  • Customizable key press sounds (no more hotswapping switches and spending money)
  • Built-in state of the art subtitle system as an accessibility feature
  • High-fidelity -- keyboard sounds are routed through your speakers, even when using earphones
  • Simplistic, modern user interface


  • Absolutely none at all

How we built it

C# and Windows Forms were used for the GUI and the magic that holds monke together. Low latency sounds routed using the NAudio package as a wrapper around the DirectSound interface of Windows API.

Challenges we ran into

  • Routing audio to a specific device is challenging; audio drivers and scarcely documented APIs pushed our keys at every turn
  • NAudio WASAPI and mmeapi.h "worked", but these older APIs had higher latencies and made the user experience intolerable
  • Global Windows Hook callback gives us the chance to listen on key strokes while minimized, and also gives us the wonderful learning opportunities in the form of crashes

Accomplishments that we're proud of

  • Sounds wonderful
  • Audio works in a performant manner with minimal lag for most reasonable typing speeds
  • Sounds wonderful
  • Sounded so great we actually used this during our development cycles

What we learned

C#, WinForms, Windows API, Audio interfaces in Windows

What's next for monke

  • Some keyboard presets have different sounds for the spacebar, backspace and enter key. We look to expand this configurable sounds for every key.
  • Store user preferences (but you shouldn't be closing the app in the first place)

Built With

  • c#
  • naudio
  • windows-forms
+ 5 more
Share this project:


posted an update

I have not slept for nearly 30 hours. Every passing thought, every muscle contraction drains more life from my sleep deprived existence. My only sustenance is monke; it brings sheer joy to my fingertips -- the tactile feedback of my laptop's membrane keyboard leaves much to be desired, but the sounds of deceit that monke provides are more than enough to curb this sadness. As a neutral, objective bystander, I feel like monke deserves to win.

Log in or sign up for Devpost to join the conversation.