VIBE CONTROLLER
github.com/SunkyYang/vibe-controllerGitHub

Your DualSense is now a microphone.

Pull R2, talk, pull again — the words land wherever your cursor is. A free, open-source menu bar app that turns a PS5 controller into a push-to-talk voice input device for macOS.

Download for macOS View on GitHub ↗ free & open source · MIT · Apple Silicon
L3 HUD Hover a control to read its mapping — or hold R2 and see what happens.

hover the controls · hold R2 · this is the app’s L3 button map, on the web

Four parts, one habit

A game controller for dictation. Seriously? — Seriously.

01 · The Trigger

An analog trigger is a perfect talk button.

The controller was already in arm’s reach, with a spring-loaded trigger your index finger knows by muscle memory. Pull R2 and OpenWhispr starts listening; pull it again and the transcribed words are injected wherever your cursor sits.

Debounced with hysteresis, so a lazy half-pull never double-fires.

R2 pulled → dictation on · pulled again → text injected
02 · The Light

The light bar is the status line.

Breathes blue while recording and flares with your voice level. Turns amber while L2 is held, so you always know which layer you’re on. With the optional Claude Code hook, it even mirrors what Claude is doing.

You stop checking the screen surprisingly fast.

Breathing bluedictation is live, brightness follows your voice
AmberL2 held — combo layer armed
Violet pulseClaude Code is running a tool (optional hook)
no HUD, no glancing — state lives on the hardware
03 · The Rumble

Haptics close the loop.

A soft tick when recording starts, a double-tap when it stops, distinct patterns for mode changes and long presses. Your hand learns the vocabulary in a day — confirmation without looking, which is the whole point of dictating from the couch.

tick · double-tap · heavy thump — each event has a signature
04 · The Sticks

Sticks are a mouse. The couch is a desk.

Left stick glides the cursor, right stick scrolls, clicks and drags, the touchpad right-clicks. Press L3 any time to pop a click-through HUD of every mapping — the same one living at the top of this page.

left stick → cursor · right stick → scroll · □ → click
The Setup

Clone, build, pull the trigger.

A game-controller icon appears in the menu bar. Plug in the DualSense — or pair over Bluetooth with a long press on PS + Create — then press R2, dictate, press R2 again.

RequiresmacOS 11.3+ · Swift 5.9+ · a PS5 DualSense (USB or Bluetooth)
CompanionOpenWhispr on Option+` in tap mode — does the actual transcription
Autostartoptional LaunchAgent — see docs/install.md
Footprint~200 lines of Swift · menu bar only, no Dock icon, no window
LicenseMIT · source on GitHub
$ git clone https://github.com/SunkyYang/vibe-controller.git
$ cd vibe-controller
$ swift build -c release
$ ./.build/release/VibeController