|
ce77966d
|
2020-11-27T10:44:49
|
|
Fixed RAWINPUT_IsDevicePresent() not returning TRUE for Xbox One controllers
|
|
8a449de2
|
2020-11-27T10:44:47
|
|
Fixed Xbox 360 wireless controller being picked up by WGI when it's being managed by RAWINPUT
|
|
37c9e4af
|
2020-11-27T06:03:15
|
|
Fixed processing WM_INPUT_DEVICE_CHANGE at startup
|
|
248fc75b
|
2020-11-27T05:53:56
|
|
Correlate just based on buttons, joystick axes are not as precise and could potentially cause incorrect uncorrelation.
It's okay if the triggers aren't precise until someone presses a button on their controller.
|
|
e7e615de
|
2020-11-27T05:53:54
|
|
Removed extraneous windows message pumping
Most of the raw input events are dispatched in the main windows message loop. We only dispatch device change messages separately when we need them to be completely up to date.
|
|
2931eccd
|
2020-11-27T05:53:52
|
|
Fixed detecting Bluetooth raw input devices, which have device names longer than 128 characters
|
|
849ce803
|
2020-11-27T05:53:50
|
|
Renamed SDL_JOYSTICK_RAWINPUT_GAMING_INPUT to SDL_JOYSTICK_RAWINPUT_WGI
|
|
219a28dd
|
2020-11-27T03:45:05
|
|
Fixed D-pad uncorrelating raw input controllers (thanks Jimbly!)
|
|
3fbff2a4
|
2020-11-26T10:47:33
|
|
SDL_rawinputjoystick.c: fix ambiguous 'else' warning
src/joystick/windows/SDL_rawinputjoystick.c: In function 'RAWINPUT_HandleStatePacket':
src/joystick/windows/SDL_rawinputjoystick.c:1343:9: warning: suggest explicit braces to avoid ambiguous 'else'
|
|
845b9033
|
2020-11-25T16:46:42
|
|
Implemented trigger rumble for raw input controllers
|
|
9ec2cf56
|
2020-11-25T10:31:59
|
|
Fixed building with Windows.Gaming.Input enabled
|
|
9fc4a4c9
|
2020-11-24T22:25:26
|
|
Revamped Xbox One HIDAPI init sequence
Added support for querying the controller serial number on newer firmware
|
|
268aa456
|
2020-11-23T20:26:28
|
|
Fixed compiling with SDL_JOYSTICK_RAWINPUT disabled
|
|
5b3616c3
|
2020-11-23T18:24:05
|
|
Generalized the raw input controller driver and moved XInput/WGI detection into it for XInput devices
This fixes bad report parsing for various newer Xbox controllers, and this driver is now preferred over XInput, since it handles more than 4 controllers.
|
|
fcb21aa8
|
2020-11-17T10:30:20
|
|
Added API for sensors on game controllers
Added support for the PS4 controller gyro and accelerometer on iOS and HIDAPI drivers
Also fixed an issue with the accelerometer on iOS having inverted axes
|
|
8e312a6a
|
2020-11-12T15:56:33
|
|
Fixed detecting Bluetooth XInput controllers on Windows
|
|
e0018d08
|
2020-11-12T14:23:56
|
|
Fixed Windows build
|
|
3160c7d6
|
2020-11-11T19:43:02
|
|
Fixed bug 5327 - When direct input fails to load, but a controlller is plugged in through another api, an access violation happens.
Bart van der Werf
When directinput fails to load, but a controlller is plugged in, an access violation happens.
This is due to IEventHandler_CRawGameControllerVtbl_InvokeAdded calling SDL_DINPUT_JoystickPresent which does not check if dinput is assigned signalling initialization of directinput.
|
|
502cfe31
|
2020-11-11T19:39:46
|
|
Fixed bug 5332 - WGI: Fix wrong level of indirection and implicit truncating cast.
Joel Linn
This fixes two types of MSVC compiler warnings.
- One parameter in the function signatures of two WGI event handlers had one level of indirection too much (and did not match Windows SDK headers). The indirection was cast away so it still worked.
- size_t was implicitly cast to UINT32 for a number of (constant) string lengths.
|
|
1e2caac5
|
2020-11-11T18:57:37
|
|
Added SDL_JoystickRumbleTriggers() and SDL_GameControllerRumbleTriggers()
|
|
b6238c87
|
2020-11-11T14:48:23
|
|
Don't try to build the RAWINPUT driver if HIDAPI is disabled
|
|
4ea1a10b
|
2020-11-07T02:49:22
|
|
Added stub controller LED functions for WGI and RAWINPUT (thanks meyraud!)
|
|
e555d453
|
2020-11-05T11:07:54
|
|
Added SDL_JoystickHasLED
Currently, this is only supported by the PS4 HIDAPI driver.
|
|
ddc0727b
|
2020-10-27T09:00:42
|
|
Fixed implicit memcpy() when building for ARM64 on Windows (thanks Seigo!)
|
|
b1626295
|
2020-07-08T17:28:34
|
|
cmake: Fix building with -DSDL_HAPTIC=Off
|
|
efe09359
|
2020-06-15T10:31:16
|
|
Fix compile without DIRECTX
|
|
eea0b0e0
|
2020-06-02T17:08:31
|
|
Fixed bug 5168 - Memory leak in RAWINPUT_JoystickOpen
meyraud705
Variable 'hwdata' is not freed in RAWINPUT_JoystickOpen if device->driver->OpenJoystick() fails.
|
|
ac1f174a
|
2020-06-02T17:02:37
|
|
Fixed bug 5167 - Memory leak in GuessXInputDevice
meyraud705
Variable 'devices' is not freed if function GuessXInputDevice, in SDL_xinputjoystick.c, return early.
|
|
2db04947
|
2020-05-29T14:48:05
|
|
Fixed variable names to be consistent across functions
|
|
345b4d7e
|
2020-05-29T13:37:21
|
|
Fixed bug 5161 - Autodetect controller mappings based on the Linux Gamepad Specification
Jan Bujak
I wrote a new driver for my gamepad on Linux. I'd like SDL to support it out-of-box, as currently it just treats it as a generic joystick instead of a gamepad. From what I can see the only way to do that is to either 1) pick one of the already supported controllers' PID, VID and button layouts and have my driver send that (effectively lying that it's something else), or 2) submit a preconfigured, hardcoded mapping to SDL.
Both of those, in my opinion, are silly when we already have the Linux Gamepad Specification which standarizes this:
https://www.kernel.org/doc/html/v4.15/input/gamepad.html
Unfortunately SDL doesn't make use of it currently. So I've took it upon myself to add it; patch is in the attachments.
Basically what the patch does is that if SDL finds no built-it controller mappings for a given joystick it then asks the joystick backend to autodetect it, and that uses the relevant evdev bits to figure out which button/axis is which. (See the specs for more details.)
With this patch applied my own driver for my controller works out-of-box with SDL with no extra configuration and is correctly recognized as a gamepad; this is also going to be the case for any other driver which follows the Linux Gamepad Specification.
|
|
68777406
|
2020-05-20T16:58:33
|
|
windows: Fix calls to CoCreateInstance() so last parameter is a LPVOID *.
|
|
83cddd2e
|
2020-04-30T11:57:29
|
|
Add SDL_JoystickSetLED.
Currently, this is only supported by the PS4 HIDAPI driver.
|
|
01fd8130
|
2020-04-23T11:13:02
|
|
Fixed compiler warning
|
|
4727f794
|
2020-04-23T10:13:17
|
|
Don't use the WGI driver if another driver is already handling the joystick
|
|
6ca7f510
|
2020-04-23T09:35:32
|
|
Fixed crash trying to get battery status on some devices
|
|
aba27928
|
2020-04-18T21:41:37
|
|
Added a Windows Gaming Input joystick driver
This driver supports the Razer Atrox Arcade Stick
Some of the quirks of this driver, inherent in Windows Gaming Input:
* There will never appear to be controllers connected at startup. You must support hot-plugging in order to see these controllers.
* You can't read the state of the guide button
* You can't get controller events in the background
|
|
c302c1ab
|
2020-04-13T13:24:19
|
|
Fixed build
|
|
bf87604e
|
2020-04-13T12:33:29
|
|
Fixed rare crash when unplugging Xbox controller on Windows
|
|
3cb62d52
|
2020-04-07T11:17:52
|
|
Fixed setting the controller name for the RAWINPUT driver
|
|
88cecee4
|
2020-04-07T10:14:12
|
|
Fixed build warning
|
|
50cb8e0f
|
2020-04-07T10:13:08
|
|
Fixed deadlock in new raw input joystick code
The appropriate locking is done elsewhere, this prevents inverted lock acquisition
|
|
b6afbe63
|
2020-04-07T09:38:57
|
|
Added SDL_log.h to SDL_internal.h so logging is available everywhere
|
|
417713a7
|
2020-03-20T19:49:19
|
|
Probable fix for compile errors on Mac OS and (non-VS) Win32
|
|
dc36f133
|
2020-03-20T19:49:15
|
|
Backed out changeset c29d04c3fa49
|
|
2db65a7f
|
2020-03-20T19:47:46
|
|
Fixed compile warnings
|
|
543994b1
|
2020-03-16T12:25:02
|
|
Fixed bug 4477 - Support more than 4 XInput-capable devices on Windows
Jimb Esser
Add new RawInput controller API, and improved correlation with XInput/WGI
Reorder joystick init so drivers can ask the others if they handle a device reliably
Do not poll disconnected XInput devices (major perf issue)
Fix various cases where incorrect correlation could happen
Simple mechanism for propagating unhandled Guide button presses even before guaranteed correlation
Correlate by axis motion as well as button presses
Fix failing to zero other trigger
Fix SDL_HINT_JOYSTICK_HIDAPI not working if set before calling SDL_Init()
Add missing device to device names
Disable RawInput if we have a mismatch of XInput-capable but not RawInput-capable devices
Updated to SDL 2.0.13 code with the following notes:
New HID driver: xbox360w - no idea what that is, hopefully urelated
SDL_hidapijoystick.c had been refactored to couple data handling logic with device opening logic and device lists caused some problems, yields slightly uglier integration than previously when the 360 HID device driver was just handling the data.
SDL_hidapijoystick.c now often pulls the device off of the joystick_hwdata structure for some rumble logic, but it appears that code path is never reached, so probably not a problem.
Looks like joystick_hwdata was refactored to not include a mutex in other drivers, maintainers may want to do the same refactor here if that's useful for some reason.
Something changed in how devices get names, so getting generic names.
Had to fix a (new?) bug where removing an XInput controller caused existing controllers (that moved to a new XInput index) to get identified as 0x045e/0x02fd ("it's probably Bluetooth" in code), rendering the existing HIDAPI_IsDevicePresent and new RAWINPUT_IsDevicePresent unreliable.
|
|
4dea340c
|
2020-03-16T12:23:38
|
|
Fixed bug 4477 - Support more than 4 XInput-capable devices on Windows
Jimb Esser
Add new RawInput controller API, and improved correlation with XInput/WGI
Reorder joystick init so drivers can ask the others if they handle a device reliably
Do not poll disconnected XInput devices (major perf issue)
Fix various cases where incorrect correlation could happen
Simple mechanism for propagating unhandled Guide button presses even before guaranteed correlation
Correlate by axis motion as well as button presses
Fix failing to zero other trigger
Fix SDL_HINT_JOYSTICK_HIDAPI not working if set before calling SDL_Init()
Add missing device to device names
Disable RawInput if we have a mismatch of XInput-capable but not RawInput-capable devices
Updated to SDL 2.0.13 code with the following notes:
New HID driver: xbox360w - no idea what that is, hopefully urelated
SDL_hidapijoystick.c had been refactored to couple data handling logic with device opening logic and device lists caused some problems, yields slightly uglier integration than previously when the 360 HID device driver was just handling the data.
SDL_hidapijoystick.c now often pulls the device off of the joystick_hwdata structure for some rumble logic, but it appears that code path is never reached, so probably not a problem.
Looks like joystick_hwdata was refactored to not include a mutex in other drivers, maintainers may want to do the same refactor here if that's useful for some reason.
Something changed in how devices get names, so getting generic names.
Had to fix a (new?) bug where removing an XInput controller caused existing controllers (that moved to a new XInput index) to get identified as 0x045e/0x02fd ("it's probably Bluetooth" in code), rendering the existing HIDAPI_IsDevicePresent and new RAWINPUT_IsDevicePresent unreliable.
|
|
80d075a0
|
2020-03-13T09:43:48
|
|
Fixed compiler warnings
|
|
c44473ba
|
2020-03-12T19:47:30
|
|
Unified code to standardize joystick names
|
|
6efebf17
|
2020-02-04T12:48:53
|
|
Moved rumble expiration to the main joystick handling level, and prevent sending the driver layer duplicate rumble requests.
|
|
7ea3f5b4
|
2020-01-26T12:48:35
|
|
Fixed bug 4898 - No rumble because of integer overflow in SDL_JoystickRumble
meyraud705
Switch hidapi and xinput also need to check for overflow, attached a patch for them.
|
|
43aa1fa9
|
2020-01-18T11:21:14
|
|
Added support for detecting previously unknown Xbox 360 and Xbox One controllers using the HIDAPI driver with libusb and Android
|
|
a8780c6a
|
2020-01-16T20:49:25
|
|
Updated copyright date for 2020
|
|
d000a592
|
2019-12-21T22:33:21
|
|
Fixed windows build
|
|
46e1377d
|
2019-12-20T20:12:03
|
|
Automatically assign player indexes to game controllers, and allow changing the player index for game controllers and joysticks.
Added the functions SDL_JoystickFromPlayerIndex(), SDL_JoystickSetPlayerIndex(), SDL_GameControllerFromPlayerIndex(), and SDL_GameControllerSetPlayerIndex()
|
|
0f529160
|
2019-12-11T17:47:01
|
|
Added custom names for some controllers
|
|
6dce9733
|
2019-11-22T16:23:37
|
|
Use SDL_zeroa() appropriately
|
|
733f2525
|
2019-11-22T14:09:24
|
|
Fixed build
|
|
b5aff9d7
|
2019-11-22T13:12:12
|
|
Added SDL_GameControllerTypeForIndex() and SDL_GameControllerGetType() to return the type of controller attached.
|
|
65096446
|
2019-11-20T16:42:50
|
|
Improved XInput VID/PID detection and added SDL_wcsstr() and SDL_wcsncmp()
|
|
ce8411c5
|
2019-11-20T08:43:24
|
|
Fixed Xbox One Elite Series 2 showing up as 2 devices in Bluetooth mode on Windows
|
|
9da4bfc1
|
2019-10-22T10:57:07
|
|
Added support for the Power A Nintendo Switch Enhanced Wireless Controller
|
|
4953e050
|
2019-07-31T05:11:40
|
|
use SDL_zeroa at more places where the argument is an array.
|
|
5e13087b
|
2019-01-04T22:01:14
|
|
Updated copyright for 2019
|
|
14329256
|
2018-10-25T16:53:14
|
|
Generalized the XInput user index into a player index
|
|
9987ca69
|
2018-10-25T12:54:42
|
|
Added SDL_JoystickGetXInputUserIndex()
|
|
5febdfce
|
2018-09-24T11:49:25
|
|
Fixed whitespace
|
|
a2add1f6
|
2018-08-15T23:14:45
|
|
Use the HIDAPI driver for Xbox controllers on Windows, and determine the XInput mapping at runtime for extended functionality like rumble and guide button.
|
|
63107524
|
2018-08-15T19:53:34
|
|
Fixed input from the Steam Virtual Gamepad on Mac OS X
|
|
99759bac
|
2018-08-09T16:04:34
|
|
There's no controller that's supported by both XInput and HIDAPI
|
|
888bf1af
|
2018-08-09T16:03:50
|
|
Worked around bug with Sony PS Now PS3 controller where DirectInput polling will continue to return success after the controller is unplugged.
The code is now reliant on SDL_PrivateJoystickAdded() and SDL_PrivateJoystickRemoved() being called correctly when devices are added or removed on Windows
|
|
d2042e1e
|
2018-08-09T16:00:17
|
|
Added HIDAPI joystick drivers for more consistent support for Xbox, PS4 and Nintendo Switch Pro controller support across platforms.
Added SDL_GameControllerRumble() and SDL_JoystickRumble() for simple force feedback outside of the SDL haptics API
|
|
862aa4b4
|
2018-07-22T19:28:27
|
|
windows: Fixed some Visual Studio warnings about shadowed variables.
Fixes Bugzilla #4118.
|
|
a8ac5885
|
2018-03-07T13:30:40
|
|
Added SDL_GameControllerMappingForDeviceIndex() to get the mapping for a controller before it's opened
|
|
6e3d0a13
|
2018-02-21T12:42:30
|
|
Use new XInput mapping for Win10+ (Bugzilla #3960)
|
|
e3cc5b2c
|
2018-01-03T10:03:25
|
|
Updated copyright for 2018
|
|
0ddac338
|
2017-09-08T07:15:47
|
|
keep joystick thread from waking unnecessarily, and from possibly blocking for 300ms at shutdown if a joystick was just plugged in
CR: SamL
|
|
ddeaa601
|
2017-08-13T20:42:41
|
|
Fixed bug 3299 - DirectInput: Incorrect joystick mapping when attaching new joysticks
Jimb Esser
Note: This is using DirectInput, I have to disable XInput as that causes all but the first 4 controllers to be completely ignored by SDL (I can find no way to reconcile XInput devices with DirectInput devices, otherwise I would make a patch that accepts the fifth and later controllers with DirectInput...). XInput does not seem to have the problem below, only DirectInput.
I plug in 3 identical wireless Xbox 360 controllers, call them J1, J2, J3. Direct Input shows them as having GUIDs G1, G2, G3. I unplug J1, then J2 and J3 show up as having GUIDs G1 and G2! Not so "unique"... I start my SDL app when just J2 and J3 are plugged in, and open J2 and J3. Then I plug in a new controller, SDL sees that now G3 exists, assigns that a new SDL joystick instance ID, which I request to be opened, but G3 at this point is J3, which I already had opened! So I end up with two instances of J3 opened, and none of J1. "Re-"opening G1 would get the actual handle to the newly attached controller, but there's no current way to know this. This is clearly a bug or poor design in DirectInput or my wireless receiver drivers, but is a showstopping bug for my 8-20 player games (as soon as any one controller runs out of battery or goes to sleep and gets turned back on, suddenly things are busted requiring a restart (or, at least, a reinitialization of all controllers - the game can't go on)).
The solution I found is to use HID paths instead of GUIDs to uniquely identify joysticks. GUIDs are still needed to open a controller, however I have added code to re-find the GUIDs for all joysticks whenever a new joystick is attached or removed. This does now require opening of all joysticks (instead of just enumerating them), though if your app, like mine, is opening all of them anyway so that any can press a button to join, that doesn't change much (although perhaps they joysticks should be kept open in this case, instead of closed and re-opened). If your app only ever opens one joystick, this will do more work at startup than it did previously.
|
|
c49fa37c
|
2017-08-09T11:59:29
|
|
Added SDL hints to filter the set of game controllers reported by SDL
|
|
871d43a8
|
2017-06-08T22:40:09
|
|
Removed unused hint includes.
|
|
4b47fa38
|
2017-06-04T23:15:47
|
|
Removed duplicate includes.
|
|
8eee82cd
|
2017-02-03T23:30:43
|
|
Windows: Fixed warning about unused variable.
Found by buildbot.
|
|
710ae62a
|
2017-02-02T17:33:40
|
|
Remember XInput controllers that we've already seen, so when the raw device list changes we don't assign the old device to the new XInput userid.
This isn't perfect, but at least we won't report the same device twice.
|
|
f3540242
|
2017-01-18T12:19:57
|
|
Removed unused variable
|
|
b0c5ceef
|
2017-01-18T12:18:50
|
|
Fixed bug 3533 - Enumeration joystick devices omitted during directinput enumeration
white.magic
The logic which decides if a device enumerated via the direct input system in the function EnumJoysticksCallback in SDL_dinputjoystick.c is processed is discarding valid joystick devices due to the assumption that devices of the type DI8DEVTYPE_SUPPLEMENTAL are not valid devices.
This change was added with 2.0.4 with this commit http://hg.libsdl.org/SDL/rev/1b9d40126645 that is linked to this bug report https://bugzilla.libsdl.org/show_bug.cgi?id=2460 which indicates that in that case devices of the type DI8DEVTYPE_SUPPLEMENTAL were not desirable as they caused a singular device to emit multiple "device added" events.
Since then there appear to have been a few fixes to handle devices that fall into various other classes in the following two commits:
http://hg.libsdl.org/SDL/rev/10ffb4787d7a and http://hg.libsdl.org/SDL/rev/6a2bbac05728
Two devices I have reports of failing to be listed when the DI8DEVTYPE_SUPPLEMENTAL type is excluded are ECS Gametric Throttle and Thrustmaster MFD Cougar.
Sam Lantinga
I verified that the OUYA controller shows up as a single device with this change, so I've reverted the change to ignore supplemental devices, leaving framework in place to easily add devices that we want to ignore.
|
|
5cb1ca55
|
2017-01-18T11:57:27
|
|
Fixed building with mingw32
|
|
082132a7
|
2017-01-03T23:39:28
|
|
Fixed binding the D-pad on some Super NES style controllers
Fixed a case where partial trigger pull could be bound to another button
There is a fundamental problem not resolved by this commit:
Some controllers have axes (triggers, pedals, etc.) that don't start at zero, but we're guaranteed that if we get a value that it's correct. For these controllers, the current code works, where we take the first value we get and use that as the zero point and generate axis motion starting from that point on.
Other controllers have digital axes (D-pad) that assume a zero starting point, and the first value we get is the min or max axis value when the D-pad is moved. For these controllers, the current code thinks that the zero point is the axis value after the D-pad motion and this doesn't work.
My hypothesis is that the first class of devices is more common and that we should solve for that, and add an exception to SDL_JoystickAxesCenteredAtZero() as needed for the second class of devices.
|
|
45b774e3
|
2017-01-01T18:33:28
|
|
Updated copyright for 2017
|
|
6d7da088
|
2016-12-27T01:39:07
|
|
Split controller axes into positive and negative sides so each can be bound independently.
Using this a D-Pad can be mapped to a thumbstick and vice versa.
Also added support for inverted axes, improving trigger binding support
|
|
3e928451
|
2016-12-23T20:36:24
|
|
Windows: Fixed compile error.
|
|
d6bcec8f
|
2016-12-10T15:23:17
|
|
WinRT: build fixes
These fixes are lumped into two categories:
1. add new file, SDL_dataqueue.c, to UWP/WinRT build-inputs (via MSVC project
files)
2. implement a temporary, hack-fix for a build error in SDL_xinputjoystick.c.
Win32's Raw Input APIs are, unfortunately, not available for use in UWP/WinRT
APIs. There does appear to be a replacement API, available in the
Windows.Devices.HumanInterfaceDevice namespace.
This fix should be sufficient to get SDL compiling again, without affecting
Win32 builds, however using the UWP/WinRT API (in UWP/WinRT builds) would
almost certainly be better (for UWP/WinRT builds).
TODO: research Windows.Devices.HumanInterfaceDevice, and use that if and as
appropriate.
|
|
2f6ba615
|
2016-11-24T12:24:22
|
|
Guess the USB VID/PID of XInput devices
|
|
97aa5775
|
2016-11-16T22:08:51
|
|
Fixed empty parameter list in signatures of internal functions.
|
|
47418f2d
|
2016-11-11T03:35:37
|
|
Updated Windows game controller support
|
|
ac74e16c
|
2016-11-10T17:19:34
|
|
Standardized the format of the SDL joystick GUID and added functions to retrieve the USB VID/PID from a joystick and game controller.
|
|
27d4f099
|
2016-10-07T23:40:44
|
|
Implemented SDL_GetHintBoolean() to make it easier to check boolean hints
|
|
24df68ea
|
2016-10-07T16:32:58
|
|
Fixed bug 2833 - Access Violation on SDL_PollEvent after init, delay and quit of joystick subsystem
Jan Klass
Not sure if this is limited to the joystick subsystem,
but I created a minimal program for reproducibility,
which is attached.
The issue occurs with my gamepad Razer Onza (an xbox-style gamepad) plugged in.
On initialization, the gamepad is being recognized.
After quitting the subsystem, the poll will receive the joystick added event,
which it instantly handles itself, calling SDL_SYS_JoystickDetect again,
which this time calls IDirectInput8_EnumDevices with dinput = NULL (after it was released on quit).
This seems to lead to an access violation within said function, which I have no source for.
|
|
3c8a2698
|
2016-10-01T18:10:50
|
|
WinRT: build fix in joystick code
|
|
7b34f47e
|
2016-10-01T14:50:22
|
|
Fixed windows build
|
|
fa0f4176
|
2016-10-01T14:48:18
|
|
Fixed build warnings and errors
|