DualSense silhouette beside a neon pink Vibe City sign
omegaG — DualSense controller badge

formerly DS4CC — the shortcut mapper, preserved

omegaG

Turn a PlayStation controller into a shortcut mapper for terminal-first development.

Same package and binary (ds4cc); Windows config path preserved — MIT attribution intact.

Linux and Windows shortcut mapping  ·  DualSense & DualShock 4 — USB + Bluetooth  ·  tmux / Claude Code keybindings  ·  Free & open source  ·  Built with Rust

Windows-only lightbar feedback

Your agents, in color.

With the optional Windows-only Codex runtime enabled, six chat slots live behind the PS modifier. The controller lightbar can project the selected slot’s state. The controls below are a website illustration of those documented states, not a live controller or HID connection.

selected slot 3 · thinking

Interactive illustration

1 2 3 4 5 6

Selected slot 3 status: thinking

slot source — recent · pinned · priority · custom

In the Windows runtime, a controller lightbar is lossy: it shows the selected slot, not six colors at once. This status projection is not available on Linux. DS4 has no player or mute LEDs.

Optional Windows-only Codex controller runtime

One modifier.
The whole session.

[01]

Hold PS for the modifier layer

While PS is held the controller goes exclusive: L1 / R1 cycle the six chat slots, Share starts a blank thread, Options forks it, the touchpad selects — and a second press within 350 ms activates. Release PS to return to the generic mapper: Share and Options are unmapped by default; touchpad press clicks while touchpad mode is enabled and is otherwise configurable, with no default action.

[02]

Core actions under your thumbs

Cross and Circle are the one-shot accept / decline for the armed approval — nothing else can fire them. Square toggles the priority tier, Triangle sends the bounded composer, and, when a voice command is configured, L2 controls push-to-talk: a second press within 350 ms latches hands-free, the next press stops.

[03]

Reasoning on the D-pad

D-pad up / down steps through the model-advertised reasoning efforts — stay cheap on simple turns, push deeper when it counts. The right stick’s four cardinal directions fire your configured actions behind a dead zone with hysteresis; L3 and R3 run your first command and skill.

Close-up DualSense silhouette beside a pink Vibe City sign omegaG | formerly DS4CC — 2026 Configured voice dictates. Controller navigates. Keyboard optional when configured.

Specifications

Specs

Platform
Windows 10 / 11 — hidden console, tray icon. Linux: Ubuntu 22.04+ and Arch with feature-parity mapping (evdev / uinput).
Controllers
DualSense and DualShock 4. USB and Bluetooth; USB takes priority, Bluetooth is the automatic fallback.
Feedback
Static lightbar color and mic LED are supported by the mapper. Codex status-to-lightbar projection is an optional Windows-only feature.
Mapping
Every configurable button resolves to a key combo, a chord sequence, a tmux action, a Claude Code action, or a named launcher:<name> text inject (optional Enter). No default button is pre-wired to a launcher. On DualSense, touchpad swipe moves the cursor; DualShock 4 uses left-stick mouse because coordinates are unsupported. On both controllers, touchpad press clicks while touchpad handling is enabled. Right stick scrolls, vertical + horizontal; mute toggles the system microphone.
Detection
tmux and Claude Code keybindings are detected through WSL on Windows and natively on Linux. Missing pieces degrade gracefully to documented defaults.
Codex runtime
Windows-only, optional, and disabled by default. It supervises a local codex app-server --stdio. On Linux the configuration still parses, but enabling it logs a warning and the runtime is ignored.
Config
TOML. The preserved Windows path is %APPDATA%\ds4cc\config.toml. Linux uses $XDG_CONFIG_HOME/ds4cc/config.toml, falling back to ~/.config/ds4cc/config.toml when $XDG_CONFIG_HOME is unset. Every setting is optional — defaults work out of the box.
Stack
Rust 2024 edition, tokio, hidapi. Package and binary name remain ds4cc. Input read 5 ms, output refresh 100 ms. MIT license.

Default map — fixed

D-padarrow keys · hold to repeat Right stickscroll, both axes Left stick / DualSense touchpad swipemouse cursor Touchpad pressleft-click on DualSense and DS4 L2 (hold)Ctrl+Win — usable for configured push-to-talk Mutetoggle system mic

Default map — configurable

Cross ×enter Circle ○escape Triangle △tab Square □tmux new-window L1 / R1tmux prev / next window R2tmux kill-window L3ctrl+t R3ctrl+u — clear line Share / Optionsunmapped Touchpad buttonunmapped when touchpad mode is disabled