This is an updated version of my original guide on how to remap keyboard keys on OS X.

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+R for building and running iOS apps and to refresh web pages

for building and running iOS apps and to refresh web pages Caps Lock is otherwise entirely useless

Here are the steps and workarounds I used to get what I wanted. I’ve essentially remapped the Insert , Home , Page Up , Delete , End and Page Down , and Caps Lock keys into a useful macro block.

Download the latest version of 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 Caps Lock key. Open PCKeyboardHack (from the Launchpad), and under the Caps Lock section select Change Caps Lock. Change the keycode in the right hand column to ‘110’. Open KeyRemap4MacBook from ~/Applications . 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.xml file 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 private.xml file. The basic syntax for adding a new remapping is this: Replace STARTKEY with some key from this list. Make sure you use the uppercase name in the left column to replace KEYTOSTART . ( KeyCode:: must be left as it is.) As an example, here is what I used to remap Caps Lock (i.e. PC_APPLICATION ) to Command+R : Save the private.xml file. 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, we’ve satisfied our laziness.

For anyone interested, here is my full private.xml file:

For more information on the full power of the private.xml file, check out the reference manual (thanks to @jnlevitan for the tip).

I’d love to hear your favourite key remappings, feel free to share them with me on Twitter.