/keyboard-firmware

Firmware that I use for my various mechanical keyboards

Primary LanguageC

Lee Dohm's Keyboard Firmware

This is the firmware definition for my keyboards:

  • Ergodox EZ Glow with Cherry MX Blue keyswitches as my daily driver
  • Moonlander Mk I with Cherry MX Blue keyswitches on my gaming machine
  • Planck EZ Glow with Cherry MX Brown keyswitches plugged into my Xbox for the occasional text input in games or bug reporting

The firmware for each was built using the ZSA Graphical Configurator (aka "Oryx").

Ergodox Layout

See the PDF for the full layout, including all layers. Or view on the configurator to base your own layout on mine.

Features

Each layer has been customized with a background shine to indicate which layer the keyboard is on.

Layer 0 — Dvorak — No shine

This is designed as a fairly standard typing layout. The primary goal was to move the keys as little as possible from their typical locations on a standard Dvorak keyboard layout to minimize the errors that would occur when forced to use a standard keyboard, such as on a laptop in meetings.

Notes:

  • Esc is placed to the right of 5 to make it easily accessible and to allow the ` to remain in its standard position to the left of 1
  • \ was placed to the left of A because I don't use Caps Lock and it is fairly commonly used in programming, so I wanted it on one of the two main key clusters
  • Space is placed in the primary location on the right thumb cluster since, like most touch typists, I was trained to use only my right thumb to press the space bar
  • Enter is placed in the secondary location on the right thumb cluster so that - can remain to the right of S
  • Backspace and Delete are in the primary and secondary locations on the left thumb cluster to keep them convenient and it makes a kind of sense that they oppose Space and Enter
  • Volume Up, Volume Down, Mute, and Play are on the right thumb cluster
  • Home, End, Page Up, and Page Down are located on the left thumb cluster so that they are available because some applications explicitly use them
  • The two Hyper modifiers are a combination of Shift, Ctrl, Option, and Cmd. They are designed to create OS-wide key combinations. I use them for things like:
    • Hyper+B to launch my browser
    • Hyper+T to launch my terminal
    • Hyper+E to launch my text editor
    • Hyper+Space to launch Alfred

Layer 1 — Arrows — Red shine

The intent of this layer is to give easy access to the standard macOS keyboard navigation combinations, specifically the Shift, Option, and Cmd modifiers and the four arrow keys. Ctrl is not used in keyboard navigation on macOS, so it doesn't have a special place on this layer.

Notes:

  • Activating this layer is achieved by holding down either bottom vertical long key in the main key cluster on either hand
  • macOS keyboard navigation is achieved with the fingers of the right hand on the home row in a WASD-style pattern and the fingers of the left hand moved to the bottom right of the main key cluster so the index finger is on the layer shift key and the other three fingers are on Cmd, Option, and Shift. This allows the formation of all cursor navigation combinations, using combinations of Cmd, Option, and the arrow keys, and all navigation with selection combinations by including Shift
  • This layer also has video brightness controls in the same locations as the Volume Up and Volume Down keys in Layer 0
  • This layer also includes the Ergodox EZ Shine LED controls

Layer 2 — Numeric keypad — Green shine

The design here is to center the numeric keypad on the middle finger of the right hand, just as it would be for touch-typing numeric entry on a standard keyboard.

Notes:

  • Activating this layer is by toggle using the key to the left of 6
  • Because this layer is rarely used and only by the right hand, I placed Reset on this layer in the upper-left corner of the main key cluster of the left hand. Reset puts the keyboard into bootloader mode so that a new firmware can be flashed without having to find a paperclip and trigger the hardware button.

Layer 3 — QWERTY layout — Blue shine

This layer simply provides QWERTY-compatibility in those situations where I need the keys to be in their standard locations. This is typically for video games.

Notes:

  • Activating this layer is by toggle using the key to the right of 5 on Layer 1. This can be toggled quickly by using the left thumb on the Layer 1 modifier key and then the left index finger on the Layer 3 toggle

Layer 4 — QWERTY function keys — Magenta shine

This layer allows access to standard F-keys (and PrintScr) for games that use them.

Notes:

  • Activating this layer is achieved by holding down the lower-left-most key on the left hand when already in QWERTY mode on Layer 3. Release it to return to Layer 3.

Moonlander Layout

See the PDF for the full layout, including all layers. Or view on the configurator to base your own layout on mine. I just got the thing, so the layout is going to be in significant flux for a while. When things settle down, I'll get around to documenting it like I did for the Ergodox.

Planck Layout

See the PDF for the full layout, including all layers. Or view on the configurator to base your own layout on mine. Since this is a board that I exclusively use when I travel, I haven't really gotten a chance to truly refine the layout. When I do, I'll get around to documenting it like I did for the Ergodox.

Installation

Download the flashing tool from the Ergodox EZ website and use the *.hex or *.bin file to update the firmware.