kc3-lang/SDL/src/joystick/hidapi/SDL_hidapi_gamecube.c

Branch :


Log

Author Commit Date CI Message
94d43186 2022-02-22 00:41:15 GameCubeAdapter: Add suppport for all rumble modes This adds support for all 3 of the gamecube controller's rumble modes Rumble: 1 Stop: 0 StopHard: 2 This is useful for applications that need the full range of support This also adds a hint to control rumble behavior, defaults 0 to maintain compatibility
60deadba 2022-01-17 17:22:30 re-use return value of SDL_SetError/WIN_SetErrorFromHRESULT/SDL_OutOfMemory
120c76c8 2022-01-03 09:40:00 Updated copyright for 2022
66058bbb 2021-11-15 16:52:56 Fixed exception accessing Bluetooth devices on Android 12 Since accessing Bluetooth prompts the user for permission on both Android and iOS, and we only need it for Steam Controller support, we'll leave it off by default. You can enable it by setting the hint SDL_HINT_JOYSTICK_HIDAPI_STEAM to "1" before calling SDL_Init() Fixes https://github.com/libsdl-org/SDL/issues/4952
afccabb8 2021-11-11 12:12:05 joystick: Add capability flags for rumble and trigger rumble When API limitations force us to guess, we favor a false positive (reporting support when it doesn't exist) compared to a false negative.
1ccfbf96 2021-11-11 11:13:08 joystick: Convert HasLED() into a generic GetCapabilities() function
5b646cd1 2021-11-07 22:58:44 Build hidapi code into SDL as a new public API This prevents conflicts with hidapi linked with applications, as well as allowing applications to make use of HIDAPI on Android and other platforms that might not normally have an implementation available.
d135c076 2021-07-08 13:22:41 Added SDL_GameControllerSendEffect() and SDL_JoystickSendEffect() to allow applications to send custom effects to the PS4 and PS5 controllers See testgamecontroller.c for an example of a custom PS5 trigger effect
2cc70ca3 2021-01-29 13:04:01 Fixed crash if the GameCube controller hasn't been opened yet
c857b5e0 2021-01-23 11:21:01 Minor cleanup
f68b36df 2021-01-22 11:42:42 Added support for the EVORETRO GameCube Adapter in PC mode
9e45372a 2021-01-21 22:47:37 Fixed build on Android and iOS
3527b494 2021-01-21 22:30:34 Fixed initializing the Nyko and EVORETRO GameCube adaptors This requires root on most Linux distributions, as we have to directly send USB messages to the devices to enable input reports.
e2f46ed8 2021-01-14 23:49:20 Always lock the HIDAPI device when closing, in case rumble is pending
9130f7c3 2021-01-02 10:25:38 Updated copyright for 2021
5b3616c3 2020-11-23 18: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-17 10: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
1e2caac5 2020-11-11 18:57:37 Added SDL_JoystickRumbleTriggers() and SDL_GameControllerRumbleTriggers()
e555d453 2020-11-05 11:07:54 Added SDL_JoystickHasLED Currently, this is only supported by the PS4 HIDAPI driver.
83cddd2e 2020-04-30 11:57:29 Add SDL_JoystickSetLED. Currently, this is only supported by the PS4 HIDAPI driver.
b6afbe63 2020-04-07 09:38:57 Added SDL_log.h to SDL_internal.h so logging is available everywhere
47da53b9 2020-03-16 14:49:20 Fix compiler warnings
4dea340c 2020-03-16 12: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.
fe979921 2020-03-10 17:35:14 Read the buttons on Nintendo Switch and GameCube controllers as they are labeled, and swap them if the applications wants positional button data instead.
4caa6a06 2020-03-10 16:41:42 Fixed bug 4921 - Do not swap B/X buttons on GameCube controller unless it's requested Ethan Lee Basically replicating the solution of the Switch Controller's button label issue. Physical layout should take priority unless it's explicitly requested by the user or application!
1684606f 2020-02-04 15:26:56 Fixed long delay on main thread caused by blocking rumble writes in HIDAPI drivers There is now a thread that handles all HIDAPI rumble requests and a lock that guarantees that we're not reading and writing the device at the same time.
6efebf17 2020-02-04 12:48:53 Moved rumble expiration to the main joystick handling level, and prevent sending the driver layer duplicate rumble requests.
9c3d1602 2020-01-19 11:43:36 Refactored code so SDL_GetJoystickGameControllerType() is called less during controller detection
43aa1fa9 2020-01-18 11: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-16 20:49:25 Updated copyright date for 2020
4c9628a0 2019-12-30 17:56:56 Fixed GameCube controller axis and trigger ranges and X and B button being swapped
a9482a1d 2019-12-30 09:44:32 Added support for the Nintendo GameCube adapter, tested on Steam Link hardware
46e1377d 2019-12-20 20: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()
1db56619 2019-12-19 18:03:28 Fixed rare infinite rumble in HIDAPI controller driver
25bd5070 2019-12-19 18:00:08 Fixed GameCube rumble
fead0b24 2019-12-19 15:02:12 Added missing files from previous commits
be6cda9f 2019-06-19 15:54:21 Rolling back GameCube HIDAPI support It causes the HIDAPI devices to always be opened on enumeration, which causes crashes in the Windows drivers when multiple applications are reading and writing at the same time. We can revisit this after 2.0.10 release.
56e2b9a4 2019-06-19 06:43:54 Handle GameCube WaveBird controller differences Make wireless GameCube controllers use unknown power level instead of wired and don't allow rumble (it doesn't have hardware for it).
6f63c1c3 2019-06-19 06:43:36 Make GameCube controllers only rumble if both USB cables are connected The Nintendo USB GameCube Adapter has two USB connectors. Black for data and grey for additional power for rumble. The Wii U and other software require both cables to use rumble. The rumble is weaker without the second USB cable. Other than that I don't know if there is any negative side affects from using rumble with only one cable.
82af4276 2019-06-08 13:36:59 hidapi: Use GameCube adapter controller port for player index The Nintendo USB GameCube adapter has four controller ports. Return the port number as 0 to 3 from SDL_JoystickGetPlayerIndex() and SDL_JoystickGetDevicePlayerIndex().
f07c992b 2019-03-17 12:36:40 hidapi: Add GCN L/R buttons, just in case someone wants them...
c5286156 2019-03-12 20:27:54 hidapi: Add support for Wii U/Switch USB GameCube controller adapter. Note that a single USB device is responsible for all 4 joysticks, so a large rewrite of the DeviceDriver functions was necessary to allow a single device to produce multiple joysticks.