An Ergodox is a custom mechanical keyboard that focuses on ergonomics first and foremost. It's completely open source, with the 3D schematics and software all available for free.

It's possible to build your own if you wish, or you can buy the pre-assembled Ergodox EZ. The hardware includes mounting points for a tilt kit, allowing you to move the halves as far apart as you need to and set them up at any angle. This is a huge boon for comfort and ergonomics, since it's possible to set up the keyboard to follow the natural curve of the arm and wrist, rather than having to bring hands close in front of you as if handcuffed.

The keyboard runs custom firmware called QMK, which allows one to completely customize the behavior of the keyboard. At first, this may seem like overkill. However, imagine that you can completely move any key, and add custom behavior. Notable features include:

  • Ability to map any physical key to any virtual letter, number, or symbol. 1
  • Move common coding symbols on the home row. Parenthesis should not require you to reach the far corner of the keyboard
  • Make Ctrl+Shift+{$KEY} into a single physical key, to avoid awkward chording of your hand
  • Set up combos where "J + K = Esc", or anything else you desire.
  • Multiple layers. Why have your symbols on the top row, when you can simply switch to a different layer and have the parenthesis and brackets right on the home row?

These are but simple examples, but I hope it's clear that the possibilities are truly endless. There will be links to Googler's layouts later on in this guide for more inspiration. In short, this is a wildly versatile keyboard with endless possibilities for both physical and virtual positioning.


Most people start off using the Ergodox EZ online configurator. There's also a QMK version that's a bit more generalized for all keyboards.

As your layout gets more complex, you may want to add it to VCS. You can fork the QMK firmware on github and add your layout directly, add it as a submodule, or make a custom repo like this one and have a helper script that will automatically link the files into the proper locations. If compiling locally, install the teensy CLI to flash the firmware.



  • When you first get the keyboard, try to break your preconceptions of where it should be located. Follow the curve of your hand and try to keep your wrist straight
  • It's a split keyboard for a reason - try it out at shoulder width and see how you like it.
  • Play with the tilt, to allow your hands to be naturally resting without shoulder strain
  • Be sure to only use the wrist pads to rest your hands in between typing, not while typing. Prolonged pressure on the bottom of the wrist can cause RSI issues.


  • Try to minimize hand and finger movement
  • If you find yourself doing complex chords, turn them into macros or custom keycodes.
  • Be sure to use layers, rathern than contorting your hands into far corners.


Advanced Tips

  • You can use hid_listen to emit custom strings to a special receiver on your machine. This can open the possibility of using a single keypress as a macro that then triggers a custom shell script on your machine. Can be useful for opening webpages or performing repetitive tasks
  • LED's don't have to just be for Shift and Caps Lock. You can override the behaviour to show custom patterns and colors based on your needs.