The Xbox Elite Series 2 is the best Xbox controller you can buy, and the rear paddles are the headline feature: four programmable buttons under your middle and ring fingers that you'd otherwise hit with your thumbs. On Windows and Xbox, you remap them with the Xbox Accessories app — which only mirrors existing buttons onto the paddles. On Mac, the Xbox Accessories app doesn't exist at all, and the paddles do nothing by default.
ControllerKeys solves both problems: it sees the paddles as four independent buttons, and lets you bind them to anything (not just to "be the A button"). Want the top-left paddle to switch macOS desktops? Bind it to ⌃→. Want it to run a JavaScript snippet that re-opens your last closed tab? Bind it to a script. Want a chord on two paddles to trigger a webhook? That works too.
The Xbox Accessories App Problem on Mac
The Xbox Accessories App Doesn't Run on Mac
Microsoft only ships Xbox Accessories for Windows and Xbox consoles. There is no Mac version, and the Windows version doesn't run under Wine/CrossOver well enough to be useful. Out of the box on Mac, your Elite Series 2 paddles are inert.
Even if it did run on Mac, the Xbox Accessories app has a fundamental limitation: it only remaps paddles onto existing buttons. A paddle can be "the A button" but it can't be its own thing. So you can never get more than the controller's existing input vocabulary out of it.
How ControllerKeys Handles the Paddles
The Elite Series 2 exposes the four paddles as their own HID button report bits — independent of A, B, X, Y. The macOS GameController framework hides them by default because Apple's API doesn't define paddle inputs. ControllerKeys reads the raw HID button bits and surfaces them as P1, P2, P3, and P4 alongside everything else. The result:
- Each paddle is a first-class bindable button, independent of A/B/X/Y/bumpers.
- You can bind a paddle to a keyboard shortcut, a chord, a macro, a JavaScript snippet, a system command, a webhook, or a layer toggle — exactly like any other button.
- You can use paddles as chord triggers (e.g. P1+P2 fires a different action than P1 or P2 alone).
- You can use paddles as held modifiers — hold P1 to make the face buttons mean something different.
- You don't need to mirror existing buttons onto the paddles; they have their own identity.
Setup
Pair the Elite Series 2 to Your Mac
Hold the pairing button on the top edge of the controller for 3 seconds until the Xbox button starts flashing rapidly. Open System Settings → Bluetooth on your Mac and pair "Xbox Elite Wireless Controller Series 2." See the Connect Xbox Controller to Mac guide for full pairing details.
Launch ControllerKeys
ControllerKeys detects the Elite Series 2 and shows a preview that includes the four rear paddles labeled P1 (top-left), P2 (top-right), P3 (bottom-left), and P4 (bottom-right).
Click a Paddle in the Preview
Click any of P1–P4 in the controller preview to open its binding sheet. The sheet is the same one used for ABXY and every other button.
Bind It to Anything
Choose a keyboard shortcut, chord, macro, JavaScript snippet, system command, webhook, or layer toggle. Add a hint so the assignment shows in the active mappings list.
Done
Press the paddle — your binding fires. Repeat for the other three.
Useful Paddle Bindings
Desktop Switching
P1 → ⌃← (previous Space), P2 → ⌃→ (next Space). Your middle fingers now switch desktops without leaving the home row.
Browser Tab Navigation
P1 → ⌘⇧[ (previous tab), P2 → ⌘⇧] (next tab), P3 → ⌘W (close tab), P4 → ⌘⇧T (reopen closed tab).
OBS Scene Switching
Bind each paddle to a webhook that switches OBS scenes via OBS WebSocket. Live-stream scene control from your fingertips.
Code Editor Commands
P1 → ⌘⌥← (back), P2 → ⌘⌥→ (forward), P3 → "Run", P4 → "Debug". Move through your codebase without touching the keyboard.
Modifier Layer
Set one paddle to "Hold for Layer 2". While held, A/B/X/Y mean different things — effectively doubling your usable button count.
Accessibility Shortcuts
If you have repetitive strain, bind common modifier-heavy shortcuts (⌘⇧4 screenshot, ⌘⌥M minimize, ⌘Q quit) to paddles so they fire from one finger press.
Elite Series 2 vs Elite Series 2 Core
The Elite Series 2 comes with paddles installed. The Elite Series 2 Core is the budget variant that ships without the paddle attachments — you have to buy the Component Pack ($60) separately to add them, or get magnetic third-party paddles. Functionally, with paddles attached, both controllers report P1–P4 over the same HID protocol; ControllerKeys treats them identically.
Troubleshooting
Paddles Do Nothing in ControllerKeys
- Make sure the paddles are physically attached (magnetic mounting on the back of the controller). The Elite Series 2 Core ships without paddles.
- Update the controller's firmware. Microsoft only ships firmware updates through the Xbox Accessories app on Windows — connect the controller to a Windows machine once to update, then return to Mac.
- In ControllerKeys, confirm the controller is detected as "Xbox Elite Wireless Controller Series 2" (not generic "Xbox Wireless Controller").
Paddles Are Firing as A/B/X/Y Instead
- You probably configured the paddles in Xbox Accessories before bringing the controller to Mac. Those mappings live on the controller itself.
- Reconnect to a Windows machine, open Xbox Accessories, and clear all paddle mappings (set each to "Unmapped"). Now they'll report as P1–P4 to ControllerKeys.
Controller Won't Pair
- Update controller firmware on a Windows machine first — older firmware has Mac Bluetooth issues.
- See the full Xbox controller pairing guide for general pairing troubleshooting.
Want to Reset Paddle Bindings to Default
- In ControllerKeys, right-click each paddle in the preview and choose Clear Binding.
- Or use the History tab to restore the profile to the snapshot from before you started binding paddles.
Make Your Elite Series 2 Paddles Worth the Money
Four independent paddles, bound to anything macOS lets you do. No Xbox Accessories app, no Windows machine, no driver install.