src/joystick


Log

Author Commit Date CI Message
happyharryh 2cb42236 2023-01-10T20:36:13 Fixed the hat_map to avoid segmentation fault (cherry picked from commit 57e78f4cf53b0fc84900a047120263c3c71e721c)
Narr the Reg fa934dd4 2023-01-09T17:42:17 hidapi: switch: Add user calibration support (cherry picked from commit 9fa55d9cabc93532cd5cf44105ec589a4db1d097)
Sam Lantinga 0479df53 2023-01-09T09:48:21 Updated copyright for 2023
Sam Lantinga ebc2fb41 2023-01-08T09:32:31 Fixed infinite loop shutting down WGI controllers We are guaranteed that the lock will be held during shutdown, so if we are in InvokeRemoved(), it's because we're shutting down controllers and need to remove them from our internal list. Fixes https://github.com/libsdl-org/SDL/issues/7016 (cherry picked from commit ac99db9fc8d528a79abb98a5641e0fd94aa20a9e)
Sam Lantinga 988866ca 2023-01-03T15:12:47 Fixed line wrapping for HID packet dump (cherry picked from commit e85839cd5694a79f69ac16f48a5d845cdc62f809)
Sam Lantinga 2cb7a0a0 2023-01-03T15:12:18 Added support for the ThrustMaster eSwap PRO Controller Xbox (cherry picked from commit dacdb1c310d97ca3c3e6492cae0611f86b281b34)
Sam Lantinga 29a4c5eb 2022-12-28T12:51:36 Fixed getting the VID/PID of a virtual joystick (cherry picked from commit e40a96155fc488feaeeeb79f947eb43399faa481)
Sam Lantinga 903df79b 2022-12-27T12:14:43 Make sure we match the same way when adding a mapping and looking up a mapping Fixes https://github.com/libsdl-org/SDL/issues/6898 (cherry picked from commit 3db9112ef4cbb936b11f941f8a98c1704e37e140)
Sam Lantinga 6969b3be 2022-12-19T09:14:04 Don't send Razer devices the Sony third-party query feature report Some of them lock up or reset, and the vast majority of devices are not actually game controllers. Fixes https://github.com/libsdl-org/SDL/issues/6733 (cherry picked from commit 83b29f9ce1fe6caa06769544c3b5f6c10ea97a0f)
Sam Lantinga 3b0cd441 2022-12-17T06:51:02 Fixed compiler warning ``` ./src/joystick/SDL_joystick.c:105:12: warning: no previous extern declaration for non-static variable 'SDL_joystick_lock' [-Wmissing-variable-declarations] SDL_mutex *SDL_joystick_lock = NULL; /* This needs to support recursive locks */ ^ ./src/joystick/SDL_joystick.c:105:1: note: declare 'static' if the variable is not intended to be used outside of this translation unit SDL_mutex *SDL_joystick_lock = NULL; /* This needs to support recursive locks */ ^ ``` 1 warning generated.
Sam Lantinga a53382e4 2022-12-15T18:00:51 Sorted PS4 controllers, note that the NACON Wireless Controller for PS4 actually reports as an XInput device
Sam Lantinga e99b9ca9 2022-12-15T17:58:29 Note that the NACON Daija Arcade Stick is an arcade stick
Sam Lantinga 7a9966af 2022-12-14T14:24:58 Fixed crash in SDL_PrivateGameControllerRefreshMapping()
Sam Lantinga d59caffe 2022-12-13T14:03:40 Added support for clang thread-safety analysis The annotations have been added to SDL_mutex.h and have been made public so applications can enable this for their own code. Clang assumes that locking and unlocking can't fail, but SDL has the concept of a NULL mutex, so the mutex functions have been changed not to report errors if a mutex hasn't been initialized. We do have mutexes that might be accessed when they are NULL, notably in the event system, so this is an important change. This commit cleans up a bunch of rare race conditions in the joystick and game controller code so now everything should be completely protected by the joystick lock. To test this, change the compiler to "clang -Wthread-safety -Werror=thread-safety -DSDL_THREAD_SAFETY_ANALYSIS"
Sam Lantinga 817454cf 2022-12-12T18:00:57 Don't try to open the Razer Huntsman Elite keyboard as a controller
Sam Lantinga 802b5ef7 2022-12-12T10:54:29 Added support for the STRIKEPAD PS4 Grip Add-on to the HIDAPI driver (cherry picked from commit 618340bf990512247ed29a1beb38606e371d60e8)
Sam Lantinga fc689a6c 2022-12-07T16:06:17 Fixed build
Sam Lantinga b4d54790 2022-12-07T14:53:33 Use the correct name for the DualSense controllers (cherry picked from commit 9a6bcca6b8db999217f157dab8c44bf27b0a8eb4)
Sam Lantinga 4ee36a94 2022-12-07T14:25:53 Added support for the DualSense Edge paddles (cherry picked from commit 9339085593dc20b1f003f26b3c40615cf04504b0)
Sam Lantinga d1b48105 2022-12-05T13:36:51 Fixed centering the D-pad on some joysticks Fixes https://github.com/libsdl-org/SDL/issues/6767
Max Bachmann 7ac66972 2022-12-03T09:45:04 Detect Logitech PRO Racing Wheel as wheel (cherry picked from commit 5650046f931e9b1d7d7f4a1867e6e1ed75a5e7c5)
Sam Lantinga 423c558e 2022-12-01T14:43:34 Detect the G923 (Xbox style) and PXN V900 (PS3 mode) as wheels (cherry picked from commit 7237c5649994d2b2c2b364c3b116a6db80ea671d)
Pierre Wendling d0bbfdbf 2022-12-01T16:07:03 Clang-Tidy fixes (#6725) (cherry picked from commit 3c501b963dd8f0605a6ce7978882df39ba76f9cd)
Sylvain 09ee811f 2022-12-01T09:39:08 Small format changed (using clang-format 15.0.2-1) (cherry picked from commit 778b8926b4808f0642a331ed84a9e8e19899b6db)
Sam Lantinga 6e40c7a9 2022-11-30T17:03:29 Added support for the Logitech Cordless Precision PS3 controller
Sam Lantinga 01541bc3 2022-11-30T16:42:00 Added support for the HORIPAD Pro for Xbox Series X
Sam Lantinga 4504c10f 2022-11-30T16:37:20 Re-enabled support for third party PS3 controllers
Sam Lantinga 9e997cc7 2022-11-30T15:39:10 Fixed Victrix FS Pro V2 controller hang on reboot
Sam Lantinga b8d85c69 2022-11-30T12:51:59 Update for SDL3 coding style (#6717) I updated .clang-format and ran clang-format 14 over the src and test directories to standardize the code base. In general I let clang-format have it's way, and added markup to prevent formatting of code that would break or be completely unreadable if formatted. The script I ran for the src directory is added as build-scripts/clang-format-src.sh This fixes: #6592 #6593 #6594 (cherry picked from commit 5750bcb174300011b91d1de20edb288fcca70f8c)
Sam Lantinga 2d24baaa 2022-11-29T09:26:29 Fixed building on Windows with SDL_VIDEO=OFF Fixes https://github.com/libsdl-org/SDL/issues/6562
Sam Lantinga 89e9f7b4 2022-11-28T23:10:02 Added support for the Xbox Elite controller paddles with firmware version 5.13+
Vasily Khoruzhick b6c875a9 2022-11-28T17:01:16 Add support for the 8BitDo Ultimate Wireless 2.4GHz Controller in DirectInput mode Generated using controller map
Sam Lantinga 37d244ea 2022-11-28T14:48:32 Added support for the 8BitDo Ultimate Wired Controller in DirectInput mode, including the misc button and paddles
Sam Lantinga a937b5c4 2022-11-28T13:47:30 Add 8BitDo to the list of Xbox 360 third party vendors Allows detection of the 8BitDo Ultimate Wired Controller
Sylvain Becker fb0ce375 2022-11-27T17:38:43 Cleanup add brace (#6545) * Add braces after if conditions * More add braces after if conditions * Add braces after while() conditions * Fix compilation because of macro being modified * Add braces to for loop * Add braces after if/goto * Move comments up * Remove extra () in the 'return ...;' statements * More remove extra () in the 'return ...;' statements * More remove extra () in the 'return ...;' statements after merge * Fix inconsistent patterns are xxx == NULL vs !xxx * More "{}" for "if() break;" and "if() continue;" * More "{}" after if() short statement * More "{}" after "if () return;" statement * More fix inconsistent patterns are xxx == NULL vs !xxx * Revert some modificaion on SDL_RLEaccel.c * SDL_RLEaccel: no short statement * Cleanup 'if' where the bracket is in a new line * Cleanup 'while' where the bracket is in a new line * Cleanup 'for' where the bracket is in a new line * Cleanup 'else' where the bracket is in a new line (cherry picked from commit 6a2200823c66e53bd3cda4a25f0206b834392652 to reduce conflicts merging between SDL2 and SDL3)
Sylvain Becker 192cdf3d 2022-11-24T16:07:03 SDL_mfijoystick.m: remove VLA, so that projects can be built with error on vla
Sam James 4c7156c1 2022-11-24T05:21:21 Avoid use of deprecated egrep/fgrep GNU grep 3.8 emits a deprecation warning on use of egrep/fgrep. Signed-off-by: Sam James <sam@gentoo.org> (cherry picked from commit 3e7952ce8a0affd325c802755cae5fd843b86d99)
Joshua Root 242ce20c 2022-11-24T07:37:36 SDL_mfijoystick.m: fix build with Xcode < 9 Fixes #6601. (cherry picked from commit 53ca1f77029289a58f1a9963a00b637b903f494d)
Sam Lantinga dce6ed56 2022-11-22T10:56:44 Removed G29 from controller_type.c We don't want the G29 to show up as a gamepad, Steam will create a virtual Xbox controller for it, which breaks racing games.
Sam Lantinga e3d430b8 2022-11-22T10:53:28 Revert "Added Linux mappings for the Logitech G29 in PS3 and PS4 modes" This reverts commit 33a68f575f484723aa326f8a2d96f2b8a084da4a. We don't want the G29 to show up as a gamepad, Steam will create a virtual Xbox controller for it, which breaks racing games.
Sam Lantinga d167cd67 2022-11-21T09:02:10 Added the Gunfighter Mk.III ‘Space Combat Edition’ as a flight stick
Sam Lantinga 8b20b568 2022-11-21T07:41:35 Don't report battery level for disconnected batteries Fixes https://github.com/libsdl-org/SDL/issues/6536
Sam Lantinga 509939b1 2022-11-18T18:20:53 Disable the third party PS3 HIDAPI driver by default, the L3/R3 buttons are unknown
Sylvain 60c6cd55 2022-11-17T09:34:27 Fixed bug #6533 - PS2_JoystickUpdate: some invalid condition
Ryan C. Gordon 389ffab7 2022-11-16T12:53:48 Code style fixes, etc. Reference PR #6345.
ulatekh ec58a817 2022-10-05T19:26:09 Fixes made in response to running a static code analyzer under MS Windows. Most of these are probably harmless, but the changes to SDL_immdevice.c and SDL_pixels.c appear to have fixed genuine bugs. SDL_audiocvt.c: By separating the calculation of the divisor, I got rid of the suspicion that dividing a double by an integer led to loss of precision. SDL_immdevice.c: Added a missing test, one that could have otherwise led to dereferencing a null pointer. SDL_events.c, SDL_gamecontroller.c, SDL_joystick.c, SDL_malloc.c, SDL_video.c: Made it clear the return values weren't used. SDL_hidapi_shield.c: The size is zero, so nothing bad would have happened, but the SDL_memset() was still being given an address outside of the array's range. SDL_dinputjoystick.c: Initialize local data, just in case IDirectInputDevice8_GetProperty() isn't guaranteed to write to it. SDL_render_sw.c: drawstate.viewport could be null (as seen on line 691). SDL.c: SDL_MostSignificantBitIndex32() could return -1, though I don't know if you want to cope with that (what I did) or SDL_assert() that it can't happen. SDL_hints.c: Replaced boolean tests on pointer values with comparisons to NULL. SDL_pixels.c: Looks like the switch is genuinely missing a break! SDL_rect_impl.h: The MacOS static checker pointed out issues with the X comparisons that were handled by assertions; I added assertions for the Y comparisons. SDL_yuv.c, SDL_windowskeyboard.c, SDL_windowswindow.c: Checked error-result returns.
Pierre Wendling bf4f9aaa 2022-11-14T16:11:58 N3DS: Use designated initialiser for drivers. Just a sanity check that the functions are actually mapped correctly.
Sam Lantinga b7e65a81 2022-11-11T08:57:07 Fixed incorrect WGI controller state when the application loses focus Recenter the controller elements when WGI stops reporting valid state Fixes https://github.com/libsdl-org/SDL/issues/5261
Sam Lantinga 0dfc829a 2022-11-10T19:16:53 Added simple BLE Steam Controller support on all platforms This is still disabled by default via the hint SDL_HINT_JOYSTICK_HIDAPI_STEAM
Sam Lantinga 7c05ea0a 2022-11-10T13:35:40 Added mappings for the GameSir T3 and T4 Pro controllers
Sam Lantinga 404cb276 2022-11-10T13:28:03 Added macOS mappings for the Nintendo Switch Pro Controller over Bluetooth
meyraud705 3dc88da0 2022-11-08T13:27:56 Fix Dualshock 4 rumble stopping too early Dualshock 4 controller only rumbles for 5 seconds maximum. Resend rumble command every 2 seconds to make long rumble work.
Sam Lantinga 6432f45a 2022-11-08T10:27:21 Don't treat the Nintendo IMU as a separate game controller on Linux
Sam Lantinga 2e3b4f3f 2022-11-08T07:50:51 Don't send rumble to the Amazon Luna controller on macOS Sending rumble to the Amazon Luna controller on macOS gets there, but IOHIDDeviceSetReport() blocks for a long time and eventually fails. This appears to be a bug in the macOS Bluetooth stack, ref rdar://99265496
Sam Lantinga 02bc359b 2022-11-07T19:31:18 Shorten "Bensussen Deutsch & Associates,Inc.(BDA)" to "BDA" for controller names
Sam Lantinga f2ce7c5f 2022-11-06T08:23:08 Added the G29 as a PlayStation controller
Sam Lantinga 9d1dbd2a 2022-11-06T01:16:52 Added note about trigger rumble availability across third-party Xbox One controllers
Sam Lantinga e7a56323 2022-11-06T01:43:05 Make sure we wait after sending the rumble packet when initializing the PowerA Xbox One Mini Wired Controller
Sam Lantinga 6875e62a 2022-11-06T01:15:20 Make sure we don't send Xbox controllers rumble so quickly that it overwhelms the firmware Fixes https://github.com/libsdl-org/SDL/issues/6435
Sam Lantinga 38af459d 2022-11-06T01:15:19 Fixed potential clobbering of packets of different types using SDL_HIDAPI_SendRumble()
Sam Lantinga e45cb5b1 2022-11-06T01:15:18 Fixed initializing the PowerA Xbox One Mini Wired Controller
Sam Lantinga a4626dea 2022-11-05T14:24:41 Fixed initializing the PDP Xbox One and Victrix Gambit controllers
Sam Lantinga 7e11b09b 2022-11-05T13:50:37 The PowerA Xbox One Mini Wired Controller works with the HIDAPI driver now
Sam Lantinga a2d66b6a 2022-11-05T13:12:10 SDL_GameControllerMapping() should return the string for the actual mapping that was used when opening a gamecontroller, rather than do a GUID match again Also don't match against the zero guid if that happens to be in the mapping list for some reason
Stefan Sperling f3bf543e 2022-11-05T15:21:29 recognize game controllers connected via raphnet technologies WUSBMote v2.2 This is a USB adapter for controllers shipped with Nintendo's NES-mini and SNES-mini consoles. Tested with both NES and SNES controllers, buttons map as expected on both.
Sam Lantinga 24cdebe4 2022-11-05T10:34:08 Added the hint SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED to control the brightness of the Xbox button LED on the Xbox One controller
Sam Lantinga 33a68f57 2022-11-03T16:02:58 Added Linux mappings for the Logitech G29 in PS3 and PS4 modes
Sam Lantinga c70e6759 2022-11-03T12:37:54 Wait a bit for devices to initialize before trying to enumerate and open them. This works around udev event nodes arriving before hidraw nodes and the controller being opened twice - once using the Linux driver and once by the HIDAPI driver. This also fixes a kernel panic on Steam Link hardware due to trying to open the hidraw device node too early. A delay of 10 ms seems to be a good value, tested on Steam Link hardware.
Sam Lantinga b75d3187 2022-10-31T13:33:53 Sometimes the HID open doesn't succeed immediately after being notified about the device Tested on Steam Link hardware with the Nintendo Switch Pro controller, which will occasionally take 2 attempts to open.
Sam Lantinga 25d0473a 2022-10-25T16:14:26 Removed Razer Onza Tournament Edition mapping The controller can use either hat or buttons for the D-Pad, depending on what Linux driver is in use. The automatic mapping in LINUX_JoystickGetGamepadMapping() will do the right thing based on the exposed capability bits. I'm sure this is the case for other controllers as well, so we might be removing more mappings over time.
Sam Lantinga e837debc 2022-10-25T16:13:50 Bindings should have a trailing comma, so the CRC can be appended
Sam Lantinga c74ea994 2022-10-25T13:11:41 Added support for the Razer Raiju Tournament Edition controller in Bluetooth mode
Sam Lantinga 72f6e216 2022-10-25T12:25:57 Disabled debug logging
Alynne 5fbf8f6c 2022-10-25T12:37:17 Adds DualSense Edge
Sam Lantinga da478d1f 2022-10-25T10:30:56 Fixed build
Sam Lantinga a6018ae5 2022-10-25T10:23:51 Added support for the NVIDIA SHIELD controller v1.03 to the HIDAPI driver
Steven Noonan 3d35c085 2022-10-02T17:30:03 fix a few 'unused but set variable' and 'unused function' warnings
Sam Lantinga f4d1f5ed 2022-10-23T16:35:36 SDL-HIDPS4: fix PS4 Slim controller over BT - it sends the same input report as the it does over USB, but with a larger packet size CR: saml
Sam Lantinga 5b8f830e 2022-10-22T09:24:28 Virtual joysticks don't need initial axis jitter protection Fixes https://github.com/libsdl-org/SDL/issues/6426
Sam Lantinga 0bc852ce 2022-10-17T17:43:06 Revert "Disable the RAWINPUT joystick driver by default" Disabling RAWINPUT on Windows 10 causes these issues: * All Xbox controllers are named "XInput Controller". * Trigger rumble no longer works. * "XInput Controllers" are now also listed as separate haptic devices
Sam Lantinga 333935ff 2022-10-17T11:10:53 Make sure we completely unlock joysticks when opening HIDAPI devices Also lock the joysticks when adding and removing Android joysticks
Sam Lantinga 47ba997f 2022-10-17T07:39:52 Disable the RAWINPUT joystick driver by default It's only needed to support more than 4 Xbox controllers, and adds significant complexity to the joystick processing, and we regularly get bugs from people who aren't using an SDL window who need to turn on SDL_HINT_JOYSTICK_THREAD.
Sam Lantinga 5025f240 2022-10-17T07:32:44 Don't use RAWINPUT joystick driver on Windows XP Fixes https://github.com/libsdl-org/SDL/issues/6400
Sam Lantinga 70dfd6dd 2022-10-16T09:05:13 Added mapping for Xbox Series X controller Fixes https://github.com/libsdl-org/SDL/issues/6296
Sam Lantinga e8fdb861 2022-10-15T10:02:39 Removed redundant masking when loading the IMU calibration
happyharryh a6573f94 2022-10-16T00:23:25 Fix bugs in IMU calibration loading for Nintendo Controllers
Sam Lantinga 5129a077 2022-10-14T14:35:52 Steam Controller support defaults off, as documented in SDL_hints.h
Sam Lantinga 6af17369 2022-10-14T10:36:24 Added mapping for Qanba Drone on Linux without HIDAPI
Sam Lantinga 93b71967 2022-10-14T10:32:03 Only update the battery level if we're on Bluetooth Fixes battery level dropping to empty with the Qanba Drone Arcade Stick. It looks like we might also be able to skip the check for all third party controllers, but I think this is the right thing to do for Sony controllers as well.
Sam Lantinga 120a957d 2022-10-14T09:57:02 Added support for the Qanba Drone Arcade Stick
Sam Lantinga fc73386f 2022-10-12T21:44:50 Fixed the mapping from raw joystick values to the expected [SDL_JOYSTICK_AXIS_MIN, SDL_JOYSTICK_AXIS_MAX] range. (thanks Tas!) The original code mapped incorrectly from [min, max] to [-32768, 32512], the upper bound being SDL_JOYSTICK_AXIS_MAX - 255 instead of SDL_JOYSTICK_AXIS_MAX.
happyharryh 6f224e4d 2022-10-11T10:44:20 Made timestamp_us of sensor events increase monotonically for Nintendo controllers
Pierre Wendling 43a2b0b1 2022-10-10T00:00:52 N3DS: Use macro to correct axis. Using `(value * SDL max) / 3DS max` allows for marginally better accuracy compared to `value * (SDL max / 3DS max)`.
Pierre Wendling cb1972b3 2022-09-20T23:07:04 N3DS: ZL and ZR should be considered as triggers. Previously they were considered as clicking stick.
Pierre Wendling 86a8714f 2022-09-20T23:04:20 N3DS: Refactor joystick module to avoid globals.
Pierre Wendling 392f3882 2022-09-20T22:45:24 N3DS: Use SDL_Sensor instead of Joystick sensors.
Pierre Wendling 266014fa 2022-09-18T13:38:26 N3DS: Use SDL_Touch instead of the Joystick touch.
Pierre Wendling 03bbbcd8 2022-09-18T09:06:36 N3DS: Use CreateJoystickGUIDForName.
Pierre Wendling 65527537 2021-03-30T04:32:39 N3DS port (squashed) A dedicated renderer using Citro3D would likely allow for better much better graphical performances.
Sam Lantinga efdb390c 2022-10-09T09:11:33 Disable the HIDAPI Wii driver by default as it doesn't work with the dolphinbar