Alternative keyboard layouts for Slovak

This post sums up my experience with looking for, evaluating, and moving to an alternative layout for a Slovak user. I haven't found anything on this topic specifically, so perhaps it'll be useful to someone else googling.
There will be a more detailed/explanatory version of this post on the Slovak blog. This post assumes you know that "QWERTY layout" refers to the standard keyboard layout most of us grew up with.

If you maybe want to improve your typing experience for ergonomics and comfort, but this entire layout thing seems like too much, maybe try this post instead:

Learning Keyboards
I wanted an ergonomic keyboard for years. Eventually it started to look like I can’t choose one with any degree of confidence without learning something about them first. In this post I’m summing up my adventure, what I learned on the way, and some of the things I wish I knew when I started. 😊

If you just want a refresher on layouts and why change them, try this video:

I'll also show the transitional layouts that let me switch layouts without having to waste time learning the new layout instead of doing something productive.

Considerations

For me, this is about comfort, not typing speed. I spend a lot of time using a keyboard, so it matters to me. From what I've seen, the layout doesn't impact the maximum possible speed much. I liked the design ideas behind COLEMAK Mod-DH. It places the most frequently used letters on the home row, i.e., under the default positions of your fingers. It also considers things like bigram frequency - that is, letters often pressed one after another are close together on the keyboard.

Let's also mention some of the questions I won't be considering at all:

  • I don't care about software support. I can just reprogram my keyboard and the computer won't even know anything changed. That makes the question of whether someone wrote support for my chosen layout for Windows or Android completely moot. (For more info on this topic, look here.)
  • I don't much care about standards or user bases. I have never ever actually met anyone insane adventurous enough to try anything even close to this. So whatever I go with, I will have 0 people to compare with.
  • I don't want to create a Zblesk™ Layout™ from scratch. Taking everything into consideration and doing it properly would take an insane amount of time, which I won't spare. So I might as well just take someone else's work, if I find something suitable.

Back to the topic at hand. The "issue" with COLEMAK and other layouts is - they're designed for writing English. The letter and bigram frequency is completely different for Slovak.

There are various corpora for SK, made available by the national linguistic institute - but they don't even have a letter bigram dataset. (I've asked. They only have word bigram freqs.)

I could compute those manually. Should be easy. But then I realized it probably wouldn't be that useful - since I often write both in English and Slovak. For me, the frequencies would be mixed. What to do?

Choosing a layout - the pragmatic way

I realized - hey, why not just use real, actual data? I use the Moonlander keyboard, and its software has a Heatmap feature. I can just run that for a few days, and make a call based on what the actual heatmap looks like.

I do realize there are a few drawbacks: things like bigrams won't be taken into account, and since I use layers heavily, the data will not represent just pure presses of alphabet keys. But I think those will be negligible. And hey - my (and yours, probably) current QWERTY layout was made with ZERO consideration of ANY of those things! So it probably won't be worse, right?

My heatmap looked like this, with the 10 most frequently pressed keys highlighted:

Heatmap of QWERTY

There's a lot of room for improvement: the most frequently used letters are all over the place, and 3 keys on the home row (in the purple rectangle) are under-utilized.

My Big Brain Scheme for evaluating layouts was: taking the above picture, and moving the keys around in Paint.NET until they matched a different layout. I can then see what writing that same text would have looked like if I were to use it!

Colemak Mod-DH

So this is what it looks like with Colemak-DH:

Keys moved to match Colemak Mod-DH

And I'm not convinced it's much better. Yes, there are improvements, but it could be better, especially on the home row.  Colemak also moves the letter V a little, which is a bit annoying, since I have that stamped onto my muscle memory because of shortcuts. So what else is there?

Savetier - We have a winner!

I've searched for Slovak on the Colemak forum. I've found a total of 3 posts that mentioned it (and 1 more where it was just a typo. 😀 ) The best I found SavetierX, which from now on I'll just call "Savetier". Its author says:

A transformed Colemak xkb-layout, for central European languages

From the alternative keyboard layouts my favourite is Colemak. However, it  has its flaws for central and eastern European languages which I intent  to fix with the SavetierX layout. This layout is very suitable for  polyglots, linguists, language enthusiasts, Slavs, Slavists, Magyars,  Romanians, and many more! SavetierX is a compromise between usability,  adaptability, ergonomy, and comfort.

I've given it the same treatment, and voila:

Keys moved to match Colemak Savetier

All my most frequently used keys now are on the home row. I guess it maybe could still have been a bit better - the 9th and 10th most frequently used keys (J and K) need a lateral finger extension. But during a discussion with DreymaR on the Colemak forum I realized that it might not matter that much. It'll still be an improvement, especially since speed is not my primary concern. I'm not using the keyboard just for writing text, but also controlling applications with shortcuts, etc.

And if I find it to be annoying or sub-optimal later, I can always swap them around. If I learn the whole layout, what are a couple more changes, right?

The fact that many keys - Q, W, A, S, D, Z, X, C, V, H - stay in place also helps.

Transitions - how to learn this without going insane?

All that is well and good, but I still couldn't fathom making the jump: it would mean not being able to write for a considerable period. I can't afford to just buckle down for a week or two and train with a new layout. (And wouldn't want to, even if I could.) Yet that seems to be what many proponents of COLEMAK were doing. So this has been mostly a thought experiment for me.

That was until I read about TARMAK in a post by Erez Zukerman on the ZSA blog (which is one of maybe 2 corpo blogs actually worth following). Like most great ideas, it's so simple it seems obvious in retrospect: Why not do it in increments?

TARMAK defines a succession of 5 layouts that start from QWERTY and always change a few letters. Most of your keyboard is unchanged. You take as much time as you need to learn to live with it - Erez mentions perhaps a month. Then you do the next set of changes. When you get to layout 5, bam, you're on COLEMAK.

Image from DreymaR's Big Bag of Keyboard Tricks and the Colemak forum

So that's the way to go - even though it's obviously not built for Savetier. No matter!

Transitional layouts

I printed out QWERTY and Savetier layouts, then drew arrows to see what needed to move where. I noticed 2 things:

  • I - L - U just swap around in a circle
  • Only 2 letters move from one side of the keyboard to the other. I can use those to split the changes into 2 sets, one per side. (This is especially easy to see since I'm using a split keyboard.)

So the way forward presented itself. I decided to do it in 3 steps.

Layout 1 - The ILU loop

I, L, and U move to their final position. I and U are both used often and are easy to remember.

The original TARMAK also has this loop, but places it as the last step. I wanted to do it this way as an escape hatch: If I find even this to be too much to learn, I can abort the entire endeavor. That did not happen, though.

Transitional layout 1

Layout 2 - The right side

E moves from the right half to the left, on the home row. The only inefficiency of the process comes into play: K moves from left to right, only to be moved back left again in the next phase.

Transitional layout 2

Layout 3 - The left side

All letters are now in place. From now on, the left pinky will have a lot more to do.

Final Savetier

I was a little worried - won't the pinky complain, since it barely had to move until now? But it didn't.

Was it worth it?

Let's see. This is a heatmap from today, that also includes writing this post.

Today's heatmap, using Savetier

The difference is clearly obvious: the most frequently used keys are on the home row now. And it really does feel better to type this way.

Sometimes my brain keeps insisting that this is weird - fingers already know where to move, but on some level, it registers that hey, usually when we're doing this, there's much more movement - this is suspicious. A few times it threw me off totally. 😂 But that phase passed quite quickly.

How long did it take?

Less than I expected! The ZSA blog mentioned maybe a month per layer, and the original TARMAK had 5 layers. Turns out I'm too impatient for that. As soon as I typed semi-competently, without constant errors, I just went for the next one, yolo. It took me about 3 weeks to get to the final layer. That was 2.5 weeks ago.

So after some 6 weeks, I'm at a point where I can type comfortably. I'm not totally at my previous speed, and I do make more errors - but it went way smoother than expected.

But, importantly, I didn't do any dedicated training. I simply swapped the keys.
The first day, I had to look at my keyboard often.
The second day, much less.
The third day was always significantly better and after that, it was more or less smooth sailing.
I could work normally.

It's worth stressing that I'm not a writer. Writing speed definitely suffered in the process, it just wasn't an issue for me specifically. If I had to churn out prose, I might have been much more impeded, and taken a lot longer on each phase. But I'm a programmer and it wasn't a problem.

What about gaming?

The keen-eyed gamers among you may have noticed that a different layout might suck for controlling games, which are usually based on the geometry of the keyboard. 'E' is used for interactions because it's close to WSAD, not because E is somehow good for that.

And while WSAD is in the same place in SAVETIER as they were in QWERTY, it doesn't matter. Because of all of the mod keys I use, it didn't work great for games anyway. So I've created a dedicated gaming layer that had none of those issues, and some extra tweaks, a long time ago.

I simply left this layer as it was. So any gaming I might do will still happen on QWERTY. (I guess I could remap games to my new layout, but why bother?)

This is the gaming layer.

What about your poor wife?!

Well, yes. I suspect next time she tries using my PC, it'll probably be easiest to pull out a cheap keyboard from the wardrobe and let her use that. 😀

What about you, Dear Reader?

If you're also using an alternative layout for a Slavic language that uses the Latin alphabet (such as Czech or Polish) - what did you end up with? What do you use?

And this is what it looks like on my keyboard

(If you're using QWERTZ, DNI. 😡)

update: changed image attribution to DreymaR's Big Bag of Keyboard Tricks.