Computer keyboards largely go unnoticed in daily life: most of us have to use them at some point or another, but they tend to be seen as interchangeable lumps of plastic and metal1.
For some of us, however, what keyboard we use has an effect on our health. I have typed a lot, for well over 30 years. 25 years ago I had prolonged period of pain in my hands that was, in part, brought on by extensive keyboard usage. After 3 months of not typing at all, I resolved to do anything I could to lessen the chance of the problem recurring. I soon realised that traditional keyboards force our hands into an awkward diagonal posture that can cause problems over time.
Looking around for a solution – any solution, no matter how odd it might seem! – I alighted upon Maltron keyboards. I bought a PS/2 model, and then later a USB model, and those have been my main keyboards ever since. Nearly everyone who’s come to my office has taken one look at the large lump of grey plastic at the centre of my desk and asked “what is that?”:
Recently, after 19 years of very long service, my Maltron started developing cracks in its case (which you can see in the photo above if you look carefully). Despite the fact that it does look a bit flimsy, I’ve put more miles into that keyboard than any other keyboard owner I know. I can hardly complain that it’s eventually shown signs of wear, especially as I have a tendency to rest a chunk of my body weight on it when I’m thinking!
I took this as an opportunity to rethink my keyboard. What if, 25 years after I last investigated this, there was a superior option? I remembered someone who I respected waxing lyrical about the MoErgo Glove80 keyboard and, after some investigation of the alternatives, decided to take the plunge.
My first impressions of the Glove80 you can see above were positive. It is a nicely manufactured piece of kit that has clearly had effort and thought put into it. Even the keys feel nice! However, 3 weeks later, I have gone back to my Maltron. Because I only found one brief comment online comparing the two keyboards – Maltrons are a tiny niche within the broader niche of unusual keyboards – I thought it would be worth explaining my experience, because it seems to me that keyboard designers are missing out on superior designs.
The importance of thumbpads
What anyone who looks at a Glove80 or a Maltron will quickly notice – after they’ve got over the initial “that’s a weird keyboard” reaction – is that the keyboard is split into two. [In the Glove80’s case, this is very literal: it is two physically separate “half size” keyboards.] The keys are also not on the normal flat plane: they are laid out in the inside of a gently curving bowl. The Glove80 and Maltron have similar bowl shapes: not identical, but the differences are sufficiently minor that I found transferring between them to have little impact on my typing speed or accuracy.
Fewer people notice that splitting the keyboard like this makes possible a fundamental difference over traditional keyboards: one can put multiple keys under the thumb, what I will call a thumbpad2. On a traditional keyboard, most of us will only use our thumbs for the Space bar and, perhaps, one or two keys either side of it. Let’s be generous and say that most of us can press 5 discrete keys between our two thumbs.
Each of my Maltron’s two thumb pads is a 3x3 grid of keys, one of which is double sized (i.e. 8 physical keys): my two thumbs can thus access 16 discrete keys:

The Glove80 puts a 3x2 grid (i.e. 6 physical keys) under each of my thumbs:

Putting more keys under our thumbs has two advantages. First, it lessens the load on any given typing finger. Second, our thumbs are incredibly flexible and can comfortably stretch over a much wider range than any of our other fingers.
Once you have got used to thumbpads, the difference is stark. I suspect that thumbpads are at least as important to improved ergonomics as is the more obvious “split” between keyboard halves.
Differences in the two thumbpads
It is in the thumb pads that the Glove80 and Maltron fundamentally diverge, and they do so in two ways. I noticed both soon after taking receipt of the Glove80, but I didn’t appreciate how much they effect me.
Of the two differences, I suspect the most important is that the Maltron lowers the thumb keys by about 1.7cm relative to the “main” part of the keyboard: the Glove80 has the thumb keys more-or-less level to the main part of the keyboard. Capturing this in a 2D photo is rather hard, but hopefully these photos give you an idea:
Let’s start with something that’s so obvious that I doubt many of us have ever thought about it (I hadn’t!). If I hold my hand in a neutral position in front of me, my thumb naturally drops much lower than my other fingers. In my case, it does so by about 2-3cm.
That means that my thumb naturally comes to rest on the Maltron’s thumb pad close to the neutral position, whereas on the Glove80 I have to rest it much higher than the neutral position3. That’s obviously a little less comfortable, but it seems there is a compounding effect: when my thumb is higher than the neutral position it doesn’t seem able to comfortably describe as large an arc. In other words, the higher thumb position I am forced to use on the Glove80 means that I can’t reach as many keys as comfortably.
The second way the thumbpads diverge is that the Maltron’s thumb pad is laid out in a pure grid, but the Glove80’s thumb pad is laid out in a slight arc, with a “wedge” gap between keys. The arc seems to better match the natural arc of the thumb, but it has a cost: the centre of the outer keys on the Glove80’s thumb pad is about 0.5cm4 further from the main keyboard than the equivalent key on the Maltron :


The practical effect of these two differences is that on the Maltron my thumb can access 6 grid positions without any stretching, 2 (on the LHS: top left, top middle) with a tiny hand movement, and 1 (top right) with a slightly larger (but not uncomfortable) stretch. In contrast, on the Glove80 I can only access 4 of the 3x2 grid positions comfortably; an additional position (top middle) requires a mild (but not quite uncomfortable) stretch; and one position (top right) requires such an uncomfortable stretch that I quickly realised I couldn’t make use of it.
The Glove80 does have a trick up it sleeve: “tenting positions”. In essence, there are lots of feet on the bottom whose height can be adjusted. I can’t say that I found different tenting positions made any difference to the comfort of my thumb.
Firmware
At this point, I found myself in a bind: I have become very used to doing lots of typing with my thumbs, but there weren’t enough keys under my thumbs on the Glove80 for this to work. Typing prose – such as this blog post – was fine, but programming, which requires the use of all sorts of funny symbols and other combinations of keys, was uncomfortable.
I then decided to reach for my favourite hammer:
software! Well, firmware, but that’s close enough. One of the glories of the
Glove80 is that it has a fully customisable ZMK firmware, which means that
nearly every aspect of the keyboard’s behaviour can be customised. I’ve long
used xkb
to customise how X sees my keyboard, but that is much less flexible
than changing a keyboard’s firmware, and requires forcing each computer I plug
the keyboard into to do what I want. It’s much better if the keyboard
itself outputs what you want.
MoErgo provide a ZMK web editor that’s good if you want to tweak the odd key or two, but (a) I prefer to have my configurations in a text file under version control (2) I wanted to do things that required the “you’re on your own” mechanisms in the web editor, at which point it didn’t really do very much for me. That meant that I started writing my own ZMK keymap file. This is not something I recommend for the fainthearted – ZMK has a syntax that even the most doting mother might admit isn’t the prettiest5 – but it is very flexible.
I tried various things to see if I could find a way around the problems I was facing. I tried a couple of “well known” Glove80 layouts, but they put too much stress on my thumbs. I then moved back to the non-QWERTY layout I am most familiar with (ironically the Maltron layout i.e. the top row starts QPYCB, and E is under the left thumb), and then started to wonder where all the non-alphanumeric keys should be placed.
I analysed a full day of my keystrokes with
xkbcat, which was very useful: my most
frequently pressed keys are not what I would have guessed! For example, I
discovered that I type ‘>
’ far more often than ‘<
’6.
I soon realised that the main challenge is the modifier keys (i.e. Alt, Ctrl, and Shift; there are others, but I use them too infrequently to care). Both hands need access to each of these modifiers, because using a modifier and typing a key with the same hand often involves painful contortions. However, I needed to balance this with the arrow keys (which I use a lot), and the most common symbols in programming (brackets and so on). I could not, for the life of me, find a layout where I could have stretch-free access to the modifiers and the most commonly used symbol keys: there simply weren’t enough comfortably reachable keys to spread around.
Home row mods
Eventually I came across what seemed like the solution: home row mods. In essence, the idea is that one puts the modifier keys “on” normal keys. For example, let’s say I make ‘f’ also be the Shift modifier. If I quickly tap ‘f’ then ‘f’ appears on screen. If I hold ‘f’ down and then tap ‘j’, ‘f’ now acts as Shift so ‘J’ appears on screen. I might make ‘d’ act as Ctrl and so on.
Using home row mods, I had “regained” 3 keys – I now had almost as good access to the keys I use most frequently on the Glove80 as I did on the Maltron! My problems seem solved. However, home row mods have side effects that aren’t immediately obviously.
A seemingly minor side effect – which took me a little while to realise was happening – is that the keys used as home row modifiers necessarily introduce a degree of latency. If you release, say, ‘f’ within a time window (typically around 0.2s) then ‘f’ is sent to the computer, but beyond that time window ‘f’ turns into “Shift”. The practical effect of this is that ‘f’ isn’t sent to the computer as soon as you press down, but only when you release the key. At worst, ‘f’ might be sent to the computer 0.2s after it is “pressed”. This only affects the home row modifier keys: other keys have no latency.
I don’t look at they keyboard when I type — I look at the screen. It turns out that any latency between my fingers pressing a key and a character appearing on screen makes my brain hurt. This manifested in several ways. For example, I found myself occasionally stopping when I thought I hadn’t typed a key, only for it to appear an instant later. I also found that if I mistyped something, I’d often type one more character than I expected before noticing.
A major side effect, which in a sense is caused by the seemingly minor latency effect, is that home row mods make accurate typing much harder. Because “normal” keys can now have “special” effects, and some keys do something different on release than press, one has to type in a different way than on a normal keyboard. On a normal keyboard, if I press ‘f’ then ‘g’ I can roll from one to the other and press ‘g’ while ‘f’ still hasn’t been released – ‘fg’ will be sent to the computer. With home row mods, this ends up sending ‘G’.
With practise, one gets better at not accidentally triggering home row mods, but the timing effects make the enterprise painful. I started off putting all of them on the home row (i.e. the ASDF keys), but quickly took online advice to put Shift on its own normal, separate key. Then I moved Ctrl and Alt to the top row E and R keys, which is still a comfortable reach, but since I use those keys less often (in the Maltron layout they are Y and C respectively) it reduced the accidental triggers. But, even after some practise, I still encountered a frustrating number of accidental triggers, particularly when programming.
I should have realised that the advice to put Shift on its own key was an admission of home row mods fundamental weakness (and I do not believe those who say that home row mods encourage “better” typing). I ended up feeling that if you’re on a normal keyboard – where reducing stretching is vital – the consequences might be a price worth paying… But I had access to a keyboard where I could access all these modifiers without stretching anyway.
Summary
The Glove80 is a good keyboard. If you’re coming from a traditional keyboard, I feel confident saying that it will be a significant improvement in ergonomics. For as long as we need to type a lot7, ergonomics matter. Personally, I don’t find switching to new, or between, different keyboard layouts to be hugely difficult, and I think many more people would benefit from giving it a go.
Having looked at photos of a number of split keyboards online, I am struck by how only Kinesis have a thumbpad that looks like it comes close to the good points of the Maltron. Perhaps, like me, keyboard designers didn’t realise how much clever thumbpad design can improve ergonomics? I only truly became aware of their benefits when I lost comfortable access to 4 keys on each hand!
So, I’m glad I tried, but I’m glad – and my hands, which had started to experience mild pain for the first time in a decade – to return to the Maltron. It’s not aesthetically pleasing, I use only 3 of the 32 keys in the middle (!), it flexes in ways that are a bit odd, and the keys are too noisy — but by having a superior thumb pad, it is simply the better keyboard for me. Perhaps the next generation of split keyboards (whether from MoErgo or others) will fully integrate the lessons of the Maltron’s thumb pad. Until then… I probably need a new Maltron.
Footnotes
There is a small, but vibrant, community of keyboard hobbyists. As far as I can tell, their main focus tends to be on key switches: that is, the spring (or similar mechanism) and housing that allows downwards movement when you press and forces the key back up when you release. A lot of people focus on the feel of the switch.
Personally, having tried a whole load of switches, I find that the differences between them tend to to be mostly unnoticable once I’m focussing on the task at hand. About the only thing I’ve realised I care about is how loud the switches sound, purely because I think loud keyboards can be disruptive to those around me.
There is a small, but vibrant, community of keyboard hobbyists. As far as I can tell, their main focus tends to be on key switches: that is, the spring (or similar mechanism) and housing that allows downwards movement when you press and forces the key back up when you release. A lot of people focus on the feel of the switch.
Personally, having tried a whole load of switches, I find that the differences between them tend to to be mostly unnoticable once I’m focussing on the task at hand. About the only thing I’ve realised I care about is how loud the switches sound, purely because I think loud keyboards can be disruptive to those around me.
I’m not sure if there’s a standard term for this or not.
I’m not sure if there’s a standard term for this or not.
A non-scientific measurement suggests the difference in my thumb position between the two keyboards is about 1cm.
A non-scientific measurement suggests the difference in my thumb position between the two keyboards is about 1cm.
Measuring this is quite tricky because of the curvature of both keyboards. Taking a photo of me measuring this is even harder. Don’t expect miracles.
Measuring this is quite tricky because of the curvature of both keyboards. Taking a photo of me measuring this is even harder. Don’t expect miracles.
As someone who’s done a bit of programming language design in my time, I rate ZMK’s syntax as on a par with YAML. Both are, for my pea brain, inexplicably complex, but the complexity doesn’t lead to obvious aesthetic benefits.
As someone who’s done a bit of programming language design in my time, I rate ZMK’s syntax as on a par with YAML. Both are, for my pea brain, inexplicably complex, but the complexity doesn’t lead to obvious aesthetic benefits.
I couldn’t explain this until a colleague pointed out that match
statements and function return types in Rust use ‘>
’ in their syntax!
I couldn’t explain this until a colleague pointed out that match
statements and function return types in Rust use ‘>
’ in their syntax!
Speech to text has, in the last couple of years, become very good. I’m not sure that I would know how to use it for programming, though.
Speech to text has, in the last couple of years, become very good. I’m not sure that I would know how to use it for programming, though.