As Jane Austen might have written (had she been a geek with a keyboard obsession), it is a truth universally acknowledged that a person in possession of keyboard they have built will soon want to build another. Having built three Corne keyboards (two from conventional PCB kits, and one handwired), I was keen to try a different style. I definitely wanted a split, ortholinear keyboard, and one that supported Kailh Choc key switches. Pierre Chevalier’s Ferris family of keyboards caught my eye, but I felt intimidated by the advanced soldering skills needed to assemble it, as it uses separate, on-board controller components rather than a microcontroller like most DIY keyboards. Then I found that David Barr had adapted the Ferris to use a standard microcontroller, and called it the Ferris Sweep. It looked perfect.
Building the Sweep
The Ferris keyboards (named after the cute crab mascot of the Rust programming language, apparently) are small, 34 key keyboards. They have three rows and five columns plus two thumb keys on either side. That’s a whole column and one thumb key fewer than the Corne on each side. I was really curious to see if I could live with such a small keyboard. I’ve come to love the fact that you are only ever one key away from the home row position on the Corne, and the Ferris removes the stretch for the little (pinky) finger as well. The Ferris also has a more exaggerated vertical stagger of the columns, particularly for the pinky finger, as well as ‘Choc’ spacing (18 mm x 17 mm) of the keys. There is almost no space between adjacent keys, which means that each key is even easier to reach, and holding more than one key at time is fairly trivial.
As there are only 17 keys on each half, each key can be directly connected to a pin on the controller, rather than connecting only rows or columns, so no diodes are needed to help the controller to disambiguate key presses. This makes for a very easy build (only the controller, key switches, TRRS jacks, and optionally a reset switch to solder), and a very clean looking finished board. I’m not using the feature, but there’s also a set of holes for M2 screws to fit a tenting puck which you can attach to Manfrotto mini tripods to tent the keyboard. I think it’s one of the best thought out, most elegant PCBs I’ve seen.
David provides the files you need to upload to a PCB manufacturer, so I took the plunge and tried ordering PCBs directly from JLCPCB. I chose a nice blue colour for the plates (which turned out to be a deep teal colour), but otherwise went with the standard options recommended by David. You have to order a minimum of 5 boards (the two sides are connected into one plate and separated by ‘mouse bites’), but it was quite cheap even with shipping. I can see myself building three keyboards anyway (two wired for work and home and one wireless for the phone/iPad), and I may give away or swap the remaining ones with other keyboard enthusiasts.
Once the boards arrived, it only took me a couple of hours to solder on components de-soldered from my first Corne build, and be ready to try it out. I didn’t have a reset switch which fitted the pads, so I just touch the ends of a bent paperclip to the pads to reset the board, which works fine if you are careful. The keyboard is neat and delightfully low profile. Even compared to the Corne (which is small) it looks tiny. You can opt just to put rubber feet on the bottom of the PCB and use it like that, which is what I did initially.
3D printing a case
The keyboard building community is a wonder. Not only do people provide all you need to order and build your own keyboard, but some people also provide designs for cases that you can get 3D printed. I had experimented with this with the Corne, and found a great design for a case by Knifa on Thingiverse that I sent to a UK printer. It is intended for printing with elastic TPU filament, as it is meant to be a tight, friction fit. The result was absolutely superb, and fits the keyboard like a glove. One clever design feature is that the interior surface of the case has small cut outs which match the footprints of the switch legs and solder points. This means that the board sits flush and stable on the bottom of the case, and the TPU material provides a bit of shock absorption. You absolutely can use the Ferris without a case at all, but this one provides a bit of extra protection while adding barely any extra height, so I think it is worth trying.
Next came the fun part: trying to settle on a keyboard layout. Going from 42 to 34 keys needed a bit of a re-think. On the Corne, I had tab, space, enter and backspace on the thumb keys, as well as two layer keys, so I had to decide what my priorities would be. In addition, as I now had one less column of keys on each side, locating shift keys and also the quote key was an issue. You can see my final layout here, but it was a process of trying several different schemes before I settled on one. Do forgive the scruffy hand-drawn, badly scanned layout below! I need to get this into a neater form.
I initially used home-row modifiers, where you put the modifier keys on the home row of the keyboard, and hold the key (longer than a specified time) to activate the modifier, or tap the key to get the base character (like ‘j’). I do like their convenience, but as it means that the keys activate when released (not when pressed), I started to find that it was throwing off my typing accuracy. Then I tried callum’s one-shot modifiers, didn’t like them, went back to home row mods, then decided to give one-shot mods another go. I think I’ve got used to them now, and quite like their flexibility. The basic idea is that you have keys dedicated to the one-shot modifiers on all the relevant non-base layers of the keyboard. You can use them in combination with keys on their own layer by holding then, just like ordinary modifiers. However, you can also ‘carry’ them to other layers, without having to worry about timing. For example, if I want to hit Cmd+C, I can hold the LMOD key for one of the symbol layers, tap the Command key on that layer, then let go of both keys and tap ‘c’ on the base layer to finish the sequence. It takes a little practice, but it’s not difficult.
While I can access the one-shot shift keys on my layers, I’m trying out ‘Autoshift’ for alpha keys. This is a feature of QMK which allows you to hold a key for slightly longer than normal to output a shifted version of that key without having to hold a modifier. It’s quite convenient, but of all the features, it’s the one I am currently least comfortable with, so I may drop it and convert the bottom row pinky column keys on each half to a shift when held and their conventional output when tapped. I find that shift doesn’t engage when I expect it to at times, and then at others, I get an unwanted capital letter. However, another capitalisation feature that I love is Capsword, created by Pascal Getreuer. This is a brilliant idea: you tap a combination of keys (by default, both shift keys, but you can set it to whatever pair of keys you like) and it activates a mode where the next word you type is capitalised, then it disengages automatically when you enter a space. You can customise which characters exit the mode, but I found that the default works well for me. I have set up a caps lock key on one of my layers, but I basically never need to use it.
Along the same lines, Jonas Hietala created the Numword feature: you hit a combination of keys to activate a numbers layer, and you can keep typing numbers until you type a space or some other non-word character. I set up this layer in a similar way to Jonas. If I quickly tap the outer thumb keys (space and backspace in my layout, nearest the split between the sides) at the same time, Numword is activated. If I want to enter just a couple of characters quickly, I can hold those two keys, and I exit the layer when they are released.
I have seven layers including the base layer, following Jonas’ scheme:
- The base layer has all the alpha keys, plus comma, period, single quote and slash. The inner thumb keys activate symbol layers (and more), and the outer thumb keys are space and backspace.
- Holding the left inner thumb key activates a symbol layer with one-shot modifiers on the left and symbols on the right, and holding the right inner thumb key activates a similar symbol layer with mods on the right and different symbols on the left.
- When in either of the symbols layers, holding the other symbol layer key activates the function layer, which has F keys on the right and various media keys on the left.
- As described above, tapping both outer thumb keys or holding them accesses the number layer, which is arranged as a numpad, with a few extra arithmetic-related symbols included.
- Holding the space key (outer thumb key) activates a navigation and shortcuts layer while it is held. This has arrow keys (in the Vim configuration), page up/down, home/end keys and so on. I’ve also added shortcuts for switching between tabs (and buffers in Emacs), activating Alfred, switching between applications and editing shortcuts.
- While in the navigation layer, holding the outer thumb key on the right enters a workspace navigation layer, which has some Hyper key shortcuts (that is all the modifiers held together), to change between my virtual desktops, or resize windows.
Since there is no room on the baselayer for conventional enter, escape or tab keys, I have added them as ‘combo’ keys on the base layer. For example, if I hit ‘j’ and ‘k’ simultaneously, it produces enter. The Choc switches I use (the light blues) are only 20 g, so it is easy to hit more than one key. I have quite a few combos, including one for Ctrl-c, which I use a lot in Emacs, particularly the C-c C-c command, and is a bit awkward with one-shot mods. I hadn’t tried combos before, but I really like them and find them easy to remember and easy to hit.
I’m still getting used to the new layout, so I will no doubt be tweaking it more. As I mentioned, I’m not sure about the autoshift feature, so I may revert to more conventional tap-hold shift keys for that. Overall though, I love this little keyboard. It feels incredibly comfortable and non-fatiguing to type on, as finger movement is minimised. This is exchanged for a slightly higher cognitive load as you need to remember how to activate different layers, and which keys are on which layer. In practice, I’ve found that you adapt to this quite quickly, however, that is partially behind my idea to have identical keyboards at work and home, or it will get confusing very quickly! A wireless version would be beautifully portable for using with an iPad or phone too.