Who needs caps lock anyway

I've been obsessing over my keyboard layout recently, stumbling upon typing.io and acquiring the awesome Das Keyboard 4 Ultimate. One thing I've noticed that kills my typing rhythm is using the arrow keys to navigate code; in particular, having to move my right hand from its "home" typing position and back again once I've finished (something that Vim artists don't suffer from).

In Windows, I had found an excellent utitlity called TouchCursor, it allows you to use the space bar as a modifier key and maps spacebar+i, spacebar+k, spacebar+j and spacebar+l to up, down, left and right (plus a whole bunch more). I couldn't find an equivalent utility for Linux after much searching, so set about hacking out a workable solution.

Ditching caps lock

The caps lock key is in a prime location and something that I very rarely use. It was a no-brainer to substitute it for something else after reading some blog post advocating this approach. This was thankfully straightforward in the Cinnamon Desktop Environment: Settings -> Keyboard -> Keyboard layouts -> Options -> Caps lock key behaviour gives you a list of possible substitutions for Caps lock, I opted for Make caps lock an additional hyper.

Mapping keys

Once I had a new 'hyper' modifier, I then needed to map key combinations to individual keys. This was sadly less straight forward than I had hoped. There seems to be no native method to do this, using the xmodmap utility only allows single keys to be mapped to other single keys as far as I could make out.

My solution involved installing a utility called AutoKey. This utility allows you to define phrases that can be triggered by an arbitrary key combination. A phrase could be some lorem ipsum text, or, as wanted for our example, one or more special keys (such as modifiers and arrow keys). To map CapsLock+J to the left arrow key for example, I created a phrase with the content <left> and gave it a hotkey combination of <hyper>+j.

I now have all the arrow keys setup in this way, as well as home, end and delete. I also have CapsLock+H mapped to <ctrl>+<left> and CapLock+; mapped to <ctrl>+<right>. I will add more combinations once my fingers have fully learned this set, but this already feels like a really great improvement.

What other uses for the CapsLock key are you using / can you think of?