Remapping Keyboard Keys on Mac OS X Mavericks
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 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 replaceKEYTOSTART
. (KeyCode::
must be left as it is.) -
As an example, here is what I used to remap
Caps Lock
(i.e.PC_APPLICATION
) toCommand+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.
💅 Vanilla – hide icons from your Mac menu bar for free
🚀 Rocket – super-fast emoji shortcuts everywhere on Mac… :clap: → 👏
⏳ Horo – the best free timer app for Mac
📂 FastFolderFinder – a lightning-fast launchbar app for folders and apps
📖 Kubernetes – my book on Kubernetes for web app developers
😄 Emoji Bullet List – easily emojify your bullet point lists (like this one!)
Jump on my email list to get sent the stuff that’s too raunchy for the blog.
(Seriously though, it’s an occasional update on apps I’ve built and posts I’ve written recently.)