I got a Chocofi keyboard

The Chocofi is an open-source 3x5(+3) 36-key wireless low-profile Corne variant with Kyria-style stagger. I’ve been meaning to switch to 3x5 hardware for years since I’ve been using a 3x5 keymap from the very beginning, just on 3x6 hardware.

allow me to explain the Pusheen; his tummy is a screen cleaner and let me tell you my screen used to be filthy but has never been cleaner since I got him

I got mine fabbed and soldered by the wonderful Leo of Beekeeb. Beekeeb specializes in small low-profile split ergomechs.

It’s a bummer that zmk doesn’t support pointing devices yet, because that means I can’t use the beautiful Lenovo trackpoint module I put so much effort into setting up for my MX Corne. RIP. Unless…I go the extra mile to implement PS2 support in zmk….just kidding I don’t have time for that right now, we need to finish writing MIT Mystery Hunt.

hardware thoughts & tips

It’s great, I am really enjoying low-profile and it’s nice to finally have a keyboard that matches my keymap size. Always felt silly carrying around unused columns. The Chocofi packs down to less than half the size of my old keyboard, which was already quite small. It fits easily in an inexpensive hard drive case.

The Kyria-style stagger took a little bit of getting used to, but it is definitely more comfortable for me than the traditional Corne shape. I really like letting my hand rest in its natural shape, and now I no longer need to deviate my wrists to type in the pinky column.

I miss the comfy spherical scoop of my old DSA keycaps, but LSDAs are still out of stock. The standard MBKs are just ok/adequate.

Choc Sunset switches (40gf tactile) were out of stock when I first got this keeb, so I used Light Blues (20gf linear) for a while and hated them. 20gf is a perfect weight for RSI, but I really have to overstrike on linears to type at speed for some reason, a common problem. Tactile is definitely the way to go for me.

I just got my Sunsets and they’re a big improvement, although I do find them a little stiff and heavy compared to the effortless 28gf Hako Violets I was used to using on my old keeb. People have been working on this for years and unfortunately, the shorter travel distance means it’s just not physically possible to manufacture low-profile tactiles as light as MX tactiles can get.

Choc switches have one pin that is very thin. Make sure the pins are actually aligned with the sockets, and insert the switch straight in. The thin pin can get smashed in so that the pin is not actually in the socket, but it looks/feels as if the switch is seated properly. You won’t notice until you start typing and the key doesn’t work. It was easy enough to straighten the pins back out with needlenose pliers, but a little harrowing since I didn’t have a lot of spares.

I didn’t originally buy screens. They seemed like a splurge. However, I had trouble building my firmware at first and couldn’t get into the debug console either, so I broke down and bought them to use for debugging.

Now that I have them, I’m very impressed by them. They’re crisp and refresh quickly.

firmware thoughts & tips

I had trouble setting up the zmk build system on my cursed silicon Mac, which I find a new reason to complain about every time I interface with hardware, CAD, or photoshop. I’m sure someone has done it, I just ran out of patience before I was able to figure it out.

For now, I’m using GH actions to build even though I really dislike the unreliable feeling of fragility that comes with relying on the cloud. It feels strange and weird to not have a local build pipeline. I think I need to dig up a 15-y.o. Lenovo out of storage and put Linux on it to use whenever I can’t figure out a macOS incompatibility. It would be nice to have a backup option that can actually talk to things.

If you are using a Mac to flash firmware, your data cable must plug directly into the computer, not pass through a hub. A direct USB-C adapter is fine.

Macs have a port problem where the designers took out all the ports to make it thinner. Web cloud-only devs who only use their laptops as combo browsers+shells love it, anyone who interfaces with hardware hates it. So I always have a big port hub plugged into the side of my Macbook. One funny thing about Macs is that even though you can send and receive high speed data just fine through the hub, I (and other keeb friends) have never been able to flash firmware to a keyboard through a Mac hub for some reason, which is a simple but weird possibility you maybe don’t think about until hour 5 of swearing and nitpicking through every last line of code and testing and swapping out several different data cables.

In summary, don’t punish yourself with a Mac if you talk to hardware. I only have one because it’s been necessary for a lot of my software jobs.

Otherwise, it was pretty straightforward porting my functionality from qmk to zmk, although it’s a bit annoying that zmk keycode aliases seem to prioritize word readability over length standardization. So on QMK, it was easy to format all my keycodes into a compact little grid, but my ZMK keymap overflows way off my screen.