With a fully assembled keyboard, it's time to tinker with the firmware.
A Reasonable 34 Key Layout
I needed to downsize my 42 (6x3) key Corne layout to 34 (5x3) keys for this keyboard.
Given I split my time across a few different form factors - Macbook, Lily58, Corne - my keymaps prioritize consistency across layouts over optimizing typing speed.
This means keys are placed in the same region across layouts, and pressed by the
same fingers. Only exceptions are frequently pressed keys where ergonomic
shortcuts make a big difference - e.g. Esc
to JK
.
After a few iterations, I found the following setup comfortable enough for daily use:
Space
keys act as layer keys on hold, to accommodate one less thumb cluster key- The missing 6th column keys are mapped to chording fourth and fifth columns
Shift
is long hold onZ
or/
Ctrl
is long hold onA
ESC
isJK
Tab
isFD
Del
is Raise +;
Enter
is Raise +/
- Enabling retro tapping for typing fast with modifiers on alphabet keys.
Here's my ZMK Configuration on Github.
Diagram generated by ZMK Viewer and massaged in Figma.
First experience with ZMK Firmware
For this build, I used ZMK Firmware for the first time. Its confirmed wireless and hardware support for Ferris Sweep made it an easy choice.
Compared to my go-to, QMK Firmware, ZMK felt quite different:
- The "standard" firmware iteration involves pushing to Github, then downloading GH Action artifacts.
- Customization occurs through devicetree source instead of plain C.
I'd probably setup the ZMK toolchain locally if I have to tinker with ZMK again for faster iteration time.
It took some adjustment working with DTS syntax instead of plain C - the abstraction didn't feel as intuitive to me. Nonetheless, after a hour or two digging around docs, I was able to replicate my fine-tuned QMK config to ZMK. Note quite 1-1, but good enough.
Finished Ferris Keyboard
That's a wrap - my tiny, Ferris-themed, bluetooth keyboard is done!