Twenty Months With Colemak
Tags: colemak, keyboard, productivity, lifestyle
Published: 2019-04-19 08:51:23

---
title: Twenty Months With Colemak
published: true
description: Time truly flies. It has been 20 months since I switched from QWERTY to Colemak keyboard layout. Am I now able to type on the Colemak keyboard as fast as the time flies?...
tags: colemak, keyboard, productivity, lifestyle
---

<img src="https://cdn-images-1.medium.com/max/1000/1*hcY3Bk8YY_1keCJW_b70Vw.jpeg"/>

Time truly flies. It has been 20 months since [I switched from QWERTY to Colemak keyboard layout](https://dev.to/kevcui/why-i-switch-to-colemak-keyboard-layout-24h4). Am I now able to type on the Colemak keyboard as fast as the time flies? Certainly not. My typing speed 20 months ago was 75 WPM on average with QWERTY, now it's 85 WPM on average with Colemak. I can feel the improvement and that's why I never look back to QWERTY again.

Besides things mentioned in [One Week with Colemak](https://dev.to/kevcui/one-week-with-colemak-489k), are there somethings special happened during these 20 months?

### Remap Caps Lock as...?

Caps Lock key is a huge waste on the standard keyboard. It locates in such important position but with less functional benefit. Some remap it as Escape key; some remap it as BackSpace key...

My favorite remapping solution is: Press Caps Lock once, it sends "Escape" key event; Hold Caps Lock, it sends "Control" key event. So, one Caps Lock key can act as Escape and Control combined together.

#### How to achieve this key binding on Linux?

- Act as **Control** when press and hold: HHKB keyboard by default puts Control key on the usual Caps Lock position, which is great for me, so no tweak is needed. For other keyboards, I usually use `xmodmap` to map Caps Lock key as Left Control key.

- Act as **Escape** when single press: [xcape](https://github.com/alols/xcape) can configure one key to act as other key when pressed and released:

```
xcape -t 300 -e 'Control_L=Escape'
```

#### How to achieve this key binding on macOS?

[Karabiner](https://github.com/tekezo/Karabiner-Elements) is a great tool to archive the same key binding conception on macOS. Karabiner supports customized json configuration file. Here is [my configuration file](https://github.com/KevCui/dotfiles/blob/master/karabiner/capslock.json).

```
...
"from": {
    "key_code": "caps_lock",
    "modifiers": {
        "optional": [ "any" ]
    }
},
"to": [{
    "key_code": "right_control"
}],
"to_if_alone": [{
    "key_code": "escape"
}],
...
```

### Some small troubles in the real world

When you use some uncommon tools in the real world, you know you have to prepare some small troubles that may come to you every day:

- QWERTY is literally everywhere: Accept the reality and enforce the muscle memory of QWERTY layout as well. Otherwise, like me, I'm extremely clumsy when typing on QWERTY.

- Pair programming or testing on my machine: Remember to switch keyboard and key binding settings on the fly, depending on the person.

- "This guy is a weirdo.": So what?

---

Overall, I'm super happy with Colemak for now. I have no plan to learn another keyboard layout. I guess I will stick with Colemak for years. Maybe after some years, I'll write another recap post about Colemak. I shall call it "Twenty Years With Colemak". :wink: