Keyboard First Impressions - ZSA Moonlander

Thursday, Jul 29, 2021 10 minute read Tags: keyboard
Hey, thanks for the interest in this post, but just letting you know that it is over 3 years old, so the content in here may not be accurate.

Keyboards, as software developers it’s something we use daily, and for extended periods of time. But it’s not something that I’ve ever really spent much time thinking about it or the role that it plays in how I work.

One of the first keyboards I remember using was a huge beige thing with a curly cable into the 9-pin port. Then, as I started working it was just whatever keyboard I had at work, basic keyboards that you’re likely familiar with from corporate environments. When I started consulting and speaking, my main machine was a laptop and because I didn’t want to drag keyboards around to client sites, I would just use the keyboard on my laptop… and I loved those. Probably my favourite laptop keyboard is the Surface Book 2, followed closely by the Surface Pro type cover.

With last year seeing me move to full time working from home, I got myself a desktop and with that I needed an external keyboard.

Thankfully, I did have one that I’d used on and off, a Microsoft Natural 4000!

My Microsoft Natural 4000 keyboard

My first ergonomic keyboard

I bought this keyboard about a decade ago, on my first trip to Microsoft as an MVP, mainly on a whim, but it’s mostly sat on the shelf collecting dust (due to the above mentioned reasons for not using an external keyboard). Anyway, I dusted it off and have been using it for about 12 months now.

This was the first time I’d used an ergonomic keyboard and I didn’t really know why I wanted it other than “it seemed like a fun experiment”. It took a little bit to get use to but, generally speaking, it was no different to any other keyboard I’d used. They keys felt nice, but not anything special.

Unfortunately, this is a 10 year old keyboard and it was starting to wear out, the wrist rests are starting to crack and peal, plus the years of dust collecting on it have made some of the keys a bit sticky at times.

It was time for a new keyboard.

The MS Natural 4000 is no longer available, so I needed to work out what I’d get as a replacement. Should I go with one of the current generation MS ergonomic keyboards, or should I go elsewhere?

I’d seen a few people on Twitter talking about split keyboards, and that intrigued me, so I started to look at them. One model that kept popping up is the ZSA Moonlander.

After some umm-ing and ahh-ing I decided to take the plunge and ordered it.

Why split?

So the first question you might have is, why a split keyboard?

Well, I’m already kind of using a split keyboard, the position of the keys in the MS Natural 4000 are already curved and separated, compared to a standard keyboard. The next reason is ergonomics.

I’m a tall person, and having a desk job means that I spend a lot of time in a less than idea ergonomic position and occasionally get shoulder and neck pain as a result (not to mention that I can pop most joints in my hands at will!). With a standard keyboard you tend to rotate your shoulders and hands in to use them, as seen when I use my laptop keyboard.

Hand position on my Surface Book 2

See how my arms are angled on and wrists have a curve in them (particularly the left).

Now take a look at the hand position on the MS Natural 4000.

Hand position on the Microsoft Natural 4000

Here my hands are a bit more spread and as a result my shoulders are more open, which is a more natural body position, but it’s still limited as I can’t move the keyboard any further apart than this and my wrists are still turned (it looks a bit weird in the photo due to the tenting on the keyboard making it not sit flat like the laptop one).

In a fully split keyboard, you can completely open up by moving each half of the keyboard to where is the most comfortable position for you.

Hand positing in a fully split ZSA Moonlander

This is the “optimal” position for the keyboard. Notice how my hands are in line with my shoulders, which is meant to be the ideal position for them. I’m not in a complete split yet, it’ll take time to get use to it.

So, what’s it like?

First Impressions

I’m on day four using it and if you’re following my Twitter stream you’ll have seen some of my journey, but here’s the highlights.

My First Mechanical Keyboard

The ZSA Moonlander is a mechanical keyboard, which means you can feel superior to others by talking about different key switches, the pressure required for them, their pre-travel distance, etc.

As a newbie to this space I’ve gone with two sets of key switches. Currently, I have Kailh Gold in, which are a very light switch, but also a super loud one (clacking on both the up and down motion), so it’s probably a good thing I work from home (although right now we’re home schooling due to COVID, but my wife hasn’t said anything 😅 Update: my wife read this post and said “Oh, you can totally hear them. 🤣). I also have a set of Cherry MX Brown, which are apparently a great starting key switch, they aren’t too noisy, have a good feel, etc. I’ll give them a try after a few weeks, once I’m more use to the keyboard.

Key switches!

Day 1 - I feel like an idiot

The box arrived and I couldn’t believe how small it was!

The box!

It has a snazzy little carry case for if I take it travelling (cries in COVID).

Travel bag

I slid my old keyboard off to the side and setup the Moonlander, plugged it in and it was time to get started.

Moonlander on the desk

The first thing I realised is that I wouldn’t be able to have it in the full split position, it was just too weird for me, so I brought the two halves a bit closer, more like the MS Natural, and now I could find where the keys were as I tried to type. It’s also an ortholinear layout, not staggered, meaning that the keys are lined up in vertical columns, unlike most keyboards, encouraging more up and down movement than side to side (here’s a good video talking of the differences and possible benefits of ortholinear).

One of the things that you can do with the Moonlander is customise the layout of the keyboard. Given I have less keys than before, no function row, no numpad, etc., if I want that functionality back in, I can customise it using their Oryx software. This was also useful as I had no idea what the keyboard layout originally was, like, where’s my Windows key, or backspace! It also supports the idea of keyboard layers, which is where you have different “modes” the keyboard can shift into, generally hitting some key, and changing what the keys do.

This was going to be a challenge…

I started to play with Oryx but honestly, it’s super overwhelming. I have no idea what keyboard shortcuts I tend to use, which keys I hit frequently, etc. so trying to move things around just meant I ended up with a confusing keyboard layout (I deleted my Enter key at one point 🤣). Chad Tolkien, who gave me some good insights before I bought the keyboard, sent me a layout that he uses which includes some layers for coding. It was using Colemak, an alternative to QWERTY, so I modified it to be QWERTY and got going.

My keyboard layout


With my keyboard layout tweaked enough to get started, I began using it, and using a drastically different keyboard is a great way to learn just how many bad habits you have with typing.

What I learn with my typing is that I rely heavily on my first and second fingers heavily, with my third sometimes coming into play and my pinky basically just being dead weight.

I also learnt that my right hand is really sloppy at typing, and while my left was picking up the new key positions and what not, my right was full of incorrect characters. I’d made the choice the keep CTRL + Backspace next to the H key (from Chad’s layout), but I was constantly hitting it when meaning H, and I never realised how often I tried to type the letter H until I deleted the whole word with a single missed key… 😅

Throughout the day I ran through the training exercises that Oryx providers and was hitting around 80% accuracy, but I was only getting about two lines into each of the pieces of text (maybe a dozen or so words) and that didn’t inspire confidence. I don’t know what my words-per-minute is, but I can crank out a blog post quick-smart if I need, so I’d say it’s better than the ~15 I was sitting at.

Yeah, I felt really dumb trying to type, but damnit, I’m going to learn!

Day 2 - Feeling better

On day 2 I started playing with the keyboard tenting, which is how you can raise the keyboard up. I like that the MS Natural 4000 wasn’t sitting flat on the desk and curved up at the middle, so I played around a bit with that on my Moonlander to get a position that felt right.

Tenting the keyboard up for better hand position

I started doing more typing and it wasn’t feeling as horrible. I’ve got a talk upcoming so I did some work on the slides, which required some typing but nothing long, and I did some updating to my work backlog, general admin stuff, and things were feeling better.

Here’s a video I posted on Twitter towards the end of day 2, showing me typing the tweet:

That tweet took about 45 seconds to type, which didn’t feel too bad… You’ll see me backspace a few times though!

Day 3 - Coding

After two days I felt like I was getting the hang of this usual typing stuff, it was time to do some coding.

Aaaaaaaaaaaaaaaand back to square one 🤣.

I never realised how muscle memory I have in coding, where the symbols are, how to use tools like VS and VS Code, I just use them, I don’t even think.

But now I don’t have the symbol keys where I would expect them to be, I have layers that have them, and it’s just weird.

This is something that I’m likely going to keep playing with for a while, I need to work out what to put where, and how my fingers tend to think about movement, but I was able to struggle through what I wanted to do, even if I felt like it was taking absolutely ages.

I now have some customised layers on the keyboard for VS Code and VS, containing the useful shortcuts that I use, but I do find the macro system in Oryx limiting, I wish I could have longer sets of keys so in VS Code I could do CTRL + P, TERM<SPACE> to access the terminal list, but I can only get it to do TERM. That’ll have to do for now.


It’s been less than a week but when it comes to word-centric typing, I feel like I’m getting my stride back, coding is going to take a bit longer, mainly because there are so many variables (ha!) to that, but I’m sure I’ll get there (this week hasn’t been a code-centric week for me).

I’m finding the mechanical nature of the keys nice, and I’d probably rate this above the Surface Book 2 keyboard. I’ll keep the Kailh Gold’s in for a few weeks before trying the Cherry MX Brown, although the clacky sound is growing on me.

If you’re interested in the keyboard layout I’m using, here it is, feel free to give it a try, I’ll keep tweaking it as I go.

And of course, I have some lovely RGB involved, because if there’s no RGB, what’s the point!