Make CapsLock useful (again) on Linux and Windows


TL;DR: Use this repository to remap the CapsLock key and move your hands around the keyboard more effectively.

Once upon a time a post by Nikitonsky has inspired me to organize the hand movement on a keyboard by utilizing a CapsLock key. The idea is to use arrow keys without moving your hands from a default position, remapping the arrows to CapsLock + j/l/i/k. It’s been more than a year since I’ve tried that, and while I didn’t completely internalize this new layout (it’s hard to break habits!), it definitely has improved my typing experience.

Nikita provides an excellent motivation for this endeavor in his blog post, so I won’t repeat it here. I’ll just describe a few additional changes made to this layout since I started using it:

  • Added home/end, page up/page down mappings to caps lock + a/d/w/s: the idea here is exactly the same as with the arrow keys. The left hand gets to do a bit more work, but the right hand doesn’t have to move. It also gives a nice mental picture of the right hand making “small” cursor movements, and the left hand making cursor jump farther.
  • Assigned volume management hotkeys to caps lock + [ and caps lock + ]. It makes sense for me even on a “multimedia” keyboard, as they all have somewhat unique layout, and I don’t want to learn it (nor grab the mouse) just to change the volume.

I also tried adding a few other CapsLock-based hotkeys to my routine, but they didn’t stick. I guess it’s important to keep the layout simpler, as it already takes quite some time to get used to.

There’s no single cross-platform tool for implementing all those changes, so I maintain 2 sets of configurations for AutoHotkey on Windows (which I use at home) and Autokey on Linux. These tools do have some slight differences in how they interpet the mappings, but the overall feel is the same.

The installation instructions and configuration for the tools on both platforms is here. If you have any suggestions, go ahead and leave a comment, create an issue, or make a pull request.

comments powered by Disqus