Firmware customization

Continuing the discussion from Colemak layouts, I’m taking this opportunity to talk about some firmware things.

Easy things first:

  • Prog is hardwired to the top-left key, and my understanding is that you need to hold it during keyboard boot, to put the hardware into a program mode, to be able to upload a new firmware, with a different layout. This functionality is only available during keyboard boot, and the key works as any other key once booted. (Source)
  • The Any and Butterfly keys do nothing in the current firmware, to encourage user customization. (Source)
  • The current firmware assumes a QWERTY layout on the host system. I believe that the other layouts will assume a QWERTY layout too, and do the remapping in the firmware. Thus, the layout will be portable across systems without having to set anything up on the host.

Thus, customisation is not bound to any one platform or software, it is all in the keyboard. The current firmware can already do a lot of things, and I’m working on my own too, in parallel. The official firmware is much more novice friendly, mine has more features (at least for now). The official actually works, mine was never tried on real hardware yet.

So, as you can see, the keyboard is fully programmable, to the extent that you can completely replace the firmware. I don’t think that will be something people will often desire, but it is a possibility too. And that is great.


Thanks for putting this down, I was getting a little confused about how the layout was being done in terms of OS vs firmware.

How does this work for, e.g. writing non-QWERTY characters? Would one have to just have the keys send some unused scancode & have some custom handler (xdb or karabiner or whatever) turn that into whatever fancy character?

There are many options:

  • You can switch your OS layout, and gain access to the new symbols. You may have to remap the keyboard layout a bit for this to work best.
  • You can use OS-assisted input, like a Compose key, or AltGr.
    • You can also create macros that make it easier to input these: you press a key, and the host receives a sequence instead, as if you typed it all in.
  • You can remap keycodes fully on the OS/Software side.

…and possibly others, but these three are the ones I can think of off the top of my head.

For the default firmware, I’m really hoping to do everything we can on the keyboard. (We’d like to work as well as we can without any special host-side anything.)


I’m glad to see support for macros - I was disappointed that my TEK wouldn’t allow me to assign != to a single key. (as an example)

Yup. Early on, macros may require a bit of custom code. But they’ll be doable. (And we’ll help you set them up if you need it.)

In that case, we should be agnostic about the OS keymap in the default configuration.