We are Living in a Keyboard Golden Age
We are living in an unprecedented golden age of keyboards. When I began programming there were really only a few choices of keyboard:
- The one that shipped with your PC (generally not bad until mid-00s when everyone started churning out membrane keyboards.)
- Wavy “ergonomic” keyboards - good for making you the punchline of a bunch of your friends’ jokes
- Das Keyboard’s initial forays into keyboard making (great keyboards but didn’t hear about them til much much later)
Now there are a paralyzing number of options. There are whole YouTube channels dedicated to just reviewing different keyboards. With so many options it’s difficult to know where to start.
The basic option isn’t bad. Stock Mac keyboards, whether built into a laptop or as a discrete input device, are genuinely usable. “Trickle down design” has ensured the proliferation of Apple’s scissor switch style key mechanism to many other vendors. This price competition has made it such that Apple’s own “Magic Keyboard” is only about $100. I know at least two programmers who use Apple keyboards exclusively. I don’t mind the typing experience for the most part but about five years ago I started waking up with numb hands the mornings after long coding days. To my surprise, I found that typing on a mechanical keyboard, despite the fact that the keys had more resistance and much further travel distance to depress, completely alleviated my issue.
My first mechanical keyboard was a Happy Hacking Keyboard (HHKB). The way it looked and felt when actuated gave me nostalgia of the keyboard of my childhood. I was mostly just happy to have healthy hands again. It was great for my home setup but it was big and heavy. I commuted to work by bike at that time and spent stretches of time working in coffeeshops so I found its footprint and weight to be cumbersome. I relegated the HHKB to home-desk-duty and picked up a, frankly ridiculous, Vortexgear Core - a 40% keyboard.
A 40% keyboard is ridiculously tiny. The keys are all the same size as a regular mechanical keyboard, it just has a lot less of them. It had the typical QWERTY keys, a row-ish on the left and right (enter, shift, etc.) and a row on the bottom (space, alt, and so on). It relied on layers in order to achieve some semblance of full-keyboard functionality. Layers could be activated by certain keys, when a layer is activated it replaces the functionality of some, or even all of the keys on the keyboard. For example your “base” layer might map the q
key to q
. If layer one is enabled, q
might now map to Esc
, or even a complex sequence like hello<Enter>
. 40% is generally considered a bit of a ridiculous sized keyboard since it is inevitable that one will need to do a lot of layer switching in order to code efficiently. I found coding to be doable but signifigantly less pleasant than the HHKB with it’s (by comparison) luxurious 60% layout. The 40% served me well though - I ended up writing my entire dissertation with that keyboard, it is one of the few things in my life that I’ve discarded and significantly regretted it later. So it goes…
Three years ago I became interested in split keyboards. Split keyboards are exactly what you think they are - keyboards split in half down the middle and connected by an extra cable. one of the main benefits of a split is it requires less internal rotation of your shoulders to use - the hands can instead fall at a more natural place on the desk instead of right up next to eachother as with a standard, contiguous keyboard. Some other nice to haves in a split keyboard are tenting and thumb clusters. Tented split keyboards tilt up in the middle similar to the contour given by the regrettable looking “ergonomic” wavy keyboards of old. With a steep enough tilt, the thumbs are freed up to move in a graceful way that brings into question their employment as spacebar-slappers. Many split keyboards include some number of additional keys that can be operated by the thumbs - these are particularly powerful fingers so one might consider mapping layer press-and-hold toggles to them, i.e. “activate this layer so long as I am depressing this key”.
I found a well crafted keyboard that implemented all of these things in a way that I wanted in ZSA’s Moonlander. Historically I had opted for Cherry MX Brown switches (or similar) in my keyboards. These switches give the keys a healthy amount of resistance when pressed. For my Moonlander I decided to take a chance on Blue switches and have never looked back. Blue switches are the switches of my youth. They are springy at the top and actuate with a “CLICK” sound that wakes up babies, disturbs coworkers, instills fear into the enemy’s heart, and gives me total confidence that yes, I have pressed the key. They reminded me of the old IBM keyboards I used to use in my dad’s office on the weekends.
I have mostly great things to say about the Moonlander. It’s held up to years of abuse and just recently feels broken in. It is like an old baseball glove that bends exactly at the right point in your hand. Instead of the leather smell that makes you feel harmony with the tool it’s the clicking noise of the switches. I love that keyboard so much I bought a second one that was immediately put into a drawer and never used in the event that ZSA goes out of business or stops making it. I will buy many more backups if there is ever a credible rumor that they will cease making it. Similar to the HHKB though, it is a bear of a keyboard. It weighs nearly two pounds with the case and cables and will absolutely not fit in a briefcase. Due to the fact that I travel a lot for my job, I just picked up their Voyager keyboard which is essentially a minimal, low profile, scaled down version of the Moonlander. It fits reasonably well in my briefcase but I’m not thrilled with the way the keys feel, nor the ergonomics of it. I am considering getting a small contiguous keyboard for travel and would be happy for your suggestions.
All this is to say, there are infinite possibilities for keyboards right now. I know engineers that use stock laptop keyboards, prebuilt mechanicals of every shape and variety, and even a few that build their own keyboards from open specifications shared online. As with any other dev tool though, which the keyboard essentially is, I recommend starting conservatively with something of reasonable quality such as something with a scissor switch instead of a membrane, seeing where the pain points are for you (not me, not some dumbfuck redditor), and optimizing your next keyboard choice to overcome some of those pain points.