I know this may be asked before in a different manner, but I still haven't really seen a solid answer. I'm hoping that providing these 2 specific needs will make it more clear.

I specifically want 2 behaviors that will make my transition from a long time PC user to being able to use a MacBook Pro.


  • I am a windows user that just got my first mac ever (in my life) this past weekend.
  • I am dual booting the MBP with Snow Leopard and Windows 7 x64

What I want to do (in both Windows 7 and Snow Leopard):

  • Swap the fn and control keys (not physically)
  • Be able to tap the eject key for a forward delete, but keep the ability of holding down the eject key to actually eject the disc.

Are these possible, if so what is the best way (software?) of accomplishing this in both Windows 7 and Snow Leopard?


On OS X: DoubleCommand

enter image description here

On Windows: SharpKeys

enter image description here

For anything more extensive, you'll want AutoHotkey (Windows) or IronAHK (AutoHotkey rewrite that works with Mono for cross-platform compatibility - Linux, Mac, etc).

  • 2
    sharp keys isn't allowing me to remap the [fn] (function) key – Jon Erickson Sep 24 '09 at 4:46
  • 4
    and DoubleCommand only allows me to map fn -> control but not control -> fn – Jon Erickson Sep 24 '09 at 5:40
  • Take a look at the alternatives, they are much more flexible. – John T Sep 25 '09 at 4:36
  • Any update on this in 2021? It seems Big Sur doesn't allow this anymore and I'm in the same situation as OP (first-time Mac user hoping to map keys to Windows type keyboard) – prestonsmith Mar 30 at 12:35

On the Snow Leopard side you can swap Control and Fn with Karabiner (formely KeyRemap4MacBook).

If you're dual-booting, a good idea is to swap Command and Control in OS X's preferences. You'll get physically same keyboard shortcuts on both.

  • It's now called Karabiner. – iconoclast Aug 28 '14 at 16:25

Just as a sidenote you may also consider taking a look at the normal OS X system preferences under Keyboard there is a button on the lower-right named "Modifier keys" where you can define which actions should be taken by the modifier keys (caps-lock, ctrl, cmd,...). Could also be enough in some situation without installing 3rd-party software.


There is keyboard maestro that does this


You can use BetterTouchTool, it's a free tool with wich you can reprogram keys and multi-touch gestures. Make sure that in your settings you have set the F1, F2, etc-keys as default. Open BetterTouch and remap your keyboard. Don't forget to automatically let it run after logging in. It's also a very usefull tool for working with multi-touch gestures. I use it to swipe through my Spaces with four fingers. I don't like the default gestures in Snow Leopard.


As John T pointed out, AutoHotKey does everything on Windows, and that's it.

For Mac, IronAHK used to be good too, back when it existed.

So there's another option that, while I could never really use, seems to do what you need. Although it's very very technical, it's highly customizable. I'll just quote the website:

Ukelele is a Unicode Keyboard Layout Editor for Mac OS X

Ukelele aims to simplify keyboard layout editing by providing a graphical interface to .keylayout files, where the desired characters can simply be dragged onto keys as needed. (The Character Palette, available in the Input menu if it has been enabled in System Preferences, is a great place to find the characters.)

In addition to simple assignment of single character codes to keys, Ukelele can assign multiple-character strings and can create "dead keys", where a keystroke sets a new state that modifies the output of the following keystroke.

Hope it can help you where it couldn't for me back when I found it. ;)

  • autohotkey does not detect Fn key. You could use it to remap Caps Lock however. – Aleksandr Dubinsky Mar 22 '15 at 12:57

On Windows, someone implemented a kernel-mode driver to do this magical feat for the wireless Apple keyboard. I am not sure if it works for a macbook. The FAQ says that an option is to install Windows "natively." Regardless, there is a good chance a small modification to the source code could get it working everywhere.


Not the answer you're looking for? Browse other questions tagged or ask your own question.