Title:
Show HN: ControllerKeys – System-wide controller-to-keyboard mapping for macOS
Body:
I built this because I wanted to "vibe code" from my couch with an Xbox controller and all my regular keyboard shortcuts.
Existing options fell short: Joystick Mapper hasn't been updated in years, Enjoyable was abandoned in 2014, Controlly lacks chord mappings and an on-screen keyboard, and Steam's controller mapping only works in games – not system-wide.
Key features:
- Map any button to keyboard shortcuts, modifiers, or combos
- Chord mappings (press multiple buttons → one action)
- Long-hold and double-tap for alternate actions
- Left stick → mouse, right stick → scroll
- Precision mode: hold a trigger (RT by default) for fine mouse control – makes pixel-accurate clicking easy
- Full DualSense touchpad support: tap, two-finger scroll, pinch-to-zoom with native macOS gestures
- DualSense LED customization and mic support (USB)
- Profile system for different workflows
On-screen keyboard widget:
This is more than just a keyboard – it's a mini command center you can trigger with any button:
- Full keyboard for typing without a physical keyboard
- App launcher: show/hide your favorite apps with one click
- Bookmark bar: websites display with favicon and title, open in default browser
- Quick commands: type text snippets or run terminal commands instantly
- Variable expansion: insert date/time, clipboard contents, current app name, etc.
The killer combo: pair this with whisper-based voice transcription (I use VoiceInk) and you have full computer control from a controller. No keyboard needed.
Using voice transcription, the on-screen keyboard widget is really more of a tool for easily jumping around apps and executing commands on your computer.
Technical notes:
- Native Swift/SwiftUI, Apple Silicon optimized
- Uses CGEvent API for input simulation (requires Accessibility permission)
- No network access, no data collection – source is open for security audit
- Signed and notarized by Apple
The app is $10 on Gumroad. Source is available on GitHub for transparency since it requires Accessibility permissions, but I'd appreciate purchases to support continued development.
Website: https://kevintang.xyz/apps/xbox-controller-mapper
GitHub: [your repo URL]
Gumroad: https://thekevintang.gumroad.com/l/xbox-controller-mapper
Happy to answer questions!
Tweet 1:
I wanted to vibe code from my couch. So I built ControllerKeys for macOS.
Map any controller button to keyboard shortcuts, system-wide. Here's how it works 🧵
Tweet 2:
Every button becomes a shortcut:
- D-pad → arrow keys
- Triggers → modifier keys (Shift, Ctrl)
- Bumpers → Cmd, Option
- Chord multiple buttons → complex shortcuts
Tweet 3:
Mouse control that actually works:
- Left stick → cursor
- Right stick → scroll
- Hold RT → precision mode for pixel-accurate clicks
- DualSense touchpad → tap, scroll, pinch-to-zoom
Tweet 4:
The on-screen keyboard widget is the secret weapon.
One button opens: app launcher, bookmark bar, quick commands, full keyboard.
Jump between apps. Open URLs. Run terminal commands. All from the controller.
Tweet 5:
Add voice transcription (I use @VoiceInkApp) and you've got full computer control without touching a keyboard.
$10 on Gumroad. Source on GitHub for transparency (it needs Accessibility permissions).
[link]
couch coding setup:
- xbox controller
- voice transcription
- mass produced 65 inch screen from costco
the mass produced 65 inch screen was already there. i just had to build an app that lets me use all my shortcuts from a controller.
[link]
the year is 2026. i mass produce software from my couch using only a ps5 controller and my voice. my mass produced software enables me to mass produce more software from my couch.
my contribution to the AI coding era: an app that lets you use an xbox controller as a keyboard
we're so back (on the couch)
"just use a keyboard"
the keyboard is 6 feet away. i am mass producing vibes. i will not be moving.
engineer brain: what if i mass produced a mass produced app so i could mass produce apps from mass produced furniture
stages of couch coding:
1. voice transcription for typing
2. realize you still need a mouse
3. build an entire app so your xbox controller becomes a mouse
4. realize you need shortcuts
5. the app now has chord mappings
6. add an on-screen keyboard
7. add an app launcher
8. add a bookmark bar
9. you mass produced a whole product
the real mass production was the apps we mass produced along the way
me mass producing code from my couch while my mass produced standing desk collects mass produced dust
Title:
ControllerKeys – Map Xbox/DualSense controllers to keyboard shortcuts system-wide
Body:
Hey r/macapps!
I built this app because I wanted to use my Mac from the couch with an Xbox controller. Existing tools were either abandoned (Enjoyable, Joystick Mapper) or only work in games (Steam).
**What it does:**
- Map any controller button to keyboard shortcuts (with modifier support)
- Chord mappings – press multiple buttons for one shortcut
- Left stick → mouse, right stick → scroll
- Precision mode (hold RT) for fine cursor control
- Full DualSense touchpad support: tap, two-finger scroll, pinch-to-zoom
- On-screen keyboard widget with app launcher, bookmarks, and quick commands
- Profile system for different setups
**Why I built it:**
I've been using voice transcription for coding and wanted a way to control everything else without reaching for a keyboard. This + VoiceInk = full computer control from the couch.
**Transparency:**
The app requires Accessibility permissions (for input simulation), so the source is available on GitHub if you want to audit it. Native Swift/SwiftUI, no network access, signed and notarized.
$10 on Gumroad: [link]
GitHub: [link]
Happy to answer any questions!
Title:
I built an app to control macOS with an Xbox/PS5 controller – map buttons to shortcuts, use joystick as mouse, on-screen keyboard widget
Body:
Wanted to use my Mac from the couch without a keyboard. Built an app that turns game controllers into a full input device.
Features:
- Any button → keyboard shortcut
- Chord mappings (multiple buttons = one action)
- Joystick mouse control with precision mode
- DualSense touchpad works as a real trackpad (tap, scroll, pinch-to-zoom)
- On-screen widget: app launcher, bookmarks, commands, full keyboard
Pair it with voice transcription and you don't need a physical keyboard at all.
Native SwiftUI, Apple Silicon optimized, source available for security audit since it needs Accessibility permissions.
[link]
Title:
I mass produced an app from my couch so I could mass produce more apps from my couch
Body:
I wanted to "vibe code" – use my Mac from the couch with voice transcription. But I still needed a mouse and keyboard shortcuts.
So I built ControllerKeys:
- Map controller buttons to any keyboard shortcut
- Joystick becomes mouse (with precision mode for accurate clicks)
- DualSense touchpad works with tap, scroll, pinch-to-zoom
- On-screen keyboard widget with app launcher, bookmarks, and terminal commands
Now my workflow is: Xbox controller + voice transcription + 65" TV. No keyboard needed.
The irony of mass producing an entire app just to avoid walking 6 feet to my desk is not lost on me.
$10 on Gumroad, source on GitHub (it needs Accessibility permissions so I wanted it auditable).
[link]
Title:
ControllerKeys – Native macOS app to map game controllers to keyboard/mouse input system-wide
Body:
Swift/SwiftUI app that maps Xbox and DualSense controllers to keyboard shortcuts, mouse movement, and scroll.
Features:
- Button → shortcut mapping with modifier support
- Chord mappings (multi-button combos)
- Joystick → mouse/scroll with configurable sensitivity
- Full DualSense touchpad support (tap, scroll, pinch gestures)
- On-screen keyboard widget
- Profile system
Uses CGEvent API for input simulation. No network access, no telemetry. Source available for audit since it requires Accessibility permissions.
Built this to code from my couch with voice transcription.
[GitHub link]
Title:
Update: ControllerKeys now supports PS5 DualSense touchpad, on-screen keyboard widget, and more – still vibe coding from my couch
Flair: Built with Claude
Body:
Some of you might remember my post from a couple months ago – I built an app to vibe code from my couch with an Xbox controller.
Well, I've been vibe coding with Claude ever since, and the app has grown quite a bit. Here's what's new:
**DualSense (PS5) Controller Support**
- Full touchpad support – tap to click, two-finger scroll, pinch-to-zoom
- It actually works like a real trackpad now
- LED color customization and mic support over USB
**On-Screen Keyboard Widget**
- Trigger it with any button
- Full keyboard for typing
- App launcher – switch apps with one click
- Bookmark bar – websites with favicons, click to open
- Quick commands – type text or run terminal commands instantly
**The setup now:**
Xbox/PS5 controller + voice transcription (I use VoiceInk) = full computer control from the couch. No keyboard needed.
The on-screen widget is really more of a command center at this point – jumping between apps, opening bookmarks, running git commands, all without leaving the couch.
Still open source, still built with Claude Code. The touchpad gesture recognition was a fun one to figure out with Claude – Apple's GameController framework only gives you single-touch, so we had to parse raw HID reports to get two-finger gestures working.
[video if you have one]
https://www.kevintang.xyz/apps/xbox-controller-mapper
Alt title options:
I've been vibe coding from my couch for 2 months – here's the update to ControllerKeys
Update: The Xbox controller vibe coding app now has PS5 touchpad support and an on-screen command center
Title:
Open source SwiftUI app: Xbox/DualSense controller → keyboard/mouse mapping for macOS
Body:
Sharing a project I've been working on – a native macOS app that maps game controller input to keyboard shortcuts and mouse control.
**Technical highlights:**
- SwiftUI with AppKit interop for menu bar
- GameController.framework for Xbox/DualSense input
- CGEvent API for keyboard/mouse simulation
- CoreBluetooth for DualSense LED control over Bluetooth
- HID reports for DualSense touchpad multi-touch parsing
The DualSense touchpad implementation was interesting – Apple's GameController framework only exposes single-touch, so I had to read raw HID reports to get two-finger gestures working (pinch-to-zoom, two-finger scroll).
Source is available since the app requires Accessibility permissions and I wanted it to be auditable.
Happy to discuss the implementation if anyone's curious about GameController framework or CGEvent.
[GitHub link]
Product Name:
ControllerKeys
Tagline (60 chars max):
Use your Xbox or PS5 controller as a full macOS input device
Alt taglines:
Vibe code from your couch with a game controller
Map game controllers to keyboard shortcuts on macOS
Description:
ControllerKeys turns your Xbox or PS5 DualSense controller into a complete input device for macOS – not just for games, but system-wide.
🎮 **Button Mapping**
Map any button to keyboard shortcuts with full modifier support. Use chord mappings (multiple buttons → one action), long-hold for alternate actions, and double-tap detection.
🖱️ **Mouse Control**
Left joystick controls the cursor, right joystick scrolls. Hold a trigger for precision mode – makes pixel-accurate clicking easy. DualSense touchpad works as a real trackpad with tap, two-finger scroll, and pinch-to-zoom.
⌨️ **On-Screen Command Center**
One button opens a widget with:
- Full keyboard for typing
- App launcher to switch apps instantly
- Bookmark bar with favicons
- Quick commands for text snippets and terminal commands
🎨 **DualSense Extras**
Customize LED colors, control player LEDs, and use the built-in microphone (USB mode).
📁 **Profiles**
Save multiple configurations for different workflows.
**Why I built this:**
I wanted to code from my couch using voice transcription, but still needed mouse control and keyboard shortcuts. Existing tools were abandoned or only worked in games. Now I use this daily with VoiceInk for full hands-free computer control.
**Open Source for Transparency:**
The app requires Accessibility permissions to simulate input, so the source code is available on GitHub for security audit. Native Swift/SwiftUI, no network access, no data collection.
Maker Comment:
Hey Product Hunt! 👋
I built ControllerKeys because I wanted to "vibe code" from my couch – using voice transcription for typing and a controller for everything else.
The existing options were either abandoned (Enjoyable hasn't been updated since 2014, Joystick Mapper is years out of date) or only work within games (Steam). Nothing worked system-wide with the features I needed.
The DualSense touchpad support was a fun challenge – Apple's GameController framework only exposes single-finger touch, so I had to parse raw HID reports to get two-finger gestures working (pinch-to-zoom, two-finger scroll).
The on-screen keyboard widget evolved from "I need to type sometimes" into a full command center – I use it more for launching apps and running terminal commands than actual typing now.
Happy to answer any questions about the implementation or use cases!
Topics/Categories:
- Mac
- Productivity
- Developer Tools
- Open Source
- Accessibility
First Comment (for engagement):
What would you use a controller-to-keyboard mapper for? I'm curious what workflows people come up with beyond couch coding!