Questions
How to map a controller to keyboard keys on a Mac
macOS cannot do this on its own: System Settings only maps controller buttons to other controller buttons, and only in games that already support a pad. To make a button type a key or move the mouse in any app, you need a mapper. InputConfig is free and open source, and the whole setup takes about two minutes. Here it is, step by step.
Steps
- Connect the controller over Bluetooth or USB.
- Open InputConfig and allow Accessibility access.
- Create a preset, click Scan on a row, and press the button.
- Choose Keyboard Key (or mouse, scroll, macro, MIDI) as the output.
- Save and Activate; the mapping works in every app.
Step by step
- Connect the controller over Bluetooth or USB. Any PS5 DualSense, PS4 DualShock 4, Xbox, Switch Pro, 8BitDo or other HID gamepad works, with no driver.
- Open InputConfig from the Mac App Store and grant Accessibility access when it asks. That permission is what lets the app send keys and mouse events to other apps.
- Click New Preset, or pick one of the ready-made layouts and edit it.
- In the editor, click Scan on a row and press the button you want to map. The row fills in with that button.
- On the right side of the row, choose Keyboard Key and pick the key, or choose Mouse Motion, Mouse Button, Scroll, a macro, typed text, a MIDI note or a system function.
- Repeat for each control. Sticks can drive the pointer or send four keys, triggers can click or send keys, the D-pad can be arrows or WASD.
- Save, then click Activate. The mapping is live in every app until you turn it off. The emergency stop in the menu bar releases everything at once.
A typical desktop layout
| Control | Sends |
|---|---|
| Left stick | Pointer movement |
| Right stick | Scroll |
| Right trigger | Left click |
| Left trigger | Right click |
| D-pad | Arrow keys |
| A / Cross | Return |
| B / Circle | Escape |
| Bumpers | Switch apps (Command + Tab) |
| Options / Menu | Spotlight |
This is the built-in Desktop Navigation preset. Activate it and a controller runs the whole Mac.
For a game that ignores the controller
Map the controls to the keys the game expects: WASD on the left stick, mouse look on the right stick, Space to jump, the triggers to the mouse buttons. The game sees a keyboard and mouse and never knows. Ready-made layouts exist for Minecraft, Fortnite, Roblox and hundreds more.
Make it feel right
Each row has Options: a deadzone so a resting stick does not creep, a sensitivity curve, turbo, toggle, hold-for-a-different-action, double tap, and chords, where a row only fires while a second control is also held. Gyro rows can move the pointer by tilting the controller. Everything is described on the help pages.
Questions
Can I map a controller to keyboard keys on a Mac for free?
Yes. InputConfig is free on the Mac App Store and open source, with no account or subscription. Enjoyable is a free older option that is no longer updated.
Does this work in apps that are not games?
Yes. The mapper sends real keyboard and mouse events, so browsers, editors, Anki, Final Cut, Blender and the Finder all respond the same way they would to a keyboard.
Which controllers work?
Any PS5 DualSense or DualSense Edge, PS4 DualShock 4, Xbox Wireless, Series or Elite, Switch Pro, Joy-Con, 8BitDo, the PlayStation Access Controller, and any other HID or MFi gamepad.
Do I need to turn it off before typing normally?
Only if a mapped button would collide with what you are doing. The menu bar icon and the emergency stop shortcut stop a preset instantly and release every held key.