building a keyboard
2025-10-12
motivation
Traditional keyboards are not ideal. They are ergonomically poor, causing discomfort and potentially injury, and suboptimal for fast, accurate typing (and more general computer use). There are many ways to improve the keyboard experience, and most of them can work in conjunction. I'd suggest researching these further yourself as I'll only provide a brief overview:
- Having good typing habits promotes speed, reduces finger travel and stretching, and should in theory be more comfortable.
- Splitting the keyboard and tilting the halves inward lets the wrists rest at a more natural angle, and promotes good typing habits.
- Placing the keys on a columnar-stagger rather than the standard row-stagger makes home row based typing more intuitive and consistent.
- Introducing thumb clusters lets your strongest fingers live up to their full potential, while reducing the load on your weakest ones.
- Even your standard laptop keyboard has more keys than one can easily press. By reducing key count, we can actually make typing easier with some clever tricks:
- Layers are the most important, giving changing everything on the keyboard when activated. For example, holding down
Esc
activates my number layer, during which pressingK
returns5
. Layers can also be navigated with dedicated buttons, for example the bottom left on my keyboard turns on the symbols layer, and the top right button always returns to the default layer. - Chording/combos allow for two keys pressed together to send a distinct signal. For example, pressing
F
andJ
simultaneously might send theEnter
key. I don't use chording currently, but I believe it is common on much smaller keyboards. - Mod-tap behaviour lets keys do different things when pressed vs. held. For example, pressing
Enter
on my keyboard indeed returnsEnter
, but holding it is acts as holding aHyper
key (Hyper = Cmd + Shift + Opt + Ctrl
), which I use for switching/opening apps.
- Layers are the most important, giving changing everything on the keyboard when activated. For example, holding down
- Switching from QWERTY to a modern layout designed for pleasant typing can be difficult to transition to, but can be done on any keyboard for fairly strong results.
- Finally, the ultimate form of crazy keyboard ergonomics comes from thinking in three dimensions: adding concavity to the board or tenting so your hands can rest sideways are both more ergonomic than typing on a flat slab.
I decided I wanted a keyboard focused on items 1-5 above, potentially adding 6 later. Ergonomic keyboards are still fairly niche, so commercial options are quite pricy. Thankfully, there is a large community of enthusiasts sharing their builds, so I had plenty of options for trying to make one myself.
selection
The Sweep was my introduction to ergo-mech keyboards, and imprinted itself on me strongly. I liked the low-profile, simple construction, layout, and aesthetic, but I was worried about 34 keys being too few for me to handle. The Corne was the next encouraging option, but the build requirements seemed inconvenient. The Cantor is what I settled on, simple like the Sweep (diodeless, no switch plate/case required) and space for a few extra keys (42 total). Choosing a build was just the first decision; the following is my full parts list, with some justification for my choices.
- The Cantor comes in two variants: Classic and MX. I chose the classic for the compact spacing and lower profile switches. I ordered 5 Cantor Classic PCBs from JLCPCB for $13.92 + $24.11 shipping, for a total of $38.03. Obviously the build only needs 2, but 5 is the minimum order.
- The tradeoff to choosing the Classic Cantor is it narrows my switch options to only Kailh Choc v1's. I like linear switches and wanted to go for a low actuation force (assuming it would reduce finger fatigue), so went with Pro Red switches from AliExpress. Normally the Pro switches cost extra, but they were the same price as regular Reds here, and I got 50 switches for $22.90.
- Keycaps were surprisingly the greatest expense of this build. Choc v1 switches have a proprietary stem only compatible with MBK keycaps. Blank MBK keycaps are fairly reasonably priced, but I wanted mine to be labelled to make to make the transition easier. My options were quite limited (most stores had hard-to-swallow shipping/duties costs), and I ended up getting an "MBK Legend PBT 40s Kit" from LowProKB for $72.32.
- Microcontrollers are the last significant choice for the keyboard. I searched for "STM32F401CC blackpill microcontrollers" on AliExpress as suggested in the Cantor repo and bought a pair that looked decent for $12.78.
- The last few miscellaneous parts were also purchased on AliExpress: a TRRS cable for $3.91, pack of 10 TRRS ports for $3.01 (only needed 2), and a pack of rubber pads to use as feet for $5.67.
Total initial cost: $155.23. (All Canadian dollars by the way. With taxes included.)
build
The first issue I faced was having the wrong parts. I had mistakenly ordered a wider variant of the STM32F401CC incompatible with the board. In my confusion I eventually found this issue on the repo and was sad to learn I could have spared myself the trouble of reordering by looking deeper into the info available. The second pair of microcontrollers I ordered were $14.70, but this was a small price to pay for the push to consume all the information I possibly could about the Cantor. Notably, I found this issue about the controller orientation which may have saved me from a real headache later on.
This was my first time soldering, and I got all the tools I needed from a single soldering kit on Amazon for $30.50. This may not have been the best idea. My first time sitting down with all the parts frustrated me greatly and I had to step away after about an hour. It wasn't until a week later that I tried again with greater resolve, many more introductory soldering videos under my belt, and most importantly, a shorter/broader tip on the soldering iron. I think the first tip I tried was too thin and wasn't heating up enough, but with the second, I managed to get into a bit of a groove. A better soldering iron or trying thinner/higher quality wire would have been preferable though, as the broad tip was a bit awkward to maneuver between the pins on the microcontrollers, and I still had some trouble with soldering the switches. I was very surprised to learn that the two metal prongs at the bottom of the switches were of different metals, with one always taking very easily to the solder, and the other only ever after some blunt coaxing.
The soldering looked abysmal, but I was very happy to learn (after a shockingly easy flashing process—thank you QMK!) that almost everything worked! Only the y
key didn't, which was fixed with a little more solder on the finicky pin of that switch. Then I noticed I had bridged a connection somewhere, and the c
and v
keys were firing together. I found the bridge on top of the microcontroller thanks to the intuitive schematic, and was able to crudely rectify it.
My only other hiccup came while moving some keycaps around. I accidentally pulled a switch apart while pulling on the keycap on top of it (Kailh Choc v1 stems really hold on!) and lost the switch's spring. Thankfully I had more switches than I needed, and was able to pull a spring out of one of the extras as a replacement.
reflection
Accounting for the second set of microcontrollers and soldering kit, the total cost of this project was $198.51. Of course, Wal-mart has keyboards for under $15, but for a customizable mechanical keyboard with a bespoke layout, I'm happy with a final price under $200 (even if it doesn't have a case).
I was nervous at every step of this journey: ordering the parts, figuring out which way to put the header pins through the microcontrollers, deciding what order to solder the parts to the boards (I don't think it really mattered), and even figuring out how the adhesive on the rubber feet was meant to be used. In retrospect though, it was really quite easy. I learned a lot and would feel very confident doing this again.
In terms of my experience using the keyboard, my typing speed has dropped to an embarrassing number, but it definitely feels good. My pinky finger often felt strained after extensive typing with other keyboards, but the Cantor has been much more comfortable. Regardless, while the build experience was fun and the keyboard is cool, I'm not sure I'll be able to say it was worth it unless I am able to speed up eventually, even if it take some work.
next steps
Unfortunately, I haven't found a keymap I'm happy with yet. I went in trying to figure one out on my own, but after much consternation I've decided to try something mostly inspired by the Miryoku layout. It's my first time trying out home row mods and I think they'll be a big help. It's feeling nice so far, but still slow.
I also haven't committed to leaving QWERTY yet. Colemak seems like the best alternative (Colemak-DH is probably better, but the original is pre-installed on macOS which is convenient), but I'm not sure if learning both a new physical way to type and layout at the same time is a good idea, or if I should just get comfortable with the form factor first. I do really want to get off of QWERTY though, primarily because of how inconvenient it is to press the letter p
.
Though it is still early, there are already things I would do differently on a second go-around. First, I think I would prefer to socket the microcontrollers to make them replaceable in the event of failure. Similarly, using hot-swap sockets for the switches might also be better for longevity, but switches don't seem quite as annoying to desolder. I would also consider using Cherry or Choc v2 switches for the improved keycap compatibility. A case would also be nice, and maybe some nicer cables.
Also, the ergonomic desk setup doesn't stop at the keyboard! I am keen to try out a trackball (a caseless aball would would match the vibe well) and I've been exploring software methods for reducing my mouse usage. I am using the Vimium extension (currently in Helium), trying Vim mode in Obsidian and Zed, and setup my Caps lock
as a mod-tap hyper key using Raycast for quick app switching. I haven't been the best at making the most of their capabilities, but I'm certainly enjoying specific features, and hope to expand soon.
The rabbit hole of ergonomic setup optimization goes deep, but I don't think I'll be going much further at this point. It's unlikely I try any of the dedicated mouseless navigation apps on Mac (Scoot, Mouseless, Shortcat, Homerow), download a tiling window manager (Aerospace, Yabai) or start living in the terminal and configuring Neovim (I kind of want to but am worried about the config becoming a timesink, or learning it too slowly). For now progress will be getting better with the tools I have, rather than seeking out new ones.
