The main keyboard I use is an Anne Pro, and a Poker3, they are very similar, 60% keyboards. I felt like the move from a full sized, to a 60% keyboard had some small benefits, like I have to move my hands less when reaching for the mouse, and it's much nicer to type on a mechanical keyboard than a rubberdome one. Also the keycaps are just really gorgeous to look at.

40% keyboards

I had this (slightly wrong) idea in my mind that smaller keyboard = less hand movement = faster typing = more productivity, so I figured I should try using a 40% board, to see if I can juice out a bit more productivity. When people talk about 40% boards, they usually mean something like the Planck (see picture), but not me, no, I had to complicate this further. The two 40% boards that I have been using, are called a LetsSplit, and a Lily58. They are split, orthogonal keyboards.

I wrote a bit about the Let's Split I assembled a while ago, but I ended up looking for something else after a short while, because I quickly determined that it's really not as ergonomic as it advertises itself. It still looks nice as a niche keyboard on my shelf, but that's about it. I have been using the Lily58 for about 9 months now, but I'd say the first 2 was basically spent trying to come up with a satisfying layout.

Not enough keys for non-English layouts

One thing complicates things for me is that I use three languages daily, English, Hungarian, and Norwegian, with the latter two having their own unique letters (Hungarian has 9, not found on an English layout, Norwegian has 3). I also work as a programmer, so having access to all the symbols is a must. This was the first problem I encountered on a 40% board.

Both the full sized, and the 60% keyboards have enough physical keys for all the Hungarian letters, but not the 40% ones, they are missing 1 key on the top row before the backspace, 2 keys on the second row after te P, and 1 key on the 3rd row, after the L, and one key before the Z on the last 4th row. The only solution is to put the remaining letters on different layers (a layer can be activated by holding another button, similar to ALT/CTRL/Shift, but instead of acting as a modifier, it changes all the keys), and while this idea sounded great in theory, this only works for rarely used keys. You really don't want to put letters/symbols that you use frequently on a non-default layer, because it will be slow, irritating, and it will break your flow when typing.

So if you use any language that needs more characters than the English alphabet, you will have to figure out where to put the extra keys.

What I ended up doing is, I set X to use the Hungarian layout (I have been always using it like that), because only that has the Hungarian letters1, and use Norwegian as the secondary layout, which means I can set a key to "Mode Switch" on my keyboard, which, when held down, would switch the OS layout to Norwegian, allowing me to type those 3 letters. In case you are wondering, I use setxkbmap for this, like:

setxkbmap -layout hu,no -option grp:caps_switch

This means that Caps Lock acts as Mode Switch. Complicated, yeah, I know.

Colemak

Looking back in hindsight, this was probably a bad idea, but I also decided that this is still not hard enough yet, I need to make this harder. I read a bit about various alternative layouts, like workman, dvorak, and colemak. Did you know that qwerty is the worst possible layout you can use from an ergonomic perspective? Apparently, it was designed with typewriters in mind, so its main objective is to move the most frequently used keys as far apart from each other as possible, to avoid jamming the typewriter. This is of course the opposite of what you want when typing on a keyboard, you want the most frequently used keys on the home row, so that they are easily accessible.

I don't remember the exact reasons why, but I ended up using colemak-dh. Relearning the layout was not as hard as expected, and I have to say, this is actually the most relaxing part of using this keyboard, when I'm typing flowing text, it feels really nice that all the most used keys are on the home row.

On my "normal" sized keyboards, I type around 120WPM, on the Lily58 I can manage maybe 60WPM on a good day. I started out with keybr.com to learn colemak, but I very quickly realized that typing characters from the screen is very different than typing down your thoughts, it's like the two things use slightly different neural pathways, because even after I managed to type fairly well on keybr, I was still struggling to reply to IM messages.

The layout

I don't remember where or how, but I found a github page, describing a layout called the Miryoku, and I have used this as my starting point. I had to tweak it a bit, to support my 3 language + symbols requirement, and I ended up needing a whopping 8 layers, to fit everything. The layout I'm using right now looks like this:

The red background keys are called "tap-hold" keys. They do one thing if I tap it, and do something else when I hold it. For example, on the default layer, I have "HUN F", on the 2nd row, 4th column. This means that if I press this key, I get an "F", but if I hold it, it transforms the right side of the keyboard into what you see on the layer called "Hungarian", so if I held "HUN F", and pressed the key where "L" is on the right side, I would get "á". The same logic goes for the alt/control/shift modifiers. Each key that is empty/transparent does nothing. There is still a few empty keys that I'm not using, which might seem strange, since I was just complaining about not having keys, but these keys are so ergonomically out of reach, that I just opted not using them at all.

  • The default layer is what the keyboard operates in, with no modifiers present
  • The numbers layer acts as a numpad, I usually use this, instead of the top row of the default layer
  • Navigation has the keys that are usually found above the arrow keys on regular keyboards
  • Mouse lets me move and click the mouse
  • Hungarian layer has the unique Hungarian characters
  • Symbols 1 & 2 is for programming mostly
  • Function has the function keys

Not pictured is the Norwegian layer, because it's not a real layer. If I hold down CAPS LOCK (which I forgot to put on the images, and now I can't be bothered), it turns the Hungarian éáű into øåæ.

The main idea is that for every key that switches layers, it should be switching the layer on the other half, to make it more ergonomic to use.

In case you are wondering, the firmware that the keyboard runs is called QMK, and it allows much more customization than what you see here. QMK was the main inspiration for me to go down this rabbit hole.

Where am I now, after ~9 months

It is still extremely annoying to type on this keyboard for a longer time, even after using it almost exclusively for many months.

I found out that there are actually three different ways I'm typing:

  1. Copying text I see on the screen, like typing tutor games. As you can imagine, the only place this comes useful is typing games.
  2. Typing down my own thoughts, like writing articles, or replying to IMs
  3. Using shortcuts, like closing windows, scrolling a page, changing the currently focused window

The first one is not really relevant, the second one is manageble, but the third is straight out of the "how to torture nerds" cookbook. Have you ever had to edit code through a remote SSH session, on a shitty network, so every keystroke was lagging? Like you type down a sentence, but you know you have made a typo, but you don't know where, and you can't start backspacing over it, because the terminal is still updating midsentence, so you have to wait for all the characters to show up first. Imagine that level of frustration, but for typing.

The culmination of using the colemak layout, the fewer amount of keys, the heavy chording, and the orthogonal layout, made using this keyboard one of the most frustrating experiences of my life. Typing flowing text in English, like this article is okay. Typing in Hungarian, which has 9 vowels on a different layer, is uncomfortable. Typing code, with the extra symbols on different layers gets annoying very quick. Using keyboard shortcuts, like "move this window to workspace 5", or "open a new app in a vertical split", or "delete the next 3 words in vim" sends me into a "I'm just going to chuck this out the window" rage very quick.

I had to make several modifications to my dotfiles, because colemak has hjkl (the main navigation keys in vim, and many other unixy programs) on a very different place than qwerty, and remapping those to the colemak equivalent (neio) means you have remap those neio keys now somewhere else. I started doing this, but then eventually I started thinking whether this is really worth it, and whether is this going to cause problems later on, when I have to use a qwerty keyboard.

Closing thoughts

I haven't given up yet, I'm still trying to get used to it, but it feels like I have hit a "is this really worth it?" wall. Programming, and general tasks seem so much harder at the moment, while typing text, and strictly just that, feels much nicer. Maybe I will end up using it only for typing text, but right now using it for professional work (programming 8 hours a day) gives me such mental stress that I can only do it for short bursts (albeit, it is improving).

I have seen so many posts on /r/mechanicalkeyboards, that it never occured to me that using these keyboards can be so cumbersome. I'm not blaming anyone, I'm just suprised. I wonder how many people end up giving up on the keyboard after finding out how different it is to use them.

  1. I know that there is also the various -dead-keys variants, I briefly tried those, and hated it.