Skip to main content

Remapping Caps Lock on a Keychron keyboard

·2 mins

I’ve been using 60%-75% mechanical keyboards for the past 10 years, remapping some of their keys according to my needs.

The one remapping that I’ll always have across all devices (including my laptop’s built-in keyboard) is the one reconfiguring Caps Lock to function as Left Control when held, or Escape when tapped. The two main reasons are that Escape is frequently used in modal typing (I can’t do any serious typing without modal typing anymore) and that I find it more ergonomic to have Control on the home row, so that my hands don’t need to leave it.

In the past I’ve always done this remapping at the operating system level using the excellent karabiner-elements, adding a Complex Modification aptly called “Change caps_lock to control if pressed with other keys, to escape if pressed alone” for all devices.

I have recently bought a Keychron Q1 Pro 75% keyboard and that opened up the opportunity of making the same remapping at the firmware level instead: this keyboard uses the QMK open source firmware, which provides a mod-tap feature described as follows:

The Mod-Tap key MT(mod, kc) acts like a modifier when held, and a regular keycode when tapped. In other words, you can have a key that sends Escape when you tap it, but functions as a Control or Shift key when you hold it down.

That’s exactly what I needed, so I have then looked up the required modifier/key codes and found the right combination for my use case, which is:

MT(MOD_LCTL,KC_ESC)

Now, for the actual remapping: the keyboard is fully configurable using the via.app web app (alas using Chrome, since it’s the only supported browser at the moment).

I browsed there and authorized it to connect to my device. I clicked on the Caps Lock button, navigated to Special in the bottom left side menu, and selected Any from the list. Finally, I typed the key combination mentioned above and saved the configuration.

To sum it up, I have now a hybrid configuration: when I’m typing on my Keychron, I rely on its firmware configuration; when I’m typing on my laptop’s built-in keyboard, I rely on karabiner-elements.