86 lines
4.1 KiB
Markdown
86 lines
4.1 KiB
Markdown
# SDL_GameControllerDB
|
|
|
|
[](https://travis-ci.org/gabomdq/SDL_GameControllerDB)
|
|
|
|
A community source database of game controller mappings to be used with SDL2 Game Controller functionality.
|
|
|
|
## SDL Variants
|
|
gamecontrollerdb_205.txt: For games or engines using the SDL >= 2.0.5 format. There are no range or inversion modifiers (+,-,~).
|
|
|
|
gamecontrollerdb_204.txt
|
|
For games or engines using the SDL 2.0.4 format. GUIDs are different depending on the platform. Note that SDL > 2.0.4 can still read this format.
|
|
|
|
## Create New Mappings
|
|
A mapping looks like this :
|
|
```
|
|
030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
|
|
```
|
|
It is comprised of a controller GUID (`030000004c050000c405000000010000`), a name (`PS4 Controller`), button / axis mappings (`leftshoulder:b4`) and a platform (`platform:Mac OS X`).
|
|
|
|
There are a few different tools that let you create mappings.
|
|
|
|
### [SDL2 ControllerMap](https://www.libsdl.org/download-2.0.php)
|
|
The controllermap utility provided with SDL2 is the official tool to create these mappings, it runs on all the platforms SDL runs (Windows, Mac, Linux, iOS, Android, etc).
|
|
|
|
### [Steam](http://store.steampowered.com)
|
|
In Steam's Big Picture mode, configure your joystick. Then look in `[steam_installation_directory]/config/config.vdf` in your Steam installation directory for the `SDL_GamepadBind` entry. It is one of the last entries, it will look something like this.
|
|
|
|
```
|
|
"SDL_GamepadBind" "030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,"
|
|
```
|
|
|
|
Unfortunately, **Steam does not ouput the platform field**, so you will need to add it manually. At the end of the generated entry, add `platform:Windows,` or `platform:Mac OS X,` or `platform:Linux,`.
|
|
|
|
|
|
### [SDL2 Gamepad Tool](http://www.generalarcade.com/gamepadtool/)
|
|
Third party cross-platform tool (Windows, macOS and Linux).
|
|
|
|
Setup your controller and copy the ouput entry. The tool currently doesn't output SDL 2.0.5 GUIDs, but that is fine as SDL still supports these GUIDs. I will convert older GUIDs in pull requests as well.
|
|
|
|
## Usage
|
|
Download gamecontrollerdb.txt, place it in your app's directory and load it.
|
|
|
|
For example :
|
|
```
|
|
SDL_GameControllerAddMappingsFromFile("gamecontrollerdb_205.txt");
|
|
```
|
|
|
|
# For Contributors
|
|
## Check Your Mappings
|
|
Before submitting a new Pull Request, please run the `check.py` tool to make sure everything is in order. Run it with:
|
|
```
|
|
python check.py gamecontrollerdb_204.txt
|
|
python check.py gamecontrollerdb_205.txt
|
|
```
|
|
|
|
If no errors were generated you can (please) send a Pull Request! Tests are automatically run on Pull Requests, so you'll easily see if there is an issue.
|
|
|
|
### New Checks
|
|
- Tests are run to ensure a platform is present.
|
|
- Tests are run to make sure inversion and range modifiers are applied to axis fields.
|
|
- Tests are run to check for duplicates.
|
|
|
|
### Options
|
|
```
|
|
usage: check.py [-h] [--sort] [--convert_guids] [--remove_dupes]
|
|
[--add_missing_platform]
|
|
input_file
|
|
|
|
positional arguments:
|
|
input_file database file to check (gamecontrollerdb.txt)
|
|
|
|
optional arguments:
|
|
-h, --help show this help message and exit
|
|
--sort sort the database on success
|
|
--convert_guids convert Windows and macOS GUIDs to the newer SDL 2.0.5
|
|
format
|
|
--remove_dupes automatically remove duplicates
|
|
--add_missing_platform
|
|
adds a platform field if it is missing (on older pre
|
|
2.0.5 entries). Skips checks!
|
|
```
|
|
|
|
## References
|
|
|
|
* [SDL2](http://www.libsdl.org)
|
|
* [SDL_GameControllerAddMappingsFromFile](http://wiki.libsdl.org/SDL_GameControllerAddMappingsFromFile)
|