This is a post about keyboards. Well, about one keyboard, but we’ll probably go through a bunch to get there. It’s going to be long, and some of my less Tinder-profile-worthy personality traits will probably become obvious, but we can get there together.

There are two types of people who will want to continue past this point. First, those interested in mechanical keyboards to the extent that they care what other people think about them. Second, those who enjoy reading about other people’s nerd stuff. Maybe specifically about keyboards, but it’s likely that this person enjoys reading anything decidedly nerdy. Either because they’re nerdy, too, and it makes them feel better to know they’re not alone, or they’re so normal — and fine with that — that it amuses them to see other people go off the deep end.1 It’s ok. Everyone loves Sheldon. Everyone is welcome.

Origin Story

The first keyboard I can remember liking to the extent that I would talk about it was the diNovo Edge. That was around 2001. Up until then keyboards had just been a tool, not something I noticed or cared about. I went through a few iterations of the Edge, eventually ditching them because Logitech makes horrible drivers for Mac. Oh, and they required drivers on a Mac. And dongles.

For years since then I’ve always come back to my aluminum Apple bluetooth keyboard. I don’t even use the latest one, the Magic Keyboard, but the one that still had a workable arrow key cluster.2 Not for lack of curiosity, and certainly not for lack of trying: I have a Das Keyboard, a Matias Laptop Pro,3 a Matias Tactile Pro, an ErgoDox,4 a couple old diNovo Edges, and a few others, mechanical and non, just laying around, moping, and hoping that I’ll put them up for sale to someone who’ll actually use them. I have piles of keycaps, a couple switch testers, and a fancy key puller. I’ve spent hundreds of dollars (probably over a thousand over the years) trying to find a keyboard that made me feel more powerful than I did on my trusty Apple aluminum keyboard. Even the ones that got really close still had deal-breakers for me.

I have a litany of reasons why every fancy keyboard I try might fail to make it into the “primary keyboard” spot. The foremost thing that always kills my momentum is that moving any key in the modifier cluster (Cmd, Opt, Ctrl, Fn) too far from where my muscle memory has known them to be for years inhibits my ability to function efficiently. It’s a crippling dependency I’ve created for myself, but I feel that the time and effort it would take to get as good with a new layout as I am with the standard layout (on every single laptop and Apple keyboard) I use would be too arduous to be practical.

I’ll also admit that the feel of typing on most mechanical keyboards doesn’t thrill me the way it seems to thrill some others. The less clicky the better for me; I prefer Cherry Browns and Reds to Cherry Blue, but they all feel awkward and slightly laborious to me. I’ll concede that I do like to use the Matias Laptop Pro with my iPad for writing. I do get that mechanical keys can be pleasurable. Once I get used to the key travel, it’s possible for me to dig it.

I’ll also admit that, despite the above complaint, I type more accurately on mechanicals most days, owing partly to the fact that my fingertips have some numbness, especially in my right hand, as well as guitar string callouses, and feeling flat key edges isn’t always possible. It’s certainly easier to feel big, tall keycaps. But I still never loved the feel of hitting the keys. That’s not to say I think the Apple Aluminum is the top tier of typing pleasure. It’s ok — nothing to write home about, but with that one I can work.

Here’s what always happens: I’ll try a keyboard out for a while, just for writing. That will usually go well and I’ll see hope for it. Then I’ll start launching other apps and run into confusion with my shortcuts and muscle memory. Then it always seems to compound once I get into a code editor, especially if my bracket keys have shifted at all. Pretty soon, no matter how determined I am, I just can’t justify the lost minutes of productivity every hour as I look down at the keyboard and watch my fingers still repeatedly trigger the wrong shortcut, operating of their own accord. Then I start to think about how even if I spend a whole weekend mastering this keyboard, I’ll need to shift my keybindings and BetterTouchTool and Karabiner and Keyboard Maestro shortcuts to make them more efficient on this new layout, and then they won’t work well on my MacBook’s built-in keyboard… and then I give up.

I think this might finally have changed.

The Ultimate Hacking Keyboard

My penultimate keyboard in this story was the ErgoDox from MassDrop, a Teensy-driven hacker keyboard. While it didn’t pan out for me, I realized that if I was going to make a mechanical work, it had to be utterly programmable.

I backed this “Ultimate Hacking Keyboard” when it was crowdfunded. I don’t even remember when I committed myself to the purchase. Judging by the price tag (>$200 US), it was long enough ago that I wasn’t as broke, and not as phased by the future ding to my wallet as I was when it finally came around. Turns out it might have been worth it, and that this one might be the best bet for getting me on to a new keyboard. Smart money says I’ll be back on the Apple aluminum within 2 weeks (just judging by history), but here’s why I think there’s a chance.

The Ultimate Hacking Keyboard, henceforth referred to as “UHK,” can function as a one-piece keyboard, or you can break it in two to create more ergonomic layouts. I liked the split nature of the ErgoDox, but I find the best position for me is just barely split apart; the ErgoDox at the same angle required the halves to sit farther apart than I found comfortable. You can also attach the lift stands at any of the 8 corners (when it’s split apart), which means I had the chance to find out I really like the “tenting” arrangement (raised in the middle, sloping to the sides).

Like the ErgoDox, it’s hardware-programmable. You can control exactly what key code(s) each key sends, and it has a visual layout editor for your computer. It can switch between different keyboard layouts; it comes stocked with Mac and PC versions of Dvorak, Colemak, and Qwerty layouts, and you can add your own and replace the buttons or assign new ones for switching between them.

The programming happens in “layers,” each layer being a different layout with certain keys triggering the switch between layers. Same thing that happens when you hit the Fn key on any keyboard, most keys suddenly have a different function and some no longer do anything at all. The ErgoDox had six layers, which got to be a little too much fun for me. I had to have printed diagrams to use the beast I created.

The UHK has more keys than the ErgoDox to begin with, which means it requires less creativity to assign all the usual keyboard keys. As such, I don’t find the three layers the UHK offers to be limiting. There’s a Function layer (when you’re holding the Fn key) and a Mod layer (holding the proprietary Mod key). It comes with some thoughtful defaults, but you can (and I did) completely modify every key to your own liking.

Because the Space bar is split in half, the UHK turns one half of it into an extra button (a Mod button). Below the space bar on each side is a flat button you can also program. By default they’re assigned to Space and Mod, opposite of the button above it, so you have both keys on each hand. The default layout takes one handed keyboard use very seriously.

It also has a Mouse layer. When you hold down the Mouse key, the i/j/k/l cluster becomes controls for your mouse cursor, and the mod key that’s under your thumb becomes left click. The extra mod button at the thumb becomes right click. Y/H scroll vertically, U/O scroll horizontally. It’s nifty, but I can’t see being so desperate to avoid my trackpad (I really love my Magic Trackpad) that I’d spend the time to actually be comfortable doing it. You can, however, use the Mouse layer as an additional keyboard layer, simply reassigning the mouse movement keys. Numeric keypad, anyone?

All of the keys can have secondary functions, much the way that the Hyper key5 does one thing when you hold it while pressing another key, and something else (escape) if you just tap it. On the UHK, I used this to turn my tab key into the Mouse key when I hold it, and replace the Mouse key with a caps lock key. So I can have my Hyper key and not have to relearn all of that, too.

Layers can be activated while holding down modifier keys, but you can also set keys to toggle them into one state or the other. You can use this to switch fully into a layout with task-specific keys for web browsing or media consumption, just a click away from having your regular keyboard back. I’ve actually found this pretty handy.

It has add-on thumb modules available that you can attach where the halves break apart. According to the shipping notice I got, I apparently also have two of those coming (an extra button cluster and a trackball) but I’m kind of happy I can just spend some time getting used to the keyboard before I go trying to extend it.

Why I think it’s working for me

Short answer, obviously, is “because it’s really expensive and it has to, dammit,” but I could say that about any of the other half dozen pricey keyboards on my shelf.

First, I like the mostly-standard modifier key layout on my left hand. I shuffled some keys around to get it right, and I made the left half of the space bar the actual spacebar (by default it’s a Mod key). It turns out I always hit the spacebar with my left thumb, and that was going to be a nearly impossible habit to break.6

Next, having more keys in standard locations, combined with total programmability, allows it to cover all of the things I need and not leave me feeling like I compromised on anything or had to make too-tough decisions about where to put a key when it couldn’t be where I needed it to be.

As I said before, the split layout and option for “tenting” risers is great for ergonomics. I need that. Yes, there are less expensive keyboards that do exactly that, but… programmability.

I don’t even know how to measure or quantify key travel, but I know that this one has the right amount for me. I was instantly accurate while typing on it. I can’t say that for the Matias or Das keyboards, and definitely not for the ErgoDox.

The switches are Cherry Brown (I think), and make no click noise of their own. So it’s still noisy like a mechanical always is, but not thunderous on a desk or annoyingly “buzzy” once you get up to speed.

Lastly, it’s not generally considered a feature, and is obviously the standard for mechanicals, but I like that it’s USB. It’s for my desk. I have USB ports everywhere. Why would I want a keyboard that needs batteries or recharging? Hardwire me.

The arrow keys

You may have noticed my obsession over the years with keys related to cursor movement. I like my arrow keys a certain way, I create Karabiner hacks to enable vim navigation, and use a bunch of keybindings to avoid having to use the arrow keys as much. I also know all of the emacs bindings for cursor movement that are built into macOS. All of that to say that I was immediately enamored with the lack of arrow keys on the UHK.

On the UHK, the arrow keys are part of the Mod layer (in the default settings), so holding Mod down you can use i/j/k/l as an arrow cluster. This means not having to leave the home row to use them, but also means that something as simple as an arrow key now requires a key combination. At first this was daunting, but after 2 days it became natural for me. The toughest part for me happens when using a combo like “select by word,” which is Option-Shift-Arrow. Now it’s Option-Shift-Mod-[i/j/k/l]. And when I want to switch to selecting by character in the same selection, I have to think for a second to remember which of those three modifiers to let go of. Like I said, a bit of practice and it’s becoming quite intuitive, and definitely beats sliding off the home row just to move the cursor.

The same issue exists with the escape key, which is now Mod-backtick. I usually use the Hyper (caps lock) key as escape anyway, but sometimes hit that upper left key out of habit. Now doing that sticks a backtick into whatever I’m writing. Switching the habit fully over to the Hyper key will alleviate that issuue.

My concerns

A short list of grievances, because if you’re still reading, there’s a 96.541% chance that’s what you’re looking for.

Update: The UHK team contacted me about all of these and between firmware updates and some tips, they’ve all been resolved

  • It’s easy to hit bottom space/mod keys accidentally when not paying attention, which is especially annoying if they’re set to permanently toggle a mod or function layer Make sure they’re not set to toggle, or at least only on double click. This is the default anyway.
  • Sometimes the bottom space/mod keys stick. If I wanted that to be a toggle, I’d have told you, UHK. Gently pull the case keys away from the keyboard (toward you) a bit and they stop sticking.
  • Occasionally after a Command-Shift(-Mod)-arrow, the Command modifier sticks and requires releasing and re-pressing the mod key before getting normal arrow function again. If I thought that three modifier keys got confusing, remembering which finger needs to tap before the other finger presses is a nightmare. A firmware update resolved this completely.


Just as a record/inspiration for the masses, here’s some of what I’ve changed so far, because if you’re still reading, you get a kick out of this kind of thing.

  • Duplicated the escape, delete, and fn keys from Mod layer to Fn layer for consistency
    • Replaces the layout switching keys, which I’m not going to be using enough for them to be worth accidentally hitting
  • Tab key to mouse as secondary function
  • Mouse key to Hyper (caps lock/Karabiner)
  • Swap thumb space/mods (I always space with my left)
  • Re-order the left modifier keys to Apple layout: Fn, Ctrl, Opt, Cmd
  • Moved the media keys in the Fn layer and added Pg up, Pg dn, Home and End to their appropriate spots on the i/j/k/l cluster
  • Updated the app switching shortcuts so Mod-D brings up the app switcher (Cmd-Tab), then D moves right and S moves left (Cmd-Shift-Tab), and F sends Cmd-Q, which closes whatever app is highlighted when the App Switcher is up

Closing thoughts

I’ve been using this keyboard for 3 days now. That’s not very long, but I’m more comfortable on it after three days than I have been with any other mechanical after a week. That’s promising. And I’m actually having fun (obviously, enough fun to think “I should write about this”). Over breakfast when I thought about heading to my office, my next thought was “cool, I get to use the UHK.” I never got to that point with other attempts — even with the ErgoDox, and I really wanted to love that keyboard.

The backers are slowly getting their keyboards now, and if you want to pre-order one, it’s estimated to ship by October. Just in case this rabbit hole sounded like fun to you, too.

  1. Ok, I guess that’s at least three distinct types. I didn’t realize that until after I’d finished writing the sentence, and I don’t have an editor here to stop me from just fixing it in the footnotes. 

  2. You know, the MC184LL/B. 

  3. Admittedly, that one was free from the Macstock swap table, but it’s one of my favorites out of this list. 

  4. And that one was a gift 

  5. You know, that Capslock hack we all use — at least those of us who would read this far in an article about mechanical keyboards. 

  6. This is a safe space, right? Can I also admit that about 50% of the time I hit “y” with my left index finger? My grade school typing teacher would have hated that. I’m not sure when I developed the habit, but I have to break it now that the y is way over on the right half… is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means to earn fees when linking to and affiliated sites.