Re: Improvements to the GameController API
Sam Lantinga <[email protected]> Tue, 27 Dec 2016 01:53:30 -0800
| Newsgroups | gmane.comp.lib.sdl |
|---|---|
| Message-ID | <CACC3sbF5=j3dhE2=EGsp+Q2trWVoKi8m7+0+0_mtqG2Uy5D1UQ@mail.gmail.com> |
I've implemented support for inverted axes and independently binding separated halves of axes: https://hg.libsdl.org/SDL/rev/5ea5f198879f The syntax for binding half of a game controller axis is: -leftx +leftx The syntax for binding half of a joystick axis is: +a0 -a0 The syntax for inverting an axis is: a0~ The controllermap test program has been updated to generate the new syntax controller config if it detects the appropriate binding types, and allows you to map a D-Pad as a thumbstick and vice versa. Please let me know if there are any problems with this! On Thu, Dec 1, 2016 at 1:17 PM, RodrigoCard <[email protected]> wrote: > > > > Sentmoraap wrote: > > Hello, > > the gamepad API is far better than a "i have X buttons and Y axes" API and > a gamepad-specific API for having good default mappings and consistent > mappings from one gamepad to another and from one OS to another. > > Some issues has already been addressed: > http://sdl.5483.n7.nabble.com/Extending-GameController- > mapping-syntax-td38149.html > https://bugzilla.libsdl.org/show_bug.cgi?id=2181 > https://github.com/cxong/SDL_JoystickButtonNames > > There is already someone assigned to this bugzilla, but I am willing to > contribute if there are improvements which everyone agrees to. > I also would like to have more informations on some design decisions. > > > The current syntax does not allow mapping half an axis. On some controller > the D-Pad is exposed as 2 axes, and the triggers are halves of the same > axis. > Sometimes you also need to invert an axis. > There is a proposal to have a0+, a0- for halves and a0i (or !a0, ~a0) for > an inverted axis. > This issue is addressed in the first two links. > There is someone assigned, but I have not seen anything new since november > 2013. > > They also discuss about dead zones. I am not sure if handling deadzones > fits with the purpose of SDL2 GameController. The game could handle this. > > We have some mappings defined in SDL_gamecontrollerdb.h, and the project > SDL2 game controller. Do we need SDL_gamecontrollerdb.h, can't we just use > a text file, provided with the game, which will be easily updatable by the > user ? > > For now the controllers are identified by GUID, which is an OS-dependent > number. So we have to provide mappings for every supported platform. The > GUID contains the vendor id and the device id. We could provide mappings > with the vendor id and the device id instead, assuming the OSes sees the > buttons and the axes in the same order. We just have to take into account > OS differences (d-pad as axes on Linux etc...). We could provide > platform-specific mappings only when it's needed. > > Linux has an API which provides mappings in a way similar to SDL2 Gamepad. > https://www.kernel.org/doc/Documentation/input/gamepad.txt > We could use it to provide default mappings when it's not provided by the > database. We have to recognize if the mappings complies with the new API. > If all buttons and axes used are contiguous, it's likely that the driver > did not map events according to the gamepad layout. > > About the labels. For now we can show the Xbox equivalent, show generic > button names, or both. We could add a field "labels:something", which could > be generic, xbox, playstation, etc.... This field will just be ignored by > the current version. We could just have a fixed set or another database > containing the name and color of buttons. > > Thoughts on those ? > > Regards. > > > > pretty sure SDL_GameController syntax needs some additions, > flipping the axes is the most important of them. > > Steelseries MFI controllers seems to have an inverted Y axis on Mac. Fully > Mapping to the GameController API is not possible with these controller > because of this. > > > Also the Button Names seems to be a neat idea, anyone working on this? > > > ------------------------------ > > Rodrigo Cardoso Rocha > @RodrigoRodrigoR - twitter.com/RodrigoRodrigoR > Chibata Creations - chibatacreations.com > > _______________________________________________ > SDL mailing list > [email protected] > http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org > > _______________________________________________ SDL mailing list [email protected] http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org