The usual way to make a keyboard modular is to cut it into pieces a hand can rest on: two halves, or a few columns, each piece a small matrix wired to one controller. Keybytes, by Nathan — @NotARoomba on GitHub — cuts at a finer line. Every key is a board, and every board has its own processor.
The Keybit
The unit is 19.05 mm square, which is one standard key spacing, and 1u in keyboard terms. On it: one Cherry MX switch and a CH32V003 microcontroller.
The CH32V003 is the pointed choice here. It is a 32-bit RISC-V part from WCH that has become the cheapest programmable microcontroller in common use — single-digit cents at volume, 2 KB of RAM, 16 KB of flash. For reading one switch and answering on a bus, that is ample, and it means the per-key cost of making a key intelligent is close to the cost of the switch’s own plastic.
Pogo pins on all four sides carry 3.3 V, ground and I²C. That is what makes the geometry free: a Keybit can connect to the main board or to another Keybit, in any direction. Programming pads sit at the corners.
The Keyword
The main board the Keybits attach to is called the Keyword, and it is two PCBs stacked. The top carries an STM32WB55RGV6 — a dual-core part with a Cortex-M4 for the application and a Cortex-M0+ running the radio stack, so wireless does not steal cycles from matrix scanning — plus an antenna and flash. The bottom carries USB-C, the battery charger and a buck-boost converter.
Splitting power and radio across two stacked boards is the sort of decision that only makes sense once you have tried to keep a 2.4 GHz antenna away from a switching regulator on one layer.
Why one controller per key is not obviously a good idea
It is worth being clear about the trade. A conventional matrix reads dozens of keys with a handful of pins and one chip, and costs almost nothing in parts. Putting a microcontroller behind every switch spends more components, more solder joints, more things that can fail, and more I²C addresses, to buy one thing: a key that does not need to know where it is in a grid.
What that buys is physical reconfiguration without rewiring. You can build a 40 % board, pull keys off and build an ortholinear one, or lay out something that is not a rectangle at all, and the electrical story is unchanged. It also means a dead key is a dead key rather than a dead row.
Whether that is worth it is a real question, not a rhetorical one, and it depends entirely on whether you actually rearrange your keyboard.
The repository
Everything is designed in KiCad. The repository holds hardware, cad, firmware, a blender directory, a BOM.csv, a production folder and a JOURNAL.md build log. It has 334 stars and 7 forks, and the most recent commits — 25 and 26 October — are about getting a demo video into the README.
There is no LICENSE file. We listed the repository’s contents rather than trusting the metadata, because an absent licence tag often just means an unrecognised file; here there is no licence file either. In practice that means default copyright: the schematics and firmware are published and readable, but nobody else has been granted the right to manufacture, modify or redistribute them. For a project with a BOM and a production folder, that gap is the difference between something you can admire and something you can build on, and it is the most common unfinished edge in open hardware.
Sources
- notaroomba/keybytes on GitHub
- keybytes: a truly modular keyboard — Adafruit Blog
- CH32V003 product page — WCH
- Nucleo WB55RG board documentation (STM32WB55 dual-core architecture) — Zephyr Project