A month ago I wrote about my Bivvy16D and Bivouac34 keyboard designs, and since then have built both and been using them - taped to a cardboad frame to make sure I'm comfortable with the angles before making a case. My new Goldilocks32 design aims to take the best of both - the 30 to 32-key layout, better roll-over, and a navigation button from the Bivvy16D, and the gold-fingers and ribbon cable from the Bivouac34. And I'm trying tighter 16mm y-spacing too, only a subtle change but welcome all the same.
![]() | ![]() | |
| Goldilocks32 PCB rendered in purple-and-white | ||
Wiring Design
Naturally I am sticking with the diode-free graph-theory sparse scanning matrix idea. The previous pair of designs both used the RP2040-Zero controller with 20 easy to use GPIOs, which was just enough for the 4KRO wiring in the Bivouac34. As I anticated, I didn't use the extra tucked thumb keys, so here my target is just 32 keys.
Last year I surveyed small girth 6 graphs for use in building 4KRO keyboards, and other the next smallest graph there is 19 vertices or GPIOs for 31 edges or keys. I'm not quite ready to drop to that few keys, and I couldn't see any obvious advantage there.
Instead, looking at small girth 8 graphs for 6KRO keyboards, there are two options with 24 vertices or GPIOs for 32 edges or keys. First, a subset of the Tutte-Coxeter graph (much like in my first design, the 36-key Gamma Omega TC36K), or a more symmetrical graph - which I went for.
![]() |
| 16 red nodes, 8 white nodes, 32 edges |
This symmetrical graph has an 8+16 bipartite split (for 24 GPIOs), which I am using for 16 scanning columns (each of two keys) and 8 scanning rows (each of four keys). Rather than using the outer and inner sets of eight red nodes as drawn for the left and right halves, a careful split can reduce the number of linked white nodes (or scanning rows to fit on the ribbon cable). So we only need eight red nodes (scanning columns) and six white nodes (scanning rows) plus ground making at least 15 wires in the ribbon cable.
One way to do this split is illustrated here, with a simple cut line - the resulting partial graph was used in error on the v1.0.0 PCB's silkscreen art:
![]() |
| Grey region has 8 red nodes, 6 white nodes, for 16 edges |
The actual split is more even with two left-half specific and two right-half specific scanning rows (giving a slightly different subgraph), illustated here using solid vs dotted edges:
![]() |
| 16 red nodes (8 with solid edges, 8 with dotted edges), 8 white nodes |
Using this graph requires more GPIOs, and while the RP2040-Zero does expose more, they are tiny hard to solder pads on the back. Of course, more easy to solder GPIOs means a bigger controller - but happily the RP2040 Pro Micro (or 0xCB-Helios) just fits in the same spot below the middle finger. This isn't ideal, but a right-angle USB cable (or perhaps one of those adapters to point back under the keyboard) is an option.
Now the RP2040 Pro Micro has 25 easy to solder GPIOs round the edge (and three more internal pins which would be a little more tricky). That's enough for the 32-key graph, and one spare - which I used to add a 5-way navigation button.
This graph can be visualised as a simple ring of 16 alternating nodes, with the second set of columns braided in. And it is that ring structure that allows adding an extra vertex for a 5-way navigation button - just like in the Bivvy16D wiring. In fact, you could probably add two this way (if you had a total of 26 available GPIO pins), using the outer and inner red rings for example.
![]() |
| 9 white nodes, 16 red nodes, 37 edges |
(Yes, one of the lines in the silksreen art is wrong in v1.0.0 of the PCB, the push button. The pattern drawn there more like the Bivvy16D design, if using the outer ring of red nodes.)
For the split design with a ribbon cable I am passing 8 scanning column traces (each connected to two keys), and by careful node selection this needs only 6 scanning rows (see above). One more for ground makes 15 traces - room for one further GPIO? I did try to use this for the navigation button's node, but it required access to additional columns - so with the 16 wire ribbon that has to stay on the same side as the controller. Instead there are two ground traces, placed to break up the ribbon into thirds to hopefully limit any capacitive coupling.
Physical Design
This has the same inner top-corner gold-finger placement with a 16-wire ribbon cable as in the Bivouac34 (best kept short to avoid ghosting from capacitive coupling I found with a 20cm cable). The wiring uses the same dual-side choc switch footprint, with independent nets for the front and back switches.
I found the tucked third thumb on the Bivouac34 uncomfortable, so it follows the 32-key layout of the Bivvy16D. Due to wiring changes (see above), unlike the Bivvy16D it has only one 5-way navigation button (on the left by controller).
The top corner key (Qwerty Q or P) is now intended to have a 1.5u keycap (and the switch is therefore moved up very slightly and rotated 90 degrees to allow this to work with standard Choc keycap sets).
In a more dramatic change, the vertical spacing of the columns was reduced to just 16mm - for which I expected to need some (near) minimum y-spacing keycaps. Maybe Cylindrical Minimal Y (CMY), or these Min-Y-spacing KLP Lamé Saddle keycaps since I am currently using and liking the Choc spaced KLP Lamé saddle keycaps? I was pleasantly surprised that my Choc v1 Chicago Stenographer keycaps printed at JLCPLC work just fine. The vertical spacing is very tight, but seems just right - lucky me!
If I like the 16mm vertical spacing, then truely minimal spacing is a logical next step - narrowing the choice of keycaps further. Maybe the Shelby 15.4 by 15.4mm keycaps (intended for MX switches but worth trying with Choc v2)? This will help in making a more child friendly compact layout.
Silkscreen Art
I picked the name Goldilocks from the use of gold-fingers for the connecting ribbon cable, and the hope that the number of keys would be just right. While hunting for line art of hair braids, I hit on this free for non-commercial use image of the back of a girl's head showing braided hair. This is rounded out with a couple of images of the graph like the ones above (both of which turned out to have subtle errors which I only spotted during this writeup). Naturally one the switches and keycaps are on, you hardly see any of the art - just the graph by the thumbs really.
Soldering
There are 34 Kailh Choc Hotswaps (extra to allow a choice of thumb keys), the RP2040 ProMicro (which you could probably socket but I just used the provieded hearers), and one 5-way button. Not too tricky, but the controller is tight to the keys, and the Qwerty Q and W are a little tight.
Case
For now, as with how I was using the Bivvy16D (a week or so) and Bivouac34 (about a month), I have mounted a spare PCB underneath with offsets, and taped that to a cardboard base with about 40 degrees of tenting, and about 40 degrees yaw between the two halves. This seems comfy, but less tenting will probably be more practical for a 3D-printed case.
![]() |
| Goldilocks32 keyboard with Chicago Stenographer keycaps on a cardboard base |
Wrap-up
It isn't an entirely fair comparison as the Bivouac34 (which has been my daily driver for the last month) has different keycaps, but this seems just as comfy - which it should, having almost exactly the same layout. The tighter y-spacing is too subtle to notice at first glance. The new 1.5u corner keys are better - they suit my lateral reach with the ring finger better than the smaller 1u target.
I am also still using the same 32-key layout, but have been thinking about how to drop a thumb-key or two... which would take me to 30-keys. It seems doable now.
For now I am using a 20cm ribbon cable, which with the Bivouac34 build gave a few ghost keypresses put down to capacitative coupling between the parallel wires. Here there are two ground wires spaced a third of the way along, which should help - as should the 6KRO rather than 4KRO design. I haven't had that issue here yet (but can drop to a 10cm ribbon easily enough).
Finally, in moving the keys and keycaps over, I managed to break a leg on two of the resin 3D printed Chicago Stenographer keycaps. Thankfully I still have enough from my original set, by using less keys and now putting 1.5u MBK keycaps in the corners.









No comments:
Post a Comment