This tool provides support for the Steam Controller (2026) for non Steam games, with full button support and status updates via built in tray app. This is done by reading straight from the HID device itself and spawning a virtual controller per connected physical controller.
It provides sane defaults with buttons mapped like the Xbox controllers, all capacitive "buttons" disabled and paddles mapped to shoulder buttons.
This project is not affiliated with, endorsed by, or associated with Valve in any way. All trademarks and brand names belong to their respective owners.
| OS | Tooltip |
|---|---|
| Linux | ![]() |
| Windows | ![]() |
- Connectivity via cable, puck or Bluetooth
- Multiple pucks simultaneously
- Mix and match connectivity styles
- Works on Linux and Windows
- Disables "Lizard Mode" (the default mouse controls when not using steam)
- Status updates in tray app, this includes:
- Available controller slots
- Charging state
- Battery level
- Connectivity
- All digital and analog buttons, sticks and trackpads
- Support for all buttons, including:
- All digital buttons, including paddles
- Both sticks
- Both trigger
- Both trackpads
- Switch between default and Nintendo layout (swap A/B X/Y)
- Provide custom, non-Xbox buttons for paddle/capacitive buttons mapping
- Read and send gyro/accelerometer events
- Toggle mouse/stick/dpad behaviour for trackpads
- Store controller configurations
- Provide AUR package
- Publish on crates.io
- Expand informations provided in tray
- Show battery status of lowest controller in tray icon
- Support rumble/haptics
- Shutdown via tool
- Support for MacOS
- Optionally "shadow" default steam controller
uinputkernel module
- ViGEm by Nefarius, install guide here
Download the latest release and store it in an easy to reach place. After that, just start it. The tool works, if the trackpads no longer control the mouse and/or a tray icon appears.

