Creating Worry-Free Keyboard Shortcuts with the “Hyper” Key
Note: this is the second article in a series' on creating better shortcuts using BetterTouchTool. You can find the first article here (with table of contents).
Custom keyboard shortcuts have always been an itch I’ve felt unable to scratch.
I never quite felt up to the task. I have seen and known people who have customized their computers to the point where they don’t even touch their mouse. Watching these people work is like watching a magician: windows moving of their own accord, applications launching automatically, whole build processes seemingly materializing out of thin air. Frankly it’s a very intimidating mental image, and one that I’ve never felt I could live up to.
So I didn't even try. I used a stock keyboard most of my life, and used a mouse whenever it was convenient. Sure I learned some keyboard shortcuts here and there, but for the most part, I did what was obvious. I never really put in the time or effort to work smarter, instead opting to work longer hours, and spend less time on social media than most people.
This was a decent strategy, but a suboptimal one. Anyone who spends more than a few hours a day on a computer should put in the effort to make their work experience better. It only makes sense: even if you only shave a few seconds off of your daily routine, it could save you hours or even days when compounded over years and years. Not only does it save you time, it also leaves your brain free to think about more important things, like your work.
You cannot afford to drive your computer sub-optimally for years. Put in the effort to make your computer work for you, and your output in the long term will be drastically higher. Like changing the oil in your car, this is work that has to be done, or it will fuel the burn out of your engine. Trust me, I’ve been there done that. Changing your oil may be a hassle, but it’s better than the alternative.
Changing the oil
So, we know we need to give the computer skills a tune-up, but where do we start?
Let me tell you what has held me back for years on this front: I’ve always hesitated to change keyboard shortcuts that don’t work well for me. I’ve always been afraid to change anything, because I feel like I will overwrite an already existing shortcut: something that I use, or something I should be using.
This isn't an idle worry; many times I have made up my mind to add my own custom shortcut, only to realize 15 minutes later that I overwrote something that I use all the time. For some reason it’s very difficult for me to remember all the shortcuts that I use on a daily basis. They're all in muscle memory, but muscle memory doesn't help much with recall.
Now, you can use an application like KeyCue to tell you all the shortcuts on your system. Or you could scour your preferences to make sure you aren't missing anything. But both of these solutions are error prone and slow.
Here is an important idea: you need to be able to add shortcuts to your computer quickly and effortlessly, without thinking about it. Let me tell you why: keyboard shortcuts are the key to speeding up any workflow. But our brains aren't very good at figuring out the best way to implement or use them. The best keyboard shortcuts come to you while you're working, anytime you are needlessly repeating your actions, and in the back of your mind you think "there’s got to be a better way to do this". This is exactly the best time to create a keyboard shortcut, while it’s fresh in your mind. If your process for creating keyboard shortcuts isn't effortless, then you're going to ignore that intuition, and miss out on the biggest workflow wins you've ever seen.
But how do we make creating keyboard shortcuts effortless? How can we leave behind the problem of managing and overwriting existing shortcuts?
Enter the hyper key.
The Hyper Key
Modern OS X only supports four "modifier" keys, Command, Control, Option, and Shift. This is all we have to work with when creating keyboard shortcuts. Command is certainly the most-often used key for the OS, but the other modifier keys are used fairly frequently as well, for other purposes.
As we’ve discussed, it’s difficult to come up with many good key combinations with these four modifiers that haven’t already been taken by some system default, or an app on your system. As far as I know, there are no system defaults that use all four modifier keys at once. If we follow that logic, it stands to reason that we have an entire keyboard of potential shortcuts at our fingers if we use all four modifiers at once.
This doesn't 100% solve our problem, but it comes close. Only the most nimble fingered typist can press all those modifiers at the same time, in addition to whatever other key you use for your shortcut. Even if you can press all of those keys, it certainly will contort your hand and not give you a very comfortable experience, which is another barrier that we must overcome. So we need to find an easier way to press these modifiers.
Unfortunately this isn't something we can do with BetterTouchTool, as far as I can tell. There is a very nice piece of free software that will allow us to do this though, called Karabiner-Elements. If you don’t already have it, I would recommend downloading and installing it.
Karabiner is a very powerful and flexible piece of software, and has a whole list of different modifications you can make to the modifier keys on your machine. The only one I use, and the one I recommend, is the "change_caps_lock key" rule, which allows you to easily use the hyper key by holding down the caps lock key. There are plenty of other command modifications, but if you want the one I use, you can download it at this link (click the "import" button after downloading Karabiner).
Once you've imported that ruleset, congratulations! You now have a Hyper key on your keyboard, ready to accept any custom shortcuts you send its way. This is the first step towards the freedom to truly customize your keyboard.
In the next article we will talk about one of the improvements this allows us to make to our system: faster and more predictable application switching.