Skip to content

universe controller

Controller macros: paddles and spare buttons bound to actions

Usage: universe controller [OPTIONS] <COMMAND>

Connected pads with their buttons, then the macros and presets

Usage: universe controller ls [OPTIONS]

Run the macro engine (the launcher and a game’s unit start it themselves)

Usage: universe controller watch [OPTIONS]
  • --json: One JSON object per line on stdout, commands on stdin.
  • --wait: Wait for the running watcher to end instead of exiting at once.

Bind an action to a button

Usage: universe controller bind [OPTIONS] <FAMILY> <BUTTON> <TRIGGER> <ACTION>
  • <FAMILY>: Family: dualsense-edge, xbox-elite, … or * for every pad.
  • <BUTTON>: Button: paddle_left, fn_right, guide, ….
  • <TRIGGER>: press or hold. One of press, hold.
  • <ACTION>: volume_up, volume_down, mute, screenshot, mangohud, stop, keys, command.
  • --keys <KEYS>: For keys: the combo, e.g. Super_L+F12.
  • --command <COMMAND>: For command: run with sh -c.

Remove a button’s macro (both triggers when none is given)

Usage: universe controller unbind [OPTIONS] <FAMILY> <BUTTON> [TRIGGER]
  • <FAMILY>
  • <BUTTON>
  • [TRIGGER]: One of press, hold.

Press a button on the pad: its code becomes the slot’s

Usage: universe controller learn [OPTIONS] <FAMILY> <SLOT>
  • <FAMILY>
  • <SLOT>: The slot the pressed button will drive.

Forget a learned button (the shipped codes apply again)

Usage: universe controller forget [OPTIONS] <FAMILY> <SLOT>
  • <FAMILY>
  • <SLOT>

A pad as tests/pads records it: ids, keys, axis ranges, driver, HID report descriptor and what the modules see (SDL3’s view)

Usage: universe controller dump [OPTIONS] [ID]
  • [ID]: A pad’s id from controller ls; every pad when none.
  • --walk: Ask for each button, stick and trigger in turn and record what the pad reports for it.

Drop a Bluetooth pad’s link and bring it back, then tell the running game’s modules (a cable’s pad has to be re-plugged)

Usage: universe controller reconnect [OPTIONS] [ID]
  • [ID]: A pad’s id from controller ls, or all. Default all.