This is a ZMK config repo for my ergonomic keyboards. The keymap is optimized to be usable with 26-30 keys, with dropped keys from inner index and pinky columns and one or two thumb keys each, like the Hummingbird layout. Currently these keyboards are:
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
Rommana (30 keys) | Rufous (30 keys) | Modified Grumpy (28 keys) | Corne-ish Zen (36 keys) |
A few principles used in the design of the keymap are:
- Reduced use of right thumb, especially for repetitive actions
- Overuse can lead to issues, combined with smartphone and pointing device use
- Frequently used combos are all horizontal (pressed using multiple fingers within the same row) and avoid pinkies
- All (reasonable) modifier + key combinations are accessible
- Symbols don't require shift outside the base layer
- Some affordances are made for left-hand only use
- Common shortcuts and desktop operations on the
NAV
layer - Mouse layer can be used for mouse clicks, to complement movement/scrolling with a pointing device on right hand
- Common shortcuts and desktop operations on the
The default alpha layer is a modification of Colemak-DH and an alternative is the Bird layout.
It uses three non-base layers activated through two thumb keys, along with combos which are used heavily for symbols and infrequent letters.
The keymap utilizes home row mods, which are also available on the left side of NAV
layer.
FUN
layer is implemented as a tri-layer, i.e. it is active when both NAV
and SYM
are active.
Below representation was generated with keymap-drawer
using the automated Github workflow
-- check out the drawings for all keyboards in the keymap-drawer
folder.
Shortcuts on the NAV
layer are OS-dependent, and are currently defined for Windows/Linux as the following:
Win Close
: AltF4Tab →
: CtrlTabTab ←
: CtrlShiftTabTab Close
: CtrlF4Win Next
: AltTab (hold Alt while layer active) using swapperWin Prev
: AltShiftTab (hold Alt while layer active)
Some keyboards in this repo include an indicator widget utilizing an RGB LED, like the user LEDs on a Xiao BLE.
This widget is a ZMK module housed in zmk-rgbled-widget
-- check out the repo and the instructions to use it with your keyboards!
While the main
branch of this repo uses upstream ZMK main
, in the corneish-zen
branch I use a custom ZMK branch referenced in west.yml which contains display improvements for the Corne-ish Zen.
My keymap also uses a swapper key for single button window switching, defined using the smart toggle behavior module.