ControllerKeys

Transform your Xbox or DualSense controller into a powerful productivity tool for macOS

Download Now View Source
Scroll to explore

Quick Setup

Get up and running in under a minute

💻

macOS 14.0+

Sonoma or later

🎮

Xbox or DualSense

Bluetooth enabled

🔐

Accessibility

Permission required

1

Download

Get the app from Gumroad

2

Install

Open the DMG and drag to /Applications

3

Authorize

Grant Accessibility permissions when prompted

4

Connect

Pair your Xbox controller via Bluetooth

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.

Features

Everything you need for controller-driven productivity

⌨️ Button Mapping

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

🔗 Chord Mappings

Press multiple buttons for one action. Fully customizable — create your own combinations.

RB + X
Delete line
LB + View
- Zoom out
RB + View
= Zoom in

🕹️ Joystick Control

Left Stick

Mouse cursor

Right Stick

Scroll wheel

  • Adjustable sensitivity & deadzone
  • Acceleration curves
  • Focus mode for precision
  • Invert Y-axis option

👤 Profiles

Create multiple configurations for different workflows

  • Unlimited profiles
  • Quick switch from menu bar
  • Export & share configs
  • Per-profile joystick settings

Settings saved to ~/.controllerkeys/config.json

⌨️ On-Screen Keyboard

Type without reaching for your physical keyboard

  • Navigate with joystick or D-pad
  • Quick access via controller button
  • Full keyboard layout with special keys
  • Perfect for couch computing

📋 Quick Text & Commands

Insert text snippets or run terminal commands with a single button press

  • Map buttons to paste predefined text
  • Execute shell commands instantly
  • Perfect for repetitive inputs
  • Combine with chords for more options

Example: Map a button to insert your email address, or run git status in your terminal.

🎮 DualSense Features

Full support for PlayStation 5 DualSense controller

  • Full touchpad trackpad support
  • Multi-touch gesture support
  • Customizable LED colors
  • Microphone mute button mapping

🎛️ DualSense Touchpad

Use the touchpad as a full trackpad with multi-touch gesture support

Multi-touch Support

Two-finger gestures included

  • Trackpad mode for cursor control
  • Single-finger tap or click for left-click
  • Two-finger tap or click for right-click
  • Two-finger swipe for scrolling

Use Cases

Turn your spare controller into a productivity powerhouse

🛋️ Vibe Coding

Code from your couch with AI-powered tools

  • Trigger Claude Code, Cursor, or Copilot with a button
  • Navigate code and accept suggestions hands-free
  • Perfect companion for Aider, Codex CLI, or Roo Code
  • Lean back and let AI do the heavy lifting

Pro tip: Map RT to accept AI suggestions, LB+A to trigger inline completion

🎙️ Voice Input Setup

Combine with voice transcription for hands-free computing

  • Pair with VoiceInk or other Whisper-based apps
  • Map a button to start/stop voice recording
  • Full typing without touching a keyboard
  • Ideal for accessibility and RSI prevention

🎮 Spare Controller? Put It to Work

Don't let your old controllers collect dust

  • Repurpose Xbox One, Series X|S controllers
  • Give your PS5 DualSense a second life
  • Third-party controllers may work too
  • Finally a use for that extra controller

Accessibility

Alternative input for those who need it

  • Easier to grip than keyboard and mouse
  • Reduce repetitive strain injuries
  • Customizable to your specific needs
  • Open source and privacy-respecting

Screenshots

See the app in action with Xbox and DualSense controllers

Xbox Series X|S

Xbox Series X controller button mapping interface on macOS showing customizable keyboard shortcuts
Button Mappings Visual controller layout with all your button mappings at a glance
Xbox controller chord mapping - combine multiple buttons for keyboard shortcuts on Mac
Chord Mappings Combine multiple buttons for even more shortcuts
Xbox controller joystick to mouse cursor and scroll wheel settings on macOS
Joystick Settings Fine-tune mouse sensitivity, deadzone, and scroll speed
Xbox controller on-screen keyboard widget with quick text and terminal commands
On Screen Keyboard Widget Configure quick actions and on-screen keyboard settings
Xbox controller on-screen keyboard for typing without physical keyboard - couch computing
On-Screen Keyboard Type without reaching for your physical keyboard

DualSense (PS5)

PS5 DualSense controller button mapping interface on macOS showing customizable keyboard shortcuts
Button Mappings Full DualSense layout with all buttons configurable
PS5 DualSense chord mapping - combine multiple buttons for keyboard shortcuts on Mac
Chord Mappings Combine multiple buttons for even more shortcuts
PS5 DualSense joystick to mouse cursor and scroll wheel settings on macOS
Joystick Settings Fine-tune mouse sensitivity, deadzone, and scroll speed
PS5 DualSense on-screen keyboard widget with quick text and terminal commands
On Screen Keyboard Widget Configure quick actions and on-screen keyboard settings
PS5 DualSense touchpad settings - use touchpad as trackpad for mouse control on Mac
Touchpad Settings Configure touchpad sensitivity and gesture options
PS5 DualSense multi-touch touchpad gestures for scrolling and right-click on macOS
Multi-touch Touchpad Full gesture support for precise control
PS5 DualSense LED light bar color customization on macOS
LED Customization Set custom colors for the DualSense light bar
PS5 DualSense built-in microphone and mute button settings on macOS
Microphone Settings Configure the built-in microphone and mute button
PS5 DualSense on-screen keyboard for typing without physical keyboard - couch computing
On-Screen Keyboard Type without reaching for your physical keyboard

Troubleshooting

Solutions to common issues

Controller Not Detected

  1. Check Bluetooth connection in System Settings
  2. Forget the device and re-pair
  3. Restart the app
  4. Check controller battery level

Button Presses Not Working

  1. Verify Accessibility permissions (System Settings → Privacy & Security → Accessibility)
  2. Remove the app from the list (select it and click the minus button), then re-add it
  3. Restart the app after granting permissions
  4. Check enable/disable toggle in menu bar

Mouse/Scroll Issues

  1. Increase deadzone if joystick drifts
  2. Adjust sensitivity for desired speed
  3. Verify mapping is enabled in menu bar

Stuck Modifier Keys

  1. Press the physical modifier key on your keyboard
  2. Or restart the app to clear all held modifiers

App Won't Launch

  1. Check macOS version (requires 14.0+)
  2. Reset config: Delete ~/.xbox-controller-mapper/config.json
  3. Check Console.app for crash logs

FAQ

Answers to frequently asked questions

Connecting Your Controller

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"

General

Yes. The app is fully open source — you can verify exactly what it does. It doesn't connect to the internet, collect data, or log your inputs.

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 controllers and PlayStation 5 DualSense controllers. Both are fully supported via Apple's GameController framework.

DualSense controllers get additional features: full touchpad support with multi-touch gestures, LED color customization, and microphone button mapping.

The app uses Apple's GameController framework, which supports official Xbox and DualSense controllers. Third-party controllers may work if macOS recognizes them as compatible controllers, but compatibility varies.

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.

Mapping

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:

  • Quick tap → normal action
  • Quick double-tap → double-tap action
  • Hold past threshold → long-hold action

Yes. Clear all mappings from the button configuration. It will do nothing when pressed.

Joystick

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.

Technical

Profiles save to ~/.xbox-controller-mapper/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 & Use Cases

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.