My osu! keyboards

I built these to play osu!, because abusing z and x keys on my WASD felt wrong.

Version 2

This uses the same firmware as version 1, but instead of cherry switches, it uses micro switces with levers, these are way more tactile than the red cherry switches, while the lever action seems as light, or ligther than the cherries. They also give a very satisfying click when pressed, who needs hitsounds ? video of version 2 in action on youtube.

The case is greatly improved, not only does it print with less warping, it is also large enough that it can be firmly placed on the table, especially if adding some soft rubber feet.

Here is the 3D model: osukey2.scad

I did make one small hack to the swithces, I did not like the rollers... rolling,.. so I put a dab of loctite on them, made all the difference in the world.

Version 1


The source code for the keyboard controller firmware is a small arduino sketch: osukeys.ino and the OpenSCAD source file for the 3D model: osukey.scad

Bill of materials

Physical assembly

After printing the case and keycaps, glue or tape the Pro Micro board to the side of the case, I used double-sided tape.

Cut lengths of wire and run them from the keys to the arduino. Connect one side of both keys to GND and the other side to A3 and A2 respectively, that's it. See schematic in Arduino firmware.

Press the Cherry switch into the hole and put on a keycap.

Setup debounce

The keyboard reads the debounce delay from EEPROM, if it is too low, it wrongly registers multiple keypresses, and if it is set too high, you won't be able to press the same button in quick succession. To begin with, the value is way too high. To set a new value, enter the configuration mode. This is done by holding down both buttons when plugging in the keyboard, and waiting for 3 seconds, then the keyboard will identify itself as a USB serial port. Connect to it with putty or minicom, 9600 baud. There you press "s" for set, and enter a new value, try 100, press enter. Test if it bounces, if not, great, otherwise, repeat with a higher value, try increasing with 50 on each try.


All the steps, in order:

  1. Flash firmware to arduino pro micro
  2. Print or otherwise obtain case and keycaps
  3. Glue or tape or otherwise attach arduino to side of case
  4. Run wires through hole in case, to arduino
  5. Solder switches, one side of switch to GND, other side to A3 and A2 respectively.
  6. Push switches into holes
  7. Attach keycaps
  8. Adjust debounce delay, try 100
  9. - Plug in while holding both keys, wait 3 seconds before letting go
  10. - Connect to the USB serial port with Putty or Minicom, 9600 baud
  11. - Press S to set value, type 100 and press enter
  12. - Test if it works, otherwise try with bigger value
  13. ???
  14. Profit!