Hold me closer, tiny keyboard

· geekery · keyboards ·
Figure 1: The Piano 2 keyboard designed by Ben Vallack

Figure 1: The Piano 2 keyboard designed by Ben Vallack

I can’t believe how long it has been since I last posted. I have to say that it has been a very tough few months. At times I have to admit that I have found it hard to hold things together, and I have been constantly exhausted, with no energy left over after the cycle of work, eat, sleep (a bit), repeat. Thankfully things are easing a little now, and I am beginning to look forward to a break over Christmas.

Now that I’ve got the energy back for writing, I wanted to post about my latest keyboard adventures: meet The Piano, designed by Ben Vallack.

I had been enjoying Ben’s videos about his keyboard adventures for a while, and was really intrigued by this tiny 18 key design he calls The Piano. I had what I guess is everyone’s first reaction to seeing it — surely there are not enough keys for that to be practical? But Ben was obviously able to type pretty fast on it, and the more I thought about it, the more obsessed I got with the idea of trying it out.

As you know, I love my Ferris Sweep keyboard. That 34 key form factor has felt ideal to me, but I couldn’t shake the curiosity about what just over half as many keys would feel like. I also hadn’t built a wireless keyboard yet or tried out ZMK firmware, and the Piano is designed for hotswap sockets for the switches and controller. I figured that the most likely outcome would be that I would find it wildly impractical, in which case I could re-purpose it as a couple of oddly shaped macropads, or remove the components and use them on another project. Either way, it would be quick to solder with so few keys!

Readers, you will probably have seen this coming a mile off, but I have fallen in love with this ridiculous thing. I have been using it full time for about 6 weeks or so, and my speed and accuracy is gradually building back up. There is something deeply addictive and satisfying about it. Each of your fingers (except the little/pinky finger) has only to deal with two keys. The index, middle and ring fingers move up and down one unit in a column, and the thumb moves in an arc by one unit. The little finger gets its own key. The end result is that your fingers barely move. The trade-off is that your brain has to do a lot more work to figure out which combination of keys to hold to get the right character for the key. This makes learning the layout quite tough, but it is surprising how quickly it starts to become automatic, and feel very natural. At that point, it feels like magic.

I think my proprioception is not the best. I have a tendency to whack my hands or arms on door frames as I pass through them because at any one time my brain seems only to have an approximate idea where the outlying regions of my body are in space. I wonder if that’s why I find it easier to type accurately on this keyboard? My fingers simply don’t have to be in too many places, and my brain seems to cope fine with the extra burden of timing and sequencing combinations of keys with no problem. Whatever the reason, it is a joy to use, and incredibly comfortable.

Building the keyboard was very straightforward. Ben made the gerber files available on PCBWay, and I got them fabricated there, choosing the red soldermask, which I think looks fabulous. I had not used hotswap sockets in a build before, but they were very easy. The biggest headache turned out to be the JST socket so that I could connect and disconnect the LiPo battery. That thing is tiny and crimping the little pins on to the wire so that they made a proper connection turned out to be fiddly in the extreme. When I first turned on the keyboard halves after flashing the firmware, the left half was working, but the right was not getting power. I used a multimeter to check connections and found that the battery had a charge, but it was not registering at the JST socket pins, so something must have been awry with the crimping of those little blighters. I took the connector apart, re-did it, and everything worked fine. I had a similar situation this week with the left hand side, and sorted it out in the same way. Other than that, everything has been reliable, and ZMK is lovely to work with. I take the keyboard back and forth to work, and thanks to the Bluetooth profiles ZMK enables, I can connect and switch between up to five different devices. I have made some minor tweaks to the layout that Ben created, but mostly to the symbol layers, as the two alpha layers work well.

You might be wondering how typing words work when there are only 18 keys and 26 letters in the alphabet. This is a question I get asked a lot by visitors to my office, after they have done a bit of a double-take. “That’s an interesting looking keyboard. Hang on…”. In essence, it is simple: the most frequently used letters (in English) are on the main layer, then you hit the nearest thumb key on the right to activate the second layer of alpha characters, plus the most used punctuation characters. It’s just a shift key really, but the genius of ZMK and Ben’s solution is that the layer key is a special kind of one-shot sticky layer which inactivates after exactly one key has been hit. That means that you can be quite sloppy in how you time holding the layer key, and roll over it quickly without getting more than one key on that layer. It does make it slightly more awkward to hit two layer 2 keys in succession (say ‘bb’), as you have to release the thumb key between them, but that is where the ‘repeat’ key comes in handy. You quickly get used to it.

Modifier keys are activated by holding keys on the top row, and other layers (for symbols, numbers, navigation etc.) are accessed by holding keys on the home (bottom) row. I have used combos to toggle the bluetooth and function key layers, as I don’t use them so often, and there is also a combo toggle to access the navigation and number layers if I need to stay in those layers for more than a few keystrokes. You can see my current layout in my fork of Ben’s layout repo.

Now that I know that I want to use this layout and form factor long term, there are a few things that I want to fix to make it better for my hands and use case. The board is so tiny and light that it is a bit unstable in use. If I am not careful to hit the top row of keys perpendicularly with my fingertips, the board tips away from me and tries to flip over. I know that Ben wanted something as small and light as possible for travel, but I would trade that off for greater stability and protection for the components. The thumb keys are not at the optimum position or angle for the size of my hands, and I find the position of the controller awkward, as you have to use a right-angled USB cable to charge the batteries. The placement of the cable means that you can’t charge and use the keyboard at the same time. These are all trade-offs that Ben made to fit his use-case, but as mine is different, I would like to tweak it a bit. This seemed like a good opportunity for me to learn more, so I am currently designing a board (in KiCad) and an enclosure (in FreeCAD) from scratch, but keeping the same layout for the fingers. I have not used either bit of software to build anything before, so wish me luck and watch this space!