Questions

Which key remapper for Mac do you need?

Download on the Mac App StoreInputConfig is completely free on the Mac App Store. You don't have to make an account, there are no subscriptions, and nothing is locked. Optimized for Apple silicon.

It depends on the job, because remap means three different things on a Mac. Changing what a key does everywhere, such as Caps Lock to Escape, is a job for macOS itself or for Karabiner-Elements. Giving a key or a mouse button you never use a new job, such as F13 opening Spotlight, is what InputConfig, the free app I make, does. Turning a game controller or a MIDI pad into keys is InputConfig's job too. I will help you tell which one you need, with the free option for each.

On this page
  1. Find the right tool for the job
  2. Remap with macOS on its own
  3. Use Karabiner-Elements for key-to-key rules
  4. Give spare keys and buttons a second job
  5. Set up a spare key in InputConfig
  6. Use them together
  7. The short version
  8. Questions

Find the right tool for the job

You want toUse
Swap Caps Lock, Control, Option, Command or Globe, or make Caps Lock an Escape keymacOS: System Settings, Keyboard, Keyboard Shortcuts, Modifier Keys
Use F1 to F12 as standard function keys without holding fnmacOS: Keyboard Shortcuts, Function Keys
Change the shortcut for a menu command in one appmacOS: Keyboard Shortcuts, App Shortcuts
Turn any key into any other key, everywhere, or build complex rulesKarabiner-Elements, free and open source
Make a spare key, F13 to F19, or a held right-hand modifier run a shortcut, macro or appInputConfig, free
Give mouse side buttons a jobInputConfig, or the mouse maker's own app
Make controller buttons send keys and move the mouseInputConfig
Make MIDI pads and knobs send keystrokesInputConfig

Remap with macOS on its own

Open System Settings, choose Keyboard, then Keyboard Shortcuts. Three panes cover most everyday remaps with nothing to install:

  • Modifier Keys. Changes what Caps Lock, Control, Option, Command and Globe do, and a menu at the top picks which keyboard it applies to, so an external keyboard can differ from the built-in one. Caps Lock to Escape is in this list.
  • Function Keys. Makes F1 to F12 act as standard function keys, so you hold fn for brightness and volume instead of the other way round.
  • App Shortcuts. Gives any menu command, in any app or all apps, a new shortcut, by typing the exact menu title.

So yes, you can remap these keys on a Mac with no app at all.

Use Karabiner-Elements for key-to-key rules

When you need a letter, number or symbol key to become a different key, rules that depend on the app or the keyboard, or one key that acts differently when tapped and held, Karabiner-Elements is the tool. It is free and open source, and it works by installing a driver extension that macOS asks you to approve. It changes the key itself, so the original meaning is gone while the rule is on.

It is a keyboard and mouse tool. It does not read a PS5, Xbox or Switch controller, which is the subject of Karabiner-Elements and game controllers.

Give spare keys and buttons a second job

InputConfig listens to the keyboard alongside macOS. A key keeps doing what it did, and the app adds a second job on top. It cannot swap two keys or turn Caps Lock into Escape, and because every keyboard reports to it as one device, it does not tell two keyboards apart. What it is good at is keys nothing uses:

  • F13 to F19. Full-size keyboards have them and macOS gives them no job, so each one can run a system function, a shortcut or a macro.
  • Right-hand modifiers, held or double tapped. The built-in Modifier Holds preset gives Right Command, Right Option and Right Shift a job only when held or double tapped, with no output on a plain press, so every normal shortcut still works. Holding Right Command opens Spotlight. Holding Right Option starts Dictation.
  • Mouse Button 4 and Button 5. And a double click on any button. See mouse side buttons on a Mac.
  • The trackpad's scroll gesture. As an input. Force click binds too, but macOS only gives trackpad force to the front app, so it works while InputConfig is the front window.

The job can be a key combination, a timed macro, typed text, volume or media keys, Mission Control, a Siri Shortcut, opening an app or a URL. A preset can switch itself in when a given app comes to the front, and Control Option Command period is an emergency stop that turns everything off. The full list of what it reads is on keyboard, mouse and trackpad as input.

For a mouse button, the free mouse tester shows whether the Mac receives it before you spend time on a rule.

Set up a spare key in InputConfig

  1. Install InputConfig from the Mac App Store and allow Accessibility access when it asks.
  2. Make a new preset and add a row. Press Scan, then press the key or click the mouse button.
  3. Choose the output: a key combination, a macro, Type Text, or a system function.
  • You: Activate the preset and press the key in any app.
  • InputConfig: Runs the output. A preset with only keyboard rows runs on its own. No controller is needed.
  • Check: The output fires, and the key still does its own job too, which for F13 to F19 is nothing.
The built-in Modifier Holds preset in InputConfig, with the Right Option row set to Start Dictation on a hold.
Figure 1. Modifier Holds: a held Right Option starts dictation, and a plain press stays an ordinary Option.

For a whole deck of these, the macro deck guide builds one from a numpad, a MIDI pad or a controller.

A row whose input is a keyboard key, with its key menu open.
Figure 2. A row that starts from a key. Press Scan and then the spare key, or pick it from this menu.
Three rows: F13 opens an app, F14 types a phrase and F15 runs a Shortcut.
Figure 3. Three spare keys with three kinds of job: F13 opens an app, F14 types a phrase and F15 runs a Shortcut.

Use them together

They do not compete. A common setup is Caps Lock to Escape in macOS's Modifier Keys, Karabiner-Elements for any deeper key-to-key rules, and InputConfig for F13 to F19, mouse side buttons, a controller or a MIDI pad. Because InputConfig adds rather than replaces, it sees whatever key the keyboard sends and gives it its extra job on top.

The short version

  • Modifiers and the function row. macOS handles these in Keyboard Shortcuts, with nothing to install.
  • Any key into any other key. Use Karabiner-Elements.
  • A new job for a spare key, mouse button, controller or MIDI pad. Use InputConfig.

Pick the tool by the job, and you may well end up using all three.

Questions

Can you remap keys on a Mac without an app?

Yes, for the modifier keys, Caps Lock, Globe and the function row. System Settings, Keyboard, Keyboard Shortcuts has Modifier Keys, Function Keys and App Shortcuts. Turning a letter or symbol key into another key needs an app such as Karabiner-Elements.

How do I make Caps Lock an Escape key on a Mac?

System Settings, Keyboard, Keyboard Shortcuts, Modifier Keys, then set Caps Lock to Escape. No app is needed.

What is the best key remapper for Mac?

For changing one key into another everywhere, Karabiner-Elements, which is free and open source. For giving spare keys, mouse buttons, controllers or MIDI pads a new job without losing what they already do, InputConfig. Many people use both.

Can InputConfig swap two keys?

No. It listens alongside macOS, so a key keeps its normal job and InputConfig adds another on top. That is why its keyboard presets use keys nothing else needs, such as F13 to F19 or a held right-hand modifier.

Is there a free button remapper for Mac?

Yes. macOS's own Keyboard Shortcuts settings, Karabiner-Elements and InputConfig are all free. InputConfig also covers mouse side buttons, game controllers and MIDI devices.

How do I swap Command and Option for a Windows keyboard?

Open System Settings, Keyboard, Keyboard Shortcuts, Modifier Keys. Pick the Windows keyboard in the menu at the top, then set Option to Command and Command to Option. No app is needed, and the change applies to that keyboard only.

This page in other languages: Русский

Download on the Mac App StoreOpen source on GitHub.

Updated