(Part of a story I told as a proto-lightning talk.)

I’m currently borrowing, and will probably soon buy, a ZSA ErgoDox EZ keyboard. It’s a super cool keyboard!

In 2015 or so, I bought a Kinesis Advantage, and between it and various ThinkPads, that’s been my main text entry method for the last seven-odd years. It’s shaped lots of my thoughts about the next keyboard I would want to use: its fixed, monolithic design makes me much more in favour of adjustable, split keyboards, and the ErgoDox EZ seemed like a good step.

One of the things about the ErgoDox EZ that fascinated me was the firmware story, and how much computing capability could be present in a keyboard. ZSA’s keyboards use the QMK firmware, which allows for a mind-bending degree of configuration.

There exist some exceptionally powerful tools to develop and tune one’s own keyboard layouts — but I ignored all of them, and I built my own!

After a week or so of hard hacking late into the night —

the problem with writing in any Lisp is the time distortion field. "just a few more minutes" seems to go for a few more hours.

— Jashank Jeremy (@jashankj) August 3, 2022

— I put together some code that generates both C, for the keyboard firmware, and LaTeX, for making quick reference cards, from a slab of (Guile) Scheme defining both. That was a very fun tool to build. and I’ve thrown it over the fence in the directory lib/ergodox in my dotfiles.

A blank ErgoDox EZ layout from my keyboard layout tools, annotated with a hexadecimal identifier of each key.