The Blog of Joshua Blais.

Colemak on the laptop and Kmonad

Cover Image for Colemak on the laptop and Kmonad
Joshua Blais
Joshua Blais

A little under two months ago, I started a different kind of journey to learning something new. I swapped out the tired old qwerty layout on my keyboard for Colemak (specifically Colemak-DH variant) in an attempt to have less finger fatigue and create more comfort when working.

On my Chocofi board, this was easy to configure, just hook up a github repo to Nick Coutsos keymap editor, and save your changes.

It was a little more difficult on my laptop. There is no default for the base Miryoku layout (laptops aren’t ortholinear), and the base DH variant with:

setxkbmap us -variant colemak-dh

on linux will swap the bottom row of keys (specifically the z,x,c,v,b keys) and this was not what I wanted.

So, I went with vanilla Colemak on the laptop.

The only thing was that the muscle memory was slightly different between the two layouts, and I was not getting faster as I should have been because I was technically learning two layouts instead of one.

I simply made an update to the

/usr/share/X11/xkb/symbols/us

file so that colemak would always reflect the miryoku layout that I use on my custom keyboard.

Now, there is no cognitive shift when I am working, and am already seeing gains in my typing speed as I am not trying to learn two layouts.

This will probably not help anyone at all as it is so niche, but I figured I’d put it out there in case one person in the whole world was struggling to find a solution to a similar problem.

UPDATE: Kmonad

In my most recent video, I spoke about how I believe the chocofi to be the absolute endgame when it comes to next-gen keyboards.

I mentioned how I haven’t yet created a Kmonad configuration, but that is now a foregone conclusion.

And, quite frankly, this is a phenomenal piece of software.

I previously was using setxkbmap to alter the way that my laptop keyboard worked, and created a custom colemak-dh layout so that I could get used to typing permanently in that layout. The thing is, I was missing out on Homerow mods, as well as the optimized setup I had created with the chocofi.

With Kmonad, I don’t believe that any of this is missing.

When out and about, I do bring my chocofi to many places, but on an airplane, there’s no room to do so, nor at some smaller outfits or when I’m out and about on busses/in transit/etc. The benefits of this software is that I now don’t need my custom board at all, I can simply load up my git repo with the kmonad config and I am set.

I can now leave it at home and use it on my desktop.

How to setup Kmonad:

This article is great to get you started and all that you’ll need

Taken directly from the article, install kmonad with whatever package manager you use, then:

# Add self to the input and uinput groups
sudo usermod -aG input $USER
sudo groupadd uinput
sudo usermod -aG uinput $USER

echo 'KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"' | sudo tee /etc/udev/rules.d/90-uinput.rules

# This seems to be needed because uinput isn't compiled as a loadable module these days.
# See https://github.com/chrippa/ds4drv/issues/93#issuecomment-265300511
echo uinput | sudo tee /etc/modules-load.d/uinput.conf

Reboot your laptop after this.

If you have a thinkpad you can clone my repo at the bottom of this article into:

.config/kmonad

and run

sudo kmonad .config/kmonad/config.kbd

to get you laptop setup and running with this powerful piece of software

A couple cool things you can do with kmonad:

Homerow mods

The greatest benefit of using a 36 key keyboard is that you never leave the homerow, and homerow mods facilitate this so your homerow becomes all of your modifier keys. Kmonad supports this and you will see it in my configuration.

Number and symbol layer

To mirror my chocofi layout, I have setup the numbers under my right hand and the programming symbols under my left. No new muscle memory is needed, I now have the same keys everywhere.

Navigation

I also have the qwerty default h-j-k-l keys set to my arrow keys so that I need not move off the homerow, and under that, my setup for escape sequence of k-j is right there for easy escapes in vim. Left shift now triggers this nav layer as I am using the index finger on each hand as my shift.

Note: I have unfortunately killed my ability to use a conventional keyboard

The most hilarious thing is that I can now type well over 80 words per minute on an alternate keyboard layout, but my qwerty use has suffered to the point that I can’t type without looking at the keyboard in qwerty.

However, the beauty of kmonad is that it is cross platform and you can bring your config to windows and (if I will ever return to such operating systems again.)

You can see all my layers in my github repo here.

Subscribe for updates direct to your inbox.