Modified Colemak Layout

Published:

2024-31-8

Status:

Ongoing

I’m passionate about creating efficient workflows. After several interations, I've found a layout that really works for me. It not named, should it?. The results are incredible, and I believe it's worth exploring if you're into optimizing your keyboard setup.

The biggest disadvantage of a fully custom keyboard layout was that it made my computers unusable for colleagues and friends. But I found a solution by mapping the layout at the keyboard level. A new world of programmable keyboards.

Programmable Keyboards

Nuphy Air75 Keyboard

A new problem arose using laptop keyboards became tricky (unless i install the remapping software i created). However, this is a tradeoff I'm willing to accept since I always carry my keyboard with me. Plus i can now use other people computers provided the are on qwerty keyboard, using my sweet sweet Nuphy Air75 keyboard.

I think this is a super big win. I can now type anywhere (I mean this literally): Linux login terminals, Android TV, Sumsung Dex, and Windows login terminals. It was incredibly challenging to get my remapping software to work in these environments. Honestly, creating custom remapping software for my phone and Android TV felt like a deep rabbit hole, especially compared to just spending a few dollars on a programmable keyboard.

Current Layout

Disclaimer: The ideas shared here are not my original creation. I’ve adopted a layout designed by a programmer who was already well ahead in this journey. While I’ve made a few tweaks, the core layout remains his work. For more details, see the original discussion here.

With that said, I'll explain how to set up this layout on a NuPhy keyboard using the VIA software remapping tool. A more advanced task is to compile the QMK firmware directly for the NuPhy keyboard.

To-Do: "Compile NuPhy Air75 Keyboard source code with the keyboard as default."

Colemak Wide Mod

The wide mod introduce greater separtion between the left and right hands by moving all keys on the right-hand side of the keyboard one space to right.

Colemak Wide Mod Layout

The benefits of this mod are:

  • Helps you achieve a more comfortable posture. Reduces the tendency to be "hunched over" the keyboard due to the compact nature of most keyboards.
  • Easier to reach commonplace keys on the far right-hand side, such as Backspace/Delete and Return/Enter.
  • Reduced usage of weak, right pinky finger.
  • The Right Alt (or AltGr) key also becomes even easier to use as right-thumb modifier key. If you are not already using this key for accented characters/symbols, you may want to consider bringing it into use for

Still Colemak?

I’d like to say yes to wide-mode Colemak, but I’ve also remapped some keys and added more layers. I’ll dive into the details shortly.

Keyboard Layers

This layout uses 8 layers, which require 3 modifiers:

  1. Shift
  2. Level3 (often called AltGr)
  3. Level5
include "level3(lalt_switch)" // Left Alt
include "level5(ralt_switch)" // Right Alt

Level5 is less known but very useful, letting you add up to 200 extra characters.

Understanding the 8 Layers

Here’s how the 8 layers work:

  1. No modifiers
  2. Shift
  3. Level3
  4. Level3 + Shift
  5. Level5
  6. Level5 + Shift
  7. Level5 + Level3
  8. Level5 + Level3 + Shift

Numbers

Inputting Numbers

Numbers are on Layer3. As a rule, I avoid using numbers too often in programming—see Magic Number (Programming) for why.

  • 1230 are the most common numbers and sit on the home row.
  • The right-hand number pad has easy access to -+.,#%$*/\;:=, which are key mathematical operators.

I find this layout much more intuitive, reducing the time I spend searching for keys by 10× compared to a standard layout.

Alternative Characters (With Modifier)

Level Characters

Less common characters are assigned to Level3 and Level5 with some logic behind it:

  • @ is like Q
  • & is like B
  • $ is like Z
  • × is like X
  • ~ is like W
  • ` is on C ("aCute")
  • | is on V ("Vertical pipe")
  • % is on M ("Modulus")
  • # is on H ("Hash")
  • < and > are easy to access for HTML
  • ^ is next to < and >
  • + and - are near the numbers, with - being the easiest to reach

Alternative Characters (No Modifier Required)

Non-Modifiable Keys

These are the most common programming characters:

  • ? and ! are in the corner since they often end sentences. Colemak is designed to place common sentence-ending letters on index and middle fingers, so putting these on the pinky improves movement.
  • [ and ] are easily accessible, mirroring ) and (. Regular Expressions use these a lot.
  • ) and ( are reversed, making it easier to roll your fingers from pinky to index.
  • " is easy to reach and mirrors '.
  • ' is opposite s, which is important for the 's bigram.
  • { and } are placed in harder-to-reach areas since editors often handle them automatically.
  • * and / are for the /* bigram and are common in Vim commands.
  • \ is in the far right corner, resembling Escape and working well with \t, \n, \r.
  • ;, :, and = are similar to Return, so they’re placed near the corners.
  • Prior and Next (Page Up and Page Down) are in the middle, ideal for ThinkPad keyboards. They’re great for scrolling through documents and offer flexibility for run configurations.
  • _ (underscore) works well for naming objects and pairs with m_ and s_. It’s placed to avoid the need for shifting.

Directional Keys

Moving Up, Down, Left, Right

Inspired by Vim:

  • Without the "Wide Angle Mod," reaching for Level5 can be uncomfortable.
  • This setup is excellent for editing regular documents.

Letters

Alphabet

  • Shift + [A-Z]
  • Capslock and Enter are replaced by Shift.
  • Shifts are now Control.
  • This change makes Shifts 3× more comfortable and Controls 5× more comfortable.
  • I didn’t miss Capslock at all. It’s better as Shift than Backspace or Escape, as long as I have those keys on Level3 or Level5.

Return

Using the Return Key

  • Return is on o because in Vim, it works like Enter.
  • It might cause issues in games that don’t detect it, but it’s rare.
  • It’s about 1.3× harder to use than the original position, but having Shift on the home row is worth it.

Functional Keys

Functional Keys Setup

Accessible via either modifier:

  • Backspace is on the left pinky, aligning with the direction of deletion.
  • Delete is on D, also aligning with the direction of deletion.
  • Escape feels best on the Ring Finger rather than the pinky.
  • End and Home are inspired by a Colemak Vim configuration:
    • Insert moves to the beginning of the line before editing.
    • Append is on T, moving in the opposite direction.

Here’s how often I use these keys:

  • Backspace: 10× more often than before (now on the Home Row)
  • Delete: 20× more often
  • Escape: 15× more often
  • Home and End: 200× more often, especially when editing documents outside Vim.