Steam Controller Support


Steam Controller

The Valve Steam controller is a strange beast, intended as it is to allow control of games which never expected to use a controller. Because of this the actual hardware and the way it interacts with the system is a little different to a regular game controller, and we have to use an additional driver which pulls information from the controller and pushes it to a virtual device to which we then bind.

The steam controller userland driver can be found on github at SteamController, you need to follow the instructions there to obtain and build the driver. You’ll need to add appropriate udev rules as specified on that page.

Once you have it, there’s a script ‘scripts/’ directory of the driver which you must run as root:

sudo ~/viridia-env/bin/python ../scripts/ start

(In this case I’ve installed into my virtual environment, so I need to specify the full path to the Python interpreter)

This will run in the background and create a virtual joystick device, the steam controller support in approxeng.input finds this device automatically just the same way it finds ‘real’ controllers.

class approxeng.input.steamcontroller.SteamController(dead_zone=0.1, hot_zone=0.05)[source]

Wireless steam controller. Note that you must be running the xbox driver for the steam controller first, otherwise this won’t pick up any appropriate devices. Once this is running though it works just fine.

__init__(dead_zone=0.1, hot_zone=0.05)[source]

Create a new steam controller

static registration_ids()[source]

list of (vendor_id, product_id) for this controller