Remapping Keys on Mac OS X Mountain Lion
Here's how to remap any of your keyboard keys to any combination of keys on Mac OS X. Initially, I wanted to remap the
Caps Lock key to
Command+R for two reasons:
- I'm always hitting
Command+Rfor building and running iOS apps and to refresh web pages
Caps Lockis otherwise entirely useless
Here are the steps and workarounds I used to get what I wanted. I've essentially remapped the
Page Down, and
Caps Lock keys into a useful macro block.
- Download KeyRemap4MacBook; it's pretty much the only decent key remapper for Mac. Despite its horrible name, it is insanely flexible and powerful.
- Install KeyRemap4Macbook as per the instructions on their website.
- Download PCKeyboardHack if you want to remap the
- Open PCKeyboardHack (from the Launchpad), and under the Caps Lock section select Change Caps Lock.
- Change the
keycodein the right hand column to '110'.
- Open KeyRemap4MacBook (it's in System Preferences).
- Scroll down to 'For PC Users', expand it, expand 'Change PC Application Key'.
- Select whatever key you want the Caps Lock key to remap to (I set it to 'Application Key to Command_L').
Not exactly perfect, right? There's a very limited selection of keys you can remap to. Don't worry, with a little .xml hacking we can get it to do what we want (in a way). For those of you who are happy to just use it like this, don't worry about the next bit. For this section, we are going to introduce user-defined key remapping.
- In KeyRemap4MacBook click 'Misc & Uninstall' in the top tab bar.
- Click 'Open private.xml' to open it in Finder.
- Open the
private.xmlfile in TextEdit.
- Open this private.xml file in your browser. Copy and paste the code from this remote file to replace the contents of the local
- The basic syntax for adding a new remapping is this:
KEYTOSTARTwith some key from this list. Make sure you use the uppercase name in the left column to replace
KeyCode::must be left as it is.)
- As an example, here is what I used to remap
- Save the
- Go back to KeyRemap4MacBook and hit 'ReloadXML' and your newly defined remaps should appear at the top of the list.
- Select the one you want.
- Try it out.
- Look through this page for more comprehensive documentation of what you can achieve.
- Keep defining new remaps until you've got exactly what you want.
So, eventually, we worked out a way to remap any key we want to another key or combination of keys. It works really well, and it's probably good for RSI or something. At the very least, our laziness has been satiated. If I've done something wrong or you have questions, feel free to contact me on Twitter.
For anyone interested, here is my full