Workflow

Emulators and arcade games with any controller

Download InputConfig on the Mac App StoreThe Emulator / Arcade layout is built into InputConfig, 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.

On a Mac: Works everywhere on the Mac. Most emulators see controllers directly and you should use that. This layout is for the ones that do not, for browser and Flash-era games, and for controllers an emulator refuses.

Yes, any controller can play emulators and arcade games on a Mac, and most emulators, OpenEmu and RetroArch included, read a pad natively, so start there. This layout is for the rest: browser emulators, old ports, MAME builds that only want a keyboard, and the controller an emulator lists as unknown. Its keys are the common defaults, Z and X for the main buttons and the arrows for movement, so a lot of things just work.

On this page: 8 sections
  1. The layout, control by control
  2. How the layout thinks
  3. Make it yours
  4. With an arcade stick
  5. RetroArch: this layout already matches its keyboard
  6. Get it in two clicks
  7. Every binding, as a table
  8. Questions

The layout, control by control

Click a control. Labels:

How the layout thinks

  • Move. The D-pad and the left stick both send the arrow keys.
  • Face buttons. A sends Z, B sends X, X sends A, and Y sends S.
  • Shoulders and triggers. The left shoulder sends Q and the right W. The right trigger repeats Z and the left trigger repeats X.
  • Select and Start. Select is Shift and Start is Return.

Z and X are the two keys most emulators and browser games read first.

Make it yours

  • Turbo. Set the fire button to Repeats while held in its Options for shooters. Macros, turbo and toggle covers it.
  • Two players. One preset holds a layout per controller slot, so give the second pad its own keys, for example W, A, S, D and Space, in the same preset. Only one preset runs at a time.
  • Odd defaults. Pick whatever key the emulator wants in that row's output menu.

When an emulator wants different keys, change the row, not the emulator.

With an arcade stick

Try the emulator first. OpenEmu and RetroArch read a USB arcade stick themselves once it is in a mode the Mac can see, which on most sticks is PC or DirectInput, not Xbox. This layout is for the rest: a browser emulator, a port that only reads the keyboard, MAME's menu keys.

  • You: Press Scan on each face-button row, and press the stick's buttons from left to right.
  • InputConfig: Binds each row to the button you pressed. On a stick the D-pad rows are the lever.
  • Check: Press each button in the emulator and watch it do what the row says.

More on modes is in arcade sticks on a Mac. Get the stick into a mode the Mac can see first, and everything else follows from that.

RetroArch: this layout already matches its keyboard

RetroArch's default keyboard binds are the same keys this layout sends: X and Z for the right and bottom buttons, A and S for the left and top, Q and W for the shoulders, Return for Start, and the arrow keys for the D-pad. So in RetroArch the layout works with nothing to set, with one exception: RetroArch's Select is Right Shift, and this layout sends Left Shift. Change the Select row's output to Shift (Right) and it matches.

  • Spare-button shortcuts. F2 saves a state, F4 loads one, Space toggles fast forward, R rewinds and F1 opens the menu, so any of those can go on a spare button.
  • Escape quits. Escape quits RetroArch outright, so do not put it on a button you press by accident.

If RetroArch sees your pad directly, use that instead and keep only the shortcut rows here. See emulator controller not working on a Mac for its controller drivers. In RetroArch, one change to the Select row is all it takes.

Get it in two clicks

  1. Get InputConfig free on the Mac App Store, open it, and click Smart Preset Maker on the welcome screen.
  2. Search for Emulator / Arcade and pick it. The layout is created as a preset in your sidebar, named and ready.
  3. Press Activate. Every row can be changed afterwards: the editor's Scan button rebinds any control the moment you touch it.

Every binding, as a table

The Emulator / Arcade preset in InputConfig, drawn on a DualSense Edge with each control labeled with the key or action it sends.
Figure 1. The Emulator / Arcade preset drawn on a DualSense Edge in InputConfig's Live Visualizer. For example, D-pad up is labeled D-pad up (Up arrow), and D-pad down is labeled D-pad down (Down arrow). Any other controller shows the same layout on its own drawing.
ControllerSendsWhat it does
D-pad upUpD-pad up (Up arrow)
D-pad downDownD-pad down (Down arrow)
D-pad leftLeftD-pad left (Left arrow)
D-pad rightRightD-pad right (Right arrow)
Left stick leftLeftLeft stick left
Left stick rightRightLeft stick right
Left stick upUpLeft stick up
Left stick downDownLeft stick down
A / CrossZButton A (Z)
B / CircleXButton B (X)
X / SquareAButton X (A)
Y / TriangleSButton Y (S)
LB / L1QLeft shoulder (Q)
RB / R1WRight shoulder (W)
Back / Share / SelectShift (Left)Select (Shift)
Start / OptionsReturnStart (Enter)
Right triggerZTrigger fire (Z)
Left triggerXTrigger secondary (X)

Button names follow the Xbox / PlayStation pair shown in the editor, so A / Cross is the bottom face button on either pad. On a Switch Pro Controller the bottom button is labeled B; the mapping still fires on position.

Questions

Should I use this or the emulator's own controller support?

The emulator's own, when it sees your pad. This is for when it does not.

Why is my controller not working in OpenEmu on Mac?

First check that macOS sees it: Game Controllers in the System Settings sidebar, or the controller test. If the Mac sees it and OpenEmu still does not, set OpenEmu's keyboard controls to the keys this layout sends (the arrows, Z, X, A, S, Q, W, Return, Shift) and activate the layout. The emulator then reads a keyboard, which it always accepts.

Will the emulator see my controller and these keys at the same time?

If it reads controllers, yes, and then each press arrives twice. Either leave the controller unbound in the emulator and let this layout drive it by keyboard, or bind the pad in the emulator and cut this layout down to the shortcut rows on buttons the emulator does not use. Auto-switch can activate the cut-down preset whenever the emulator is in front.

Download InputConfig on the Mac App StoreCompletely free. You don't have to make an account, there are no subscriptions, and nothing is locked. Optimized for Apple silicon. Open source on GitHub.

Updated