Questions

A two-player USB arcade encoder on a Mac

Yes, with no driver, as long as the encoder presents itself as a joystick. A USB arcade encoder, the small board that joysticks and buttons wire into for a bartop or a home-built panel, usually does, including the boards sold as zero delay encoders.

Two-player setups come as two boards, or as one dual board, and InputConfig 1.6, the free Mac app I make, now gives each player a controller of their own in both cases. Here is what the Mac does with each kind and how to set one up.

On this page: 10 sections
  1. Steps
  2. Tell joystick encoders from keyboard encoders
  3. Map it in your emulator
  4. Give each player a controller
  5. Give each player keys for keyboard games
    1. Step 1: Check the wiring
    2. Step 2: Bind player one
    3. Step 3: Bind player two and activate
  6. Know what 1.6 changed for cheap encoders
  7. Use a keyboard encoder
  8. What it cannot do
  9. The short version
  10. Questions

Steps

  1. Find out whether the board is a joystick encoder or a keyboard encoder.
  2. In an emulator, assign each player's controls in its input settings.
  3. For keyboard games, open InputConfig and check every wire in the Live Visualizer.
  4. Scan player one's lever and buttons onto keys, then player two's onto other keys.
  5. Press Activate.

Tell joystick encoders from keyboard encoders

Encoders come in two kinds, and they behave very differently on a Mac:

  • Joystick encoders. They report as a USB game pad: the lever arrives as a D-pad or as two axes, and each button as a numbered button. Most inexpensive zero delay boards use a DragonRise chip and work this way. macOS reads them as plain HID devices, so they appear in System Information, USB, but not in System Settings, Game Controllers.
  • Keyboard encoders. They report as a USB keyboard: each button types a key, in MAME's default layout or one you program. Every app sees those keys with nothing else installed.

Some boards can do either, set by a jumper, a switch, or a button combination; the seller's sheet says which.

Map it in your emulator

MAME, RetroArch and OpenEmu read HID joysticks themselves. Wire the board, plug it in, and assign each control in the emulator's input settings.

RetroArch: Where each player's controls are assigned.

Settings, Input, RetroPad Binds, Port 1 Controls

What happens: You assign player one. Port 2 Controls, in the same place, is player two.

More on emulator controller problems. With an emulator that reads the board, you need nothing else.

Give each player a controller

How a two-player setup shows up depends on the hardware:

  • Two separate boards. Each is its own USB device, so each is its own controller. Two identical boards report the same name; InputConfig 1.6 keeps them apart, and they no longer switch on and off together.
  • One dual board, or a twin adapter. Many send both players down one cable, each player as its own report. InputConfig 1.6 spots that and gives player two a controller of its own, listed under the board's name with player 2 after it.
  • A dual board that sends both players as one report. Then it is one controller with every button of both players on it. That still works: one preset can bind player one's half and player two's half to different keys.

In InputConfig, each controller takes its own slot, numbered from 0, and a preset holds separate rows for each slot. Pick which connected controller a group reads from the group's device menu, or from the Live Visualizer panel's menu under Connected. Player 2 after the board's name means the split worked.

Download InputConfig on the Mac App StoreInputConfig is free on the Mac App Store. macOS 14 or later, no account, no tracking, open source.

Give each player keys for keyboard games

Plenty of arcade-style games on a Mac, and most browser games, read only the keyboard. For a joystick encoder, InputConfig reads the board and sends keys.

Step 1: Check the wiring

  • You: Plug in the board, open InputConfig, then move each lever and press each button while you watch the Live Visualizer.
  • InputConfig: Lists each player's controller at the top of the sidebar and draws an encoder as a plain map of what it reports, one light per button. If a controller is missing, click Refresh Controllers, or tick the board under InputConfig, Devices.
  • Check: Every wire lands on a light before you bind anything.

Step 2: Bind player one

  • You: In a new preset, under player one's controller, press Scan on a row and push the lever or press the button, then pick its key. W, A, S and D for the lever is common.
  • InputConfig: Fills each row from the control you pressed.
  • Check: Each control sends its key in a text field.

Step 3: Bind player two and activate

  • You: Do the same under player two's controller with the arrow keys and its own buttons, then press Activate.
  • InputConfig: Reads both players at once.
  • Check: Both players can press at once; the game sees two people on one keyboard.

The same two layouts fit most two-player browser games. The longer version, with the usual key choices, is on two controllers on a Mac. W, A, S, D for one player and the arrows for the other fits most two-player games.

Know what 1.6 changed for cheap encoders

  • Repaired descriptors. Boards that describe their own axes wrongly, which is common with DragonRise-style encoders, are repaired as they are read rather than producing a lever that sits at one edge.
  • More buttons. Buttons up to 128 can be bound, for boards with a lot of inputs.
  • Wiring order. A DragonRise USB ID is shared by many different products, so InputConfig uses a community button row for one only when it matches exactly. Otherwise it reads the board's own description and numbers buttons in wiring order, which is what you want for a panel you wired yourself.
  • Older presets. Presets made in 1.5 with an encoder are offered an update the first time it connects, because 1.6 numbers its controls differently. Tick the presets and click Update Ticked Presets.

If you skipped the update, Settings, Advanced, Check Older Presets Again brings the offer back.

Use a keyboard encoder

A keyboard encoder needs nothing on a Mac: games read its keys directly. InputConfig can also listen to those keys and add something on top, such as a held button that opens a menu or a key that runs a shortcut.

  • One keyboard to InputConfig. It cannot tell which board a key came from, because the Mac's keyboard input reaches it as one keyboard. Give each player different keys in the encoder's own setup.
  • Listen-only. Keys are only listened to, so a bound key still reaches the game as well.

With a keyboard encoder, set the players apart in the encoder, not in InputConfig.

What it cannot do

InputConfig sends keyboard and mouse events. Games that only accept a recognized controller will not see a joystick encoder, with or without InputConfig. For those, an emulator that reads the board directly is the route.

The short version

  • Emulators. Assign each player in the emulator's input settings.
  • Keyboard games. InputConfig, one group per player, Scan each control onto its key.
  • Dual boards. 1.6 lists player two as its own controller when the board sends players separately.

Check every wire in the Live Visualizer first, and binding takes minutes.

Questions

Does a zero delay USB encoder work on a Mac?

Yes. Most zero delay boards report as a USB joystick, which macOS reads with no driver. Emulators read it directly, and InputConfig reads it for games that only take the keyboard. It does not appear in System Settings, Game Controllers, which is normal.

Why does my arcade encoder show up as one controller for two players?

Some dual boards send both players in one report, so they are one device with twice the buttons. InputConfig 1.6 splits boards that send each player separately; for one that does not, bind player one's controls and player two's controls to different keys in one preset.

Do I need a driver for a DragonRise encoder on a Mac?

No. macOS reads DragonRise boards as HID joysticks. Their descriptors are often slightly wrong, and InputConfig 1.6 repairs the common mistakes as it reads them.

Can a keyboard encoder like an I-PAC work on a Mac?

Yes. It is a USB keyboard as far as macOS is concerned, so games and emulators read its keys with nothing installed.

Can InputConfig make my encoder look like an Xbox controller?

No. It sends keyboard and mouse events. Games that only accept a recognized controller will not see a joystick encoder.

Download InputConfig on the Mac App StoreFree. macOS 14 or later. No account, nothing leaves your Mac. Open source on GitHub.