Nathan Coulson

Controller Database

The Controller Database will be a database that can provide a svg image of the controller in question, as well as showing where on the image each axis/button is. As there are numerous gamepad/joysticks in the world, I would like to see this supported by the players who would make use of it.

Stage1: Identifying what controller is on the system

The first stage will be generating a key that can be used to look up the device in question. This key should be the same between any operating system platform.

I am familiar with 2 interfaces for controllers. USB, and the original gameport (probably about a million others exist in the wild).

USB, each device has a VendorID, and a ProductID. A key could be made up as follows:

As for the gameport, identification probably falls apart. I believe that it can be used to represent up to 4 axis's, and up to 4 buttons in most cases (or 2 devices, with 2 axis's, and 2 buttons each). Under linux, it is able to autodetect the Microsoft Sidewinder Joystick though on this interface.

Stage2: The database

The goal of this database, is to take the Stage1 Key, as well as the OS, and provide the following to the game in question

Cavets: It looks like axis/button configuration can change from OS to OS. I was using the XBox 360 wired controller to experiment with posibilities.

The left/right triggers on windows are mapped to one of the axis's on windows, while mapped as buttons on linux. The database will have to have different results for controllers that change between operating systems. I suppose it could be possible that a gamepad/joystick could behave differently between os's as well

There will also be cases where a controller is not yet added to the database. It should keep track of failed queries so that entries can be added in if desired.

Specifications

KEY=____[Bus][...]

For each device key,

Querying the db online

Querying the local db (if included w/ game)

Todo: