src/joystick


Log

Author Commit Date CI Message
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
Sam Lantinga 33050fea 2022-10-07T11:29:49 Only open HID devices that might have a HIDAPI driver available This prevents an OS prompt for every connected device when running on Android
Sam Lantinga fc720321 2022-10-06T18:23:07 Fix rare deadlock when opening a HID controller on Android Fixes https://github.com/libsdl-org/SDL/issues/6347
Sam Lantinga 689409fd 2022-10-06T17:34:24 Fixed the start button on the Nimbus+ controller on tvOS Also updated mappings for Nintendo Switch controllers on tvOS, to reflect the lack of guide/menu button availability
Sam Lantinga ddc3de60 2022-10-05T16:24:05 Added mapping for PS5 controller over Bluetooth on Android 12 Tested on Pixel 3a
Sam Lantinga 81afb3e3 2022-10-05T16:18:09 Need to swap endianness when extracting the CRC from game controller mappings
Sam Lantinga 3607f831 2022-10-03T11:00:50 Find out if a controller is wireless using WGI (thanks @DJm00n!) Confirmed using an Xbox Series X controller over USB and Bluetooth Fixes https://github.com/libsdl-org/SDL/issues/6322
Sam Lantinga bd6afc23 2022-10-02T10:15:39 Fixed sensor axes in vertical mode
Sam Lantinga b4c25f57 2022-10-02T09:51:05 Remapped the side button and trigger as paddles for the mini-gamepad mode of the Joy-Cons This is the only case where the mapping differs between right and left Joy-Cons in mini-gamepad mode. The left Joy-Con will have the left paddles and the right Joy-Con will have the right paddles. This facilitates co-op gameplay with individual actions while still using the normal mini-gamepad mode. The paddles are used for this because conceptually they are more awkward to hit than the normal controls and they are in roughly the correct hand position.
Sam Lantinga f58a6506 2022-10-02T09:50:27 Added paddle mapping for combined Joy-Cons
Sam Lantinga 37dfa262 2022-10-02T09:36:50 Added paddle mapping for combined Joy-Cons
Happy Harry 6c8bf3af 2022-10-03T00:19:34 Add vertical mode for Nintendo Joy-Con (#6303) * Added support for vertical mode for Joy-Con controllers * Added the hint SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS for switching to this mode * Added support for SL/SR buttons in combined/vertical mode and L/ZL/R/ZR buttons in mini-gamepad mode
Sam Lantinga 0672dc8d 2022-10-02T08:48:38 Fixed combined Joy-Cons after https://github.com/libsdl-org/SDL/commit/aa2e2f4843567cfe4e6f2f4ffa3f0b74dd98f1ba (thanks @happyharryh!)
Sam Lantinga 7becbd7d 2022-09-27T12:58:16 Add joystick locking for controller notifications on iOS/tvOS Fixes https://github.com/libsdl-org/SDL/issues/6288
Sam Lantinga 18eb319a 2022-09-27T12:34:03 Added sensor timestamp for Nintendo Switch controllers
Sam Lantinga 5e3a4030 2022-09-27T11:36:01 Added sensor timestamp for Steam Controllers
Sam Lantinga 2c518747 2022-09-27T09:56:02 Added microsecond timestamp to sensor values for PS4 and PS5 controllers using the HIDAPI driver
Sam Lantinga 1e1be0b9 2022-09-26T23:00:58 Updated logic to match between PS4/PS5/Switch controllers
Sam Lantinga 8c40a6b0 2022-09-26T22:47:21 Drop PS5 Bluetooth reports that fail CRC check
Sam Lantinga db075ff3 2022-09-26T22:45:01 Removed unused variable
Sam Lantinga 2ccdd066 2022-09-26T22:32:57 Handle DS4 dongle controller connection and disconnection We also drop Bluetooth packets that fail the CRC check, as recommended by Sony
Sam Lantinga 18046b9a 2022-09-26T20:53:50 Fixed crash with a NULL serial number
Sam Lantinga 67fa6a93 2022-09-26T20:49:26 Don't wait a long time for zombie Bluetooth controllers If a Nintendo Switch Pro controller is turned off, it will leave the controller connected in Windows, but not responding to reports. Don't wait a really long time trying to get information from a controller in this state.
Sam Lantinga 67db8a91 2022-09-26T20:41:51 Wait for input before reconnecting a Bluetooth device On Windows, the Bluetooth device can remain in a connected state if the controller just shut down. It won't return any errors, but it also won't generate any input reports in this state, so wait until we know for sure that the Bluetooth controller is sending data before letting the application know it's available.
Sam Lantinga 2cc91761 2022-09-26T18:52:26 Removed debug logging
Sam Lantinga 2c98c8af 2022-09-26T18:39:18 Use better default values for Switch controller calibration
Sam Lantinga a205c5e2 2022-09-26T18:18:16 Use separate extents for simple and advanced reports
Sam Lantinga b7fddb4c 2022-09-26T14:39:51 Minor tweaks
Sam Lantinga 39adcc0a 2022-09-26T14:20:34 Prefer USB input over Bluetooth for PS5/PS5/Switch controllers Nintendo Switch controllers will automatically turn off Bluetooth when connected over USB, but this takes care of that a little more quickly. PS4 and PS5 controllers will happily send reports over both Bluetooth and USB, so we'll prefer USB if connected and switch back to Bluetooth if USB is disconnected.
Sam Lantinga 17d7d03a 2022-09-26T08:12:35 Added detection of the joystick type for third party PS4 and PS5 controllers
Sam Lantinga 8d2cb155 2022-09-23T16:56:24 Added an entry for the ZEROPLUS P4 Wired Gamepad
Sam Lantinga cb063db6 2022-09-23T16:52:37 Moved XInputPS4 controllers into the PS4 controller section
Sam Lantinga 5b3b7e6e 2022-09-23T16:46:36 Separated PS4/PS5 effects support into individual capabilities
Sam Lantinga 33619aa2 2022-09-23T16:38:15 Added support for the ZEROPLUS P4 Wired Gamepad to the HIDAPI driver
Sam Lantinga e888c99f 2022-09-23T16:26:41 Fixed the entry for the Nacon PS4 Compact Controller
Sam Lantinga 4ea64fee 2022-09-23T15:28:32 Fixed manufacturer/product name deduplication for the Razer Raiju Tournament Edition controller
Sam Lantinga 56b91ea7 2022-09-23T15:27:40 Fixed feature detection for the Razer Raiju Tournament Edition controller
Sam Lantinga 34f928ab 2022-09-23T09:26:18 Generate the correct name for ASTRO Gaming controllers Manufacturer "ASTRO Gaming" and product "ASTRO C40" turns into "ASTRO C40"
Sam Lantinga 6ddef7c2 2022-09-23T09:20:27 Generate the correct name for Qanba and Mad Catz controllers
Sam Lantinga c2ae2ccc 2022-09-23T09:10:51 Added feature support for the Razer Raiju to the HIDAPI driver
Sam Lantinga 51fefd1c 2022-09-23T02:39:35 Added support for third party PS3 controllers to the HIDAPI driver
Sam Lantinga 5b4c10fc 2022-09-23T02:36:53 Return true from IsSupportedDevice if it's a device that we _might_ support This forces an update of the device list so we have the correct state when we check to see whether a device is being handled by HIDAPI
Sam Lantinga 1d34a524 2022-09-23T00:38:23 Fixed shadowed variable warning