Commit Graph

1800 Commits

Author SHA1 Message Date
Sam Lantinga
d3f2eb2aba Use XINPUT_STATE instead of XINPUT_STATE_EX (thanks Andrew!)
XINPUT_STATE_EX isn't actually a thing, we can just use the normal XINPUT_STATE

Fixes https://github.com/libsdl-org/SDL/issues/2797

(cherry picked from commit e8f4045d0b)
2023-11-04 22:28:09 -07:00
Sam Lantinga
b9784feb24 Fixed potential uninitialized memory access (thanks Mathieu!)
GetRawInputDeviceList() can return a different number of devices than was allocated.

Fixes https://github.com/libsdl-org/SDL/issues/2759
2023-11-04 21:11:53 -07:00
Sam Lantinga
0b460f34ba The HP HyperX controllers have a share button 2023-11-03 14:47:20 -07:00
Sam Lantinga
f3261fedcc Code cleanup now that SDL_bool is equivalent to a C boolean expression 2023-11-03 09:54:04 -07:00
Sam Lantinga
ad0af48883 Check to make sure the Windows joystick device has buttons and axes
This reverts commit e5a15f94e2.

It turns out removing this check allows mice like the ROG PUGIO II to show up as game controllers. We need to find a different way to differentiate between gaming mice and pedals.

Since these mice show up as controllers, and potentially causing games to use them instead of real controllers, we'll go ahead revert this change for now.

Reopens https://github.com/libsdl-org/SDL/issues/8227
2023-11-02 08:33:15 -07:00
Sam Lantinga
f52b330ed8 Added support for the HP HyperX Clutch Gladiate controller 2023-10-25 09:00:26 -07:00
Sam Lantinga
38afd48daf Added a single source of SDL object IDs
This ensures that we don't accidentally interpret an ID from one system as an ID in another system.
Audio device IDs are not covered here, since they have a unique numbering system.
2023-10-23 10:49:37 -07:00
Sam Lantinga
e07f6c0a17 SDL_IsJoystickProductWheel() returns SDL_TRUE for Asetek wheelbases (thanks @IOBYTE!) 2023-10-23 10:42:36 -07:00
Sam Lantinga
e5a15f94e2 Revert "Check to make sure the Windows joystick device has buttons and axes"
This reverts commit 642504bc59.

We have SDL_HINT_JOYSTICK_ROG_CHAKRAM to ignore or allow the ROG Chakram X mouse to be used as a joystick.

Fixes https://github.com/libsdl-org/SDL/issues/8227
2023-10-22 09:21:07 -07:00
Sam Lantinga
70fd8e2ba2 Lock joysticks when adding gamepad mappings
Fixes https://github.com/libsdl-org/SDL/issues/8412
2023-10-19 22:36:44 -07:00
Cameron Gutman
435e7ce663 Check for device disconnection in HIDAPI_JoystickOpen()
HIDAPI joystick drivers may call HIDAPI_JoystickDisconnected() in their
UpdateDevice() function during HIDAPI_JoystickOpen(). If they do this
today, the opened joystick will end up partially initialized (no name,
path, mapping GUID, etc.) because HIDAPI_GetDeviceByIndex() will no
longer be able to find the SDL_HIDAPI_Device for the removed joystick.

Worse still, joystick->hwdata->device becomes a dangling freed pointer
the next time HIDAPI_UpdateDeviceList() is called. This leads to a UAF
when the application or SDL calls SDL_JoystickClose() on this joystick.

Fix all this by checking if the device no longer has any associated
joysticks after calling UpdateDevice() and failing the open call if so.
2023-10-17 21:54:09 -05:00
Sam Lantinga
4368f70ff9 Added properties to various SDL objects
The following objects now have properties that can be user modified:
* SDL_AudioStream
* SDL_Gamepad
* SDL_Joystick
* SDL_RWops
* SDL_Renderer
* SDL_Sensor
* SDL_Surface
* SDL_Texture
* SDL_Window
2023-10-11 22:38:00 -07:00
Sam Lantinga
b654427537 Added support for the PowerA Nintendo Switch Nano Wired Controller 2023-10-10 17:04:00 -07:00
Sam Lantinga
3a47fb7208 The sensor and joystick instance ID generator isn't guarded by a lock. 2023-10-10 15:46:46 -07:00
Mathieu Eyraud
f30392da5b Fix assertion in LINUX_JoystickSetSensorsEnabled()
Calling LINUX_JoystickSetSensorsEnabled() after the joystick is unplugged will trigger this assertion.
2023-10-05 13:06:48 -07:00
Mathieu Eyraud
0eb8651d5e Do not report gyro/accelerometer if we can't read axes info 2023-10-04 08:43:39 -07:00
Sam Lantinga
70a1bc6973 Check for NULL before dereferencing newly allocated memory
Fixes https://github.com/libsdl-org/SDL/issues/8289
2023-09-24 17:17:49 -07:00
Sam Lantinga
a3a5e17282 Fixed build warning '=': conversion from 'Uint32' to 'Uint16', possible loss of data 2023-09-18 13:56:51 -07:00
Sam Lantinga
a72dfa6a5f Fixed sensor timestamp units for third-party PS5 controllers 2023-09-18 12:55:43 -07:00
Sam Lantinga
f6756047a4 Fixed error: array subscript 2 is above array bounds of ‘const Uint8[2]’
Smart compilers don't like dereferencing off the end of arrays
2023-09-18 12:19:18 -07:00
Sam Lantinga
7059a55ccc Fixed sensor timestamp calculation for third-party PS5 controllers 2023-09-18 11:50:56 -07:00
Sam Lantinga
859dc14add Replaced SDL_GetGamepadBindForAxis() and SDL_GetGamepadBindForButton() with SDL_GetGamepadBindings() 2023-09-13 23:01:28 -07:00
Sam Lantinga
9e50048ab6 Revert "Removed SDL_GamepadBinding from the API"
This reverts commit eb0955ef89.
2023-09-13 22:42:47 -07:00
Max Bachmann
fd1c54a004 detect fanatec steering wheels 2023-09-12 15:35:35 -07:00
Makarenko Oleg
a2c1984d37 Detect Simagic wheel bases as wheels (#8198)
Simagic DirectDrive wheel bases have the same vendor + product id's
2023-09-04 12:11:13 -07:00
Oleg
266b91d2fd Detect Logitech G923 Playstation as wheel
G923 have two different versions - Xbox version is already present in the wheel list, but not the PS version.
2023-09-04 11:05:28 -07:00
Oleg
cde67ea49a Detect Logitech PRO Racing Wheel for Xbox (PC mode) as wheel
Logitech PRO Racing Wheel have two different versions - for Playstation and Xbox. Vendor + Product ID for Playstation version already present in SDL sources, but not an Xbox version
2023-09-04 11:01:17 -07:00
Sam Lantinga
825d344756 Make sure that the same timestamp is used for all PS5 events from the same packet 2023-09-01 17:49:39 -07:00
Sam Lantinga
0f80d47bbd Fixed thread-safety warning 2023-08-25 08:21:54 -07:00
Sam Lantinga
69aec8c915 Fixed the report format for the Razer Wolverine V2 Pro 2023-08-24 11:37:50 -07:00
Mathieu Eyraud
94b3f78c44 Fix out of bound read of 'has_hat' array 2023-08-10 08:25:01 -07:00
Sam Lantinga
dabd45997e Back out change supporting multiple names for binding elements
testcontroller expects to be able to call SDL_GetGamepadStringForButton() and find that name in the binding string

We can revisit this later if it becomes important to use new names in bindings. @smcv
2023-08-09 11:25:37 -07:00
Simon McVittie
efe15588d5 Relabel back paddles as left or right
The sequence order of the four paddles is not obvious, with SDL and Xbox
controllers swapping the order of P2 and P3 relative to each other.
If we group them into left and right, then it becomes more obvious.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2023-08-09 11:03:30 -07:00
Sam Lantinga
4ee0e5a984 Fixed thread-safety warnings 2023-08-08 22:09:47 -07:00
Sam Lantinga
8a1afc9b10 Fixed Android not sending controller event timestamps 2023-08-08 09:47:49 -07:00
Sam Lantinga
463c456b98 Fill the correct member with the joystick ID in SDL_EVENT_JOYSTICK_UPDATE_COMPLETE 2023-08-08 09:47:49 -07:00
Sam Lantinga
b903ccf945 SDL_rwops read/write functions return size_t again
The current status is stored in the SDL_rwops 'status' field to be able to determine whether a 0 return value is caused by end of file, an error, or a non-blocking source not being ready.

The functions to read sized datatypes now return SDL_bool so you can detect read errors.

Fixes https://github.com/libsdl-org/SDL/issues/6729
2023-08-07 20:36:21 -07:00
Sam Lantinga
75a020aa6b Only query serial number and firmware versions from Sony PS5 controllers
I don't know of any specific issue with this, but third party PS4 controllers have had issues with reports that are specific to Sony hardware, so this is a speculative change to prevent issues with future controllers.

If it turns out that these reports are valid and useful for third party controllers, we can back this change out.
2023-08-07 14:06:10 -07:00
Sam Lantinga
fa189d302e Added the Victrix Pro FS for PS4/PS5 to the controller list 2023-08-07 14:04:34 -07:00
Sam Lantinga
26205b659d Fixed PS4/PS5 touchpad for third party controllers
We should always report touchpad and battery status if they are available. We just want to make sure we don't enable enhanced reports unless the application wants that behavior.
2023-08-07 10:48:52 -07:00
Sam Lantinga
99b0e31788 The Steam Controller D-Pad is only pressed when the button is pressed down 2023-08-03 13:07:51 -07:00
Sam Lantinga
06bea1eb55 Added a gamepad mapping for the G-Shark GS-GP702
Fixes https://github.com/libsdl-org/SDL/issues/8068
2023-08-02 14:35:39 -07:00
Mathieu Eyraud
0500fca00c Add missing break 2023-07-29 10:29:00 -04:00
Sam Lantinga
3174d0b970 Sorted controller list 2023-07-27 12:48:15 -07:00
Max Maisel
27b8abb056 Add Steam Deck controller mapping to database.
This adds support for the back paddles, and the "..." key
which are not automatically detected.
* "Back" is mapped to the top left "two windows" key.
* "Start" is mapped to the top right "hambuger menu" key.
* "Guide" is mapped to the "Steam" key.
* The "..." key is just a generic button.

When looking at the screen, paddles are number
* P1: Top right
* P2: Top left
* P3: Bottom right
* P4: Botom Left

The new controller mapping was created with the SDL3 gamepadmap tool.
2023-07-27 12:46:47 -07:00
Sam Lantinga
3c8f4dca1d Make sure we don't touch the controller effects state when we're in auto mode for PS4/PS5 controllers. 2023-07-24 10:17:02 -07:00
Sam Lantinga
58e3084477 The Flydigi Vader and Apex series controllers all have the same VID, PID, and name 2023-07-19 09:22:01 -07:00
Sam Lantinga
e413457a7e Fixed clearing the mapping in testcontroller 2023-07-18 22:10:44 -07:00
Sam Lantinga
85eb1fa515 Fixed double-comma if the crc is first in the mapping 2023-07-18 17:32:46 -07:00
Sam Lantinga
c0e0f47755 Make sure there are commas in gamepad mapping strings 2023-07-18 17:11:02 -07:00