I have been using QMK for my own keyboards since around 2018. Back when I first started using it, I chose a user-made keymap that I found in the official QMK firmware repository. While it wasn’t perfect, it at least got one thing right; it placed the different types of brackets under the stronger fingers. A few months later I built my own layout around this concept, and I have been using variations of this layout ever since. At the time of writing this post, I use it on both my OLKB Planck (Rev. 7), my Ergodox EZ, and my Corne. The following is the layout rendered for the OLKB Planck:

This post aims to (very briefly) explain why the layout looks the way it does, and what tradeoffs I have made throughout the years of using it.

Background#

For daily use, I prefer the US keyboard layout. Since I’m from Denmark, however, I specifically use the US-International layout in order to have æ, ø, and å readily available. This combination affects some of the shown keymap decisions, as I want fast access to symbols and composition behavior while also accommodating software development without awkward reaches.

Design Goals#

The goals for this layout are simple:

  • keep the base layer clean for writing and normal terminal usage,
  • make coding symbols easy to hit without leaving the home row too much,
  • reduce finger travel on a smaller board while keeping the layout coherent.

The overall goal is to eliminate the keyboard as a bottlenect when writing, programming, and using the terminal.

Layer Strategy#

I use a small set of layers with clear purposes in mind:

  • base for normal typing.
  • lower for symbols and various utility keys.
  • raise for (shifted) numbers and function keys.
  • vim for directional movement directly on the home row.
  • fn for additional utilities and numpad functionality.

The main philosophy is to keep frequent keys close to the home row, and to keep ubiquitous symbols under the stronger fingers.

Dual-Role Keys#

Keys written with / have two roles:

  • tap = first function,
  • hold = second function.

Examples:

  • esc/ctrl
  • f/vim

This, again, keeps the fingers closer to the home row, and further allows for more functionality in a single layer on a small keyboard.

Consistency Across Boards#

The exact physical layout differs between my Planck, Corne, and Ergodox, but my fundamental QMK layout stays the same. For instance, here is the same layout adapted for my Corne MX:

Source#

You can find the keymap source for my Planck, Corne, and Ergodox EZ in this fork, specifically in [keyboard]/keymaps/vadgaard/ where[keyboard] is either keyboards/planck, keyboards/crkbd, or keyboards/ergodox_ez.

you've reached the end of the post
sayounara ~ (^▽^)