Use your game controller as a keyboard and mouse for your Mac — browse, scroll, click, and type from the couch
Watch a walkthrough of ControllerKeys features in action
Get up and running in under a minute
Sonoma or later
Xbox, PS5, PS4, or 300+ others
Permission required
Get the app from Gumroad
Open the DMG and drag to /Applications
Grant Accessibility permissions when prompted
Pair your controller via Bluetooth or USB
Why Accessibility permissions? The app uses Apple's CGEvent API to simulate keyboard and mouse input. This is the same API used by accessibility tools and automation software. The app is fully open source so you can verify it doesn't do anything nefarious.
Everything you need for controller-driven productivity
| Type | Description |
|---|---|
| Simple Key | Single keystroke per press |
| Modifier + Key | Like ⌘C |
| Hold Modifier | Hold button = hold modifier |
| Long Hold | Different action on long press |
| Double Tap | Quick double press trigger |
| Repeat | Auto-repeat while holding |
Press multiple buttons for one action. Fully customizable — create your own combinations.
Trigger actions with ordered button combos — like cheat codes
Hold a button to unlock an entirely different set of mappings — like Shift on a keyboard
Example: Hold LB to turn A/B/X/Y into app launchers, D-pad into media controls.
Write custom automation scripts powered by JavaScriptCore
press(), hold(), click(), type(), paste(), delay()shell(), openURL(), openApp(), notify(), haptic()app.name, app.bundleId, app.is()trigger.button, trigger.pressTypescreenshotWindow() API for window captureMouse or WASD
Scroll or Arrows
GTA-inspired radial menu for instant app and website switching
Use the DualSense or DualShock 4 gyroscope for precise mouse control and gesture-triggered actions
Send HTTP requests from controller buttons — trigger smart home, APIs, or custom integrations
Multiple configurations with smart switching
A full keyboard and app launcher with swipe typing
Record multi-step sequences and play them back with one button
Automate beyond key presses
Variables: Use {date}, {time}, {clipboard}, and more in your text.
Full support for DualSense, DualSense Edge, and DualShock 4 controllers
Use the touchpad as a full trackpad with multi-touch gesture support
Two-finger gestures included
Not just Xbox and PlayStation — your third-party controller probably works too
If macOS sees it as a game controller, ControllerKeys can map it.
Show your controller inputs on stream
Track your usage stats and share your controller personality
50% off launch price
Turn your spare controller into a productivity powerhouse
Don't let your old controllers collect dust
A comfortable alternative to keyboard and mouse
Let AI write the code while you relax on the couch — just review and approve suggestions with your controller
Control your Mac from inside a VR headset or across the room
Review flashcards from the couch with full shortcut support — unlike Enjoyable
Switching from Enjoyable? ControllerKeys supports modifier combos, chords, and macros that Enjoyable can't do.
Combine with voice transcription for fully hands-free computing
A wireless controller for your classroom — move freely while managing slides, OBS scenes, and recordings
"I teach a 200+ student introductory Physics course and used to control OBS with a Stream Deck from Elgato. Stream Deck worked, but it's wired and has no trackpad. Switching to my PS5 DualSense with ControllerKeys was an easy call — Bluetooth means I can move around the room freely, and the touchpad handles cursor control perfectly. My lectures are a lot more fun to run now, and my students get a kick out of seeing their professor run the whole show with a PS5 controller."
Trigger webhooks and OBS WebSocket commands from your controller — no keyboard required
50% off launch price — limited time
See the app in action with Xbox and DualSense controllers
Open source & Apple notarized
Solutions to common issues
~/.controllerkeys/config.jsonAnswers to frequently asked questions
Yes! Xbox Series X|S controllers connect to Mac via Bluetooth. Put your controller in pairing mode (hold the pairing button until the Xbox button flashes), then go to System Settings → Bluetooth and select the controller.
Once connected, ControllerKeys lets you use it for productivity — not just gaming.
Yes! DualSense controllers work great with Mac. Hold the Create and PS buttons together until the light bar flashes, then pair via System Settings → Bluetooth.
With ControllerKeys, you get full touchpad support as a trackpad, plus LED color customization when connected via USB.
Bluetooth: Wireless convenience, works great for most features.
USB: Required for DualSense LED color customization and microphone access. Also provides slightly lower latency and keeps your controller charged.
1. Turn on your Xbox controller by pressing the Xbox button
2. Hold the pairing button (top of controller) for 3 seconds until the Xbox button flashes rapidly
3. On your Mac, go to System Settings → Bluetooth
4. Select "Xbox Wireless Controller" from the list
1. Turn off your DualSense controller if it's on
2. Hold the Create button (left of touchpad) and PS button together for 3 seconds
3. The light bar will flash blue when in pairing mode
4. On your Mac, go to System Settings → Bluetooth and select "DualSense Wireless Controller"
Yes. The app is fully open source — you can verify exactly what it does. It never phones home or collects data. Network access only occurs when you explicitly configure webhooks, OBS commands, or import community profiles.
Controller inputs are translated to keyboard/mouse events in real-time and immediately discarded. The app is signed and notarized by Apple.
The app supports Xbox Series X|S, PlayStation 5 DualSense, DualSense Edge, PlayStation 4 DualShock 4, and 300+ third-party controllers via the SDL database.
DualSense and DualShock 4 controllers get additional features: full touchpad support, multi-touch gestures, and gyroscope aiming. DualSense also gets LED customization and microphone access via USB.
Yes! The app supports 300+ third-party controllers including 8BitDo, Logitech, PowerA, Hori, and many more. It uses the SDL controller database for automatic detection and mapping — no manual configuration needed.
If macOS sees your controller as a game controller, ControllerKeys can map it.
Currently, the app supports one controller at a time. The first connected controller will be used.
The app is designed for productivity (coding, browsing, general use). Most games have native controller support. Using both may cause conflicts or double inputs.
When configuring a button, select only the modifier (⌘ ⌥ ⇧ ⌃) without a key, and enable "Hold Modifier".
The modifier will be active while the button is pressed.
Yes. In the key capture field, select "Mouse Left Click" or "Mouse Right Click" as the action.
They're independent:
Yes. Clear all mappings from the button configuration. It will do nothing when pressed.
Increase the deadzone setting. 15-20% usually eliminates drift while maintaining responsiveness.
Use Focus Mode. Set a modifier as the trigger, then hold it while moving the joystick for slower, precise movement.
Currently, left stick is always mouse and right stick is always scroll. This isn't configurable yet.
Profiles save to ~/.controllerkeys/config.json — a human-readable JSON file you can backup or share.
Generally yes. They operate at different levels — this app handles controller input, while Karabiner and Hammerspoon handle keyboard input and automation. They typically don't conflict.
Yes. Add ControllerKeys to System Settings → General → Login Items.
The app continuously monitors controller input and translates it to keyboard/mouse events in real-time. Quitting stops all mapping.
Vibe coding is a relaxed approach to programming where you use AI assistants like Claude Code, Cursor, or Copilot to do most of the heavy lifting while you guide the process.
ControllerKeys lets you control your IDE from the couch — navigate code, accept AI suggestions, and trigger commands without touching a keyboard.
Absolutely! Map buttons to trigger AI completions, accept suggestions, or run terminal commands. Works great with Claude Code, Cursor, Copilot, Aider, Codex CLI, Roo Code, and any other AI coding assistant.
Pair this app with a voice transcription tool like VoiceInk (open source, Whisper-based). Map a controller button to toggle voice recording, and you have hands-free typing.
This combo is perfect for couch computing — dictate text while using the controller for navigation and commands.
Turn it into a productivity tool! Use it to control your Mac from the couch, navigate presentations, browse the web, or code with AI assistance. It's a great way to repurpose controllers you're not using for gaming.
Yes. Controllers are ergonomically different from keyboards and mice, which can help if you have repetitive strain injuries or need alternative input methods. The customizable mappings let you adapt it to your specific needs.