Aku Kotkavuo

@eagleflo

Portrait

I am a software generalist from Helsinki, Finland. I’ve been working with software for most of my life. I practise writing about related topics here.

My open source projects include mpyq and jisho.


Keyboard layout (2026)

23rd June 2026

This is an updated version of my earlier [Keyboard layout][op] post.

Here is one very quick suggestion for all fellow Finnish programmers: change your keyboard layout. The default keyboard layout for Finnish is absolutely terrible for programming.

Adjusting your keyboard layout is not hard, and it will make a difference in your day-to-day programming activities, especially if you're using Apple's computers, where the braces are behind two modifier keys. No amount of apologism will make up for that.

Customizing your tools to fit you better is something we all should constantly strive for, but even most professional programmers I've worked with use the system default keyboard layout. The few who have changed their layouts have switched to the US layout completely, but that's a little extreme for me: I don't like the idea of putting ä and ö behind modifiers. What I do envy is the placement of brackets and braces, conveniently on the side. Standard Finnish keyboard layout maps å and diaeresis ¨ to those valuable keys!

I suggest a hybrid between the Finnish and US keyboard layouts, with Finnish keyboard layout acting as the basis for these modifications:

  • å → [
  • Å → {
  • ¨ → ]
  • ^ → }
  • AltGr + ^ → ^
  • AltGr + o → å
  • AltGr + O → Å
  • AltGr + u → ü
  • AltGr + U → Ü

While at it, I changed tilde and circumflex from dead keys to live ones, since practically every time I type those characters I just want that character.

With these tiny modifications, you get the greatest benefits of using US keyboard layout without the downsides. I've now been using this for a few decades on all my computers; it took no time at all to get used to and comfortable with.

Using Qwerty is terrible for typing in general, but learning a whole new layout like Dvorak or Colemak is a much bigger proposition than switching a few keys around on the layout you already know.

Let's see how to do it on Linux! You can create your own xkb configuration files on top of the system-provided ones. They get picked up from $XDG_CONFIG_HOME/xkb (or ~/.config/xkb/ for most people).

I created ~/.config/xkb/symbols/fi with the following additional config:

partial alphanumeric_keys
xkb_symbols "programmer" {
    include "fi(fi)"
    name[Group1]="Finnish (programmer)";

    key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
    key <AD09> { [ o, O, aring, Aring ] };
    key <AD11> { [ bracketleft, braceleft, oe, OE ] };
    key <AD12> { [ bracketright, braceright, asciitilde, asciicircum ] };
};

Testing that everything's OK:

xkbcli compile-keymap --layout fi --variant programmer >/dev/null && echo OK

Finally, adding this variant to ~/.config/xkb/rules/evdev.xml to make GUI tooling discover the variant:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
<xkbConfigRegistry version="1.1">
  <layoutList>
    <layout>
      <configItem>
        <name>fi</name>
      </configItem>
      <variantList>
        <variant>
          <configItem>
            <name>programmer</name>
            <shortDescription>fi</shortDescription>
            <description>Finnish (programmer)</description>
          </configItem>
        </variant>
      </variantList>
    </layout>
  </layoutList>
</xkbConfigRegistry>

For macOS, refer to the original post -- nothing has changed.