Shift-Control-Option-Command on Caps Lock

I’m not sure where I first saw a link to this detailed keyboard post by Steve Losh. The usual suspects would be Brett Terpstra, Gabe Weatherhead, and Clark Goble, but I’m thankful to whoever it was. Losh’s post has given me a great new tool for making keyboard shortcuts easier.

The central conceit of Losh’s post is to recreate the experience of the legendary Space Cadet keyboard on a Macintosh using today’s hardware and software. The Space Cadet came with the old Symbolics Lisp machines of the 80s and is renowned for its row of four modifier keys—Control, Meta, Super, and Hyper—that allowed users and programmers to define an enormous number of keyboard shortcuts. I’m not a big fan of doing everything from the keyboard, but there was one section of the post that I thought would give my keyboard use a big boost.

The problem in defining new keyboard shortcuts is that you want to make them relatively easy to type while not conflicting with shortcuts already defined. I tend to use Control-Option-Command combinations because

  1. Applications shy away from three-modifier combos, which leaves them free.
  2. Despite it being three keys, that combination is actually easy to type because the keys are all in a row. I just mash down on them with the ring, middle, and index fingers of my left hand—no fine motor control necessary.

But after using up the Control-Option-Command combinations that have an easy mnemonic association with their function, it becomes harder to add new functions. An obvious extension would be to start using Shift-Control-Option-Command, but that’s hard to type. Which is where Losh’s software recommendations come in.

The two applications—System Preferences, actually—Losh discusses are PCKeyboardHack and KeyRemap4MacBook, both of which are free programs written by Takayama Fumihiko. A simple variation on Losh’s instructions allowed me to remap the Caps Lock key on my MacBook Air to the Shift-Control-Option-Command combination. Now I can add more keyboard shortcuts without sacrificing ease of typing.

First, I followed Fumihiko’s instructions for installing both of his programs. Then I opened the builtin Keyboard System Preference and set the Caps Lock Key to No Action.

Keyboard System Preference

Then I opened the PCKeyboardHack Setting pane and remapped the Caps Lock key to keycode 80, which corresponds to F19 on keyboards that have an F19. Function keys on my MacBook Air max out at F12, so mapping Caps Lock to F19 causes no conflict.

PCKeyboardHack setting for Caps Lock

Next I opened KeyRemap4MacBook (which, despite its name, isn’t restricted to MacBooks) and opened its private.xml document from the Misc & Uninstall pane.

KeyRemap4MacBook private.xml

I set the contents of my private.xml to this,

xml:
 1:  <?xml version="1.0"?>
 2:  <root>
 3:  <item>
 4:      <name>Remap Caps Lock to Hyper</name>
 5:      <appendix>OS X doesn't have a Hyper. This maps Left Control to Control + Shift + Option + Command.</appendix>
 6:  
 7:      <identifier>caps_lock_to_hyper</identifier>
 8:  
 9:      <autogen>
10:          --KeyToKey--
11:          KeyCode::F19,
12:  
13:          KeyCode::COMMAND_L,
14:          ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L
15:      </autogen>
16:  </item>
17:  </root>

which is a minor rewrite of Losh’s private.xml. After saving and closing this file, I switched to KeyRemap4MacBook’s Change Key pane and activated the new entry.

KeyRemap4MacBook Change Key pane

It’s true that this remapping loses me the Caps Lock function, but I see that as a small price to pay for an entire alphabet’s worth of new keyboard shortcuts. Look out, FastScripts and BBEdit!