Commit Graph

1628 Commits

Author SHA1 Message Date
Mathieu Eyraud
dda971833e Add missing break
(cherry picked from commit 0500fca00c)
2023-07-29 17:33:20 +03:00
Ozkan Sezer
38a5aed974 minor os/2 stuff merged from the bitwiseworks' fork 2023-07-28 23:56:20 +03:00
Sam Lantinga
301f227879 Sorted controller list
(cherry picked from commit 3174d0b970)
(cherry picked from commit 507be6c3f8)
2023-07-27 12:50:32 -07:00
Max Maisel
2ca4c0233a 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.

(cherry picked from commit 27b8abb056)
(cherry picked from commit f4561db69a)
2023-07-27 12:50:32 -07:00
Sam Lantinga
fb57ba763d Fixed LED pending check failing when the controller timestamp is very large
In this case we know the controller has been on for a while and the Bluetooth connection LED cycle is complete.

Also fixed the timestamp being zero the first time it is checked

(cherry picked from commit bd4f155bbb)
(cherry picked from commit f7dc8c0eaa)
2023-07-17 17:46:30 -07:00
Sam Lantinga
63a98d0da2 Don't send k_EPS5FeatureReportIdCapabilities to Sony PS5 controllers
This report is for third party controllers only.

(cherry picked from commit 16dd5f0da4)
(cherry picked from commit bb036ef544)
2023-07-17 17:46:29 -07:00
Sam Lantinga
78f11e05ff Don't tickle Bluetooth PS5 controllers in simple mode with an effects packet
That will put the PS5 controller into enhanced mode, which breaks DirectInput games

(cherry picked from commit 2fef0be2f6)
(cherry picked from commit 910dad505a)
2023-07-17 17:46:29 -07:00
Sam Lantinga
ff4fd93f4c Fixed getting the CRC of virtual joysticks without a VID/PID
(cherry picked from commit b40fb5c51e)
(cherry picked from commit 6089b35706)
2023-07-16 04:38:48 -07:00
Sam Lantinga
cb4b41ddf7 RAWINPUT_RegisterNotifications() should return int, for consistency
(cherry picked from commit 1903d7b1bf)
(cherry picked from commit e8b6edd5a0)
2023-07-11 10:54:44 -07:00
Sam Lantinga
5a2d165b7b Improved RAWINPUT <-> XInput/WGI device correlation
If there is only one controller slot available, assume that's the one matching new RAWINPUt devices. This will be right most of the time, and uncorrelation will fix any bad guesses.

(cherry picked from commit 41882a1acb)
(cherry picked from commit 34c5bde355)
2023-07-11 10:54:44 -07:00
Sam Lantinga
11022c23b2 Fixed crash if RAWINPUT is not initialized
We shouldn't be doing any of this work in that case

(cherry picked from commit dfc5e6964e)
(cherry picked from commit 9117b2e300)
2023-07-11 10:54:44 -07:00
Sam Lantinga
b7c93a2d77 Don't send k_ePS4FeatureReportIdCapabilities to Sony PS4 controllers
This report is for third party controllers only, and might be causing issues with fake PS4 controllers.

Reference https://github.com/libsdl-org/SDL/issues/7960

(cherry picked from commit 092a4b780c)
(cherry picked from commit 6bf5f5a221)
2023-07-10 09:49:17 -07:00
Sam Lantinga
0dbeec449f Re-added mappings for older Xbox One controllers on Linux
The xpad kernel driver doesn't know about these controllers and ends up using BTN_C and BTN_Z and the automatic mapping doesn't work correctly.

It turns out VID 0x045e and PID 0x02e0 is used by the 8BitDo SN30 Pro when connecting via Bluetooth in XInput mode.

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

(cherry picked from commit 80e1c75e1c)
(cherry picked from commit 156c7badf5)
2023-07-09 09:51:10 -07:00
Sam Lantinga
a614d8f8f7 Fixed mapping BTN_TR2 to right trigger
(cherry picked from commit ea60da5b94)
(cherry picked from commit 4b1dd54a56)
2023-07-08 18:19:06 -07:00
Sam Lantinga
bb3997d81d Added WGI gamepad added/removed listeners for RAWINPUT
This fixes WGI correlation on startup when the WGI gamepad list isn't populated yet

(cherry picked from commit f047e178b6)
(cherry picked from commit f8a0135edf)
2023-07-08 10:40:56 -07:00
Sam Lantinga
035121040f Don't tickle Bluetooth PS4 controllers in simple mode with an effects packet
That will put the PS4 controller into enhanced mode, which breaks DirectInput games

(cherry picked from commit efed24850a)
(cherry picked from commit 1f7bc08884)
2023-07-08 10:40:55 -07:00
Sam Lantinga
f2d016e353 Lazily initialize the WGI gamepad support
Initializing "Windows.Gaming.Input.Gamepad" will put Bluetooth PS4 controllers into enhanced report mode, which breaks any game using DirectInput. Let's wait to do this until absolutely necessary.

(cherry picked from commit 785f57eb91)
(cherry picked from commit de849d5e6f)
2023-07-08 10:40:55 -07:00
Sam Lantinga
b858242823 Added the hint SDL_HINT_JOYSTICK_WGI to control whether to use Windows.Gaming.Input for controllers
(cherry picked from commit a6228e7aaf)
2023-07-08 09:35:22 -07:00
Sam Lantinga
46927b1362 Prefer using XInput for rumble over WGI, as it allows rumble in the background
(cherry picked from commit e16a83d393)
2023-07-07 09:48:25 -07:00
Sam Lantinga
3bee5cf538 Continue running XInput detection while RAWINPUT is active
This allows us to re-enable XInput correlation for RAWINPUT devices without reintroducing the controller shutdown bug for controllers using the wireless adapter in https://github.com/libsdl-org/SDL/issues/3468.

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

(cherry picked from commit a0a3957eb6)
2023-07-07 09:48:25 -07:00
Sam Lantinga
7207f5155b Added Linux mapping for the Logitech Chillstream
Fixes https://github.com/libsdl-org/SDL/issues/7829

(cherry picked from commit 675fc8c38f)
(cherry picked from commit fc0854651b)
2023-06-29 16:16:10 -07:00
Sam Lantinga
4af1f6ed0c Fixed build
(cherry picked from commit 099e53f3a5)
2023-06-29 11:26:16 -07:00
Sam Lantinga
446fb3028e Added support for the Nintendo Online Famicom controllers
(cherry picked from commit baa9c57581)
(cherry picked from commit 0f940cb6ce)
2023-06-29 11:18:30 -07:00
Sam Lantinga
7fa2ddb0de Fixed Nintendo Switch Pro controllers that don't have readable user calibration
(cherry picked from commit 9ee1200e6f)
(cherry picked from commit 170428b107)
2023-06-27 07:50:41 -07:00
Narr the Reg
9aca2a4339 hidapi: switch: Handle MCU input reports
(cherry picked from commit 425062c123)
(cherry picked from commit 950ff0056a)
2023-06-26 10:07:35 -07:00
Sam Lantinga
491fba1d06 SDL_FindFreePlayerIndex() will always return the next available player index
Fixes https://github.com/libsdl-org/SDL/issues/7868

(cherry picked from commit 87e916dd21)
(cherry picked from commit 38619bb28d)
2023-06-24 15:40:30 -07:00
Sam Lantinga
c27f3ead7c Removed 100 ms hitch when querying third party Nintendo Switch controllers that don't respond to request for info
(cherry picked from commit 8acf729650)
2023-06-21 14:13:09 -07:00
Sam Lantinga
1429e525fb Use default sensor calibration if we can't read it from the Nintendo Switch controller
Fixes https://github.com/libsdl-org/SDL/issues/7830

(cherry picked from commit 3694dabe7c)
(cherry picked from commit dfbdaca2b8)
2023-06-21 10:41:58 -07:00
Sam Lantinga
333a03f1ec We don't know in advance whether a device is connected over Bluetooth in SDL2 2023-06-17 13:15:07 -07:00
Sam Lantinga
5b8fc907df Added support for the GameSir G4 Pro
We can't read device info or IMU calibration from this controller, and it has no gyro or accelerometer, but is otherwise perfectly functional.

(cherry picked from commit f168f9c813)
2023-06-17 13:07:03 -07:00
Sam Lantinga
3a5abee512 Removed unused function
(cherry picked from commit 73927b0948)
2023-06-14 15:16:44 -07:00
Sam Lantinga
e7ee375f22 Fixed third-party Nintendo Switch Pro controllers shutting down when we try to set the home LED.
This fixes the PDP Afterglow Wireless Deluxe Controller.

(cherry picked from commit 0c16f4faf0)
2023-06-14 15:15:27 -07:00
Sam Lantinga
4aec54988c Allow switching licensed Nintendo Switch Pro controllers into gyro input mode
(cherry picked from commit 8c95bd814b)
2023-06-14 15:13:11 -07:00
Sam Lantinga
271e03f0d7 Added support for the PowerA Fusion Pro Wireless Controller in Bluetooth mode
This controller shows up with a VID/PID of 0, but has full functionality over Bluetooth

(cherry picked from commit cdfc0c5a33)
2023-06-14 15:12:56 -07:00
Sam Lantinga
1f5b21ead5 Removed more Linux Xbox mappings in favor of the automatic mapping
This fixes the Xbox Series X share button on Linux 5.x kernels.

(cherry picked from commit 0f4b15e16b)
2023-06-13 17:06:24 -07:00
Sam Lantinga
35c7884929 Use the automatic mapping instead of a hardcoded one for Xbox controllers on Linux
This is much more robust and able to dynamically create a mapping for Xbox One S, Xbox Series X, and Xbox Elite 2 controllers.

(cherry picked from commit 9567989eb3)
2023-06-13 17:06:21 -07:00
Sam Lantinga
3f6c4ec6d0 Cleanup for previous change, fixing typos, etc.
(cherry picked from commit 883b0f4071)
2023-06-13 17:04:54 -07:00
Sam Lantinga
fc72f12e7f Added automatic mapping support for Xbox controllers on the 6.x Linux kernels
This automatically adds support for the share button and paddles when present.

(cherry picked from commit db1d4d3d76)
2023-06-13 17:04:17 -07:00
Ozkan Sezer
681f67d353 fixed build after commit d2372c8538. 2023-06-14 00:25:50 +03:00
Sam Lantinga
d2372c8538 Added automatic mapping for Xbox Elite paddles using the xpadneo driver
We can't actually tell yet whether a controller has paddles, so this code isn't effective, but I'll file an upstream issue and see if we can get that resolved.

(cherry picked from commit b0677f476f)
2023-06-13 10:12:07 -07:00
Sam Lantinga
7db23f4ef1 Fixed joystick vendor detection in Linux automatic gamepad mapping
(cherry picked from commit 071d1e29dd)
2023-06-13 10:11:55 -07:00
Simon McVittie
36ff6327b0 linux: Improve gamepad mapping heuristic to accept Android conventions
This heuristic for gamepads without a more specific mapping already
tried two incompatible conventions for handling triggers: the Linux
Gamepad Specification uses hat switch 2 for the triggers (for whatever
reason), but the de facto standard set by the drivers for older Xbox
and Playstation controllers represents each trigger as the Z-axis of
the nearest analog stick.

Android documentation encourages Bluetooth gamepad manufacturers to use
a third incompatible convention where the left and right triggers are
represented as the brake and gas pedals of a driving simulator
controller. The Android convention also changes the representation of
the right stick: instead of using X and Y rotation as a second pair
of axes, Android uses Z position as a second horizontal axis, and
Z rotation as a second vertical axis.

Try to cope gracefully with all of these. This will hopefully resolve
the issue described in #5406 (when using unpatched kernels).

Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit cf1dc66e2c)
2023-06-13 05:46:01 -07:00
Simon McVittie
26a38a0b20 linux: Reduce magic numbers when mapping gamepad axes
The bitfield `mapped` has two different sets of meanings, depending
whether we're setting up the triggers or the d-pad. Represent them
as symbolic constants rather than opaque integers.

Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit c4d49fadd4)
2023-06-13 05:45:43 -07:00
Sam Lantinga
c77aaa5d99 Fixed n3ds build
(cherry picked from commit d95dbe78bb)
2023-06-12 15:41:09 -07:00
Sam Lantinga
e4e0a12901 Reduce the chance of destroying the joystick mutex while it's in use
Fixes https://github.com/libsdl-org/SDL/issues/7811

(cherry picked from commit 6390165fd4c193631d6780758a4aeec0d02b90eb)
2023-06-12 15:31:16 -07:00
Sam Lantinga
320f3fffbe Fixed querying device info on the MOBAPAD M073
The query packet needs to contain valid rumble data in order to be accepted by the controller.

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

(cherry picked from commit 5490873daa)
2023-06-09 18:43:14 -07:00
Sam Lantinga
30b4d90f1c Only update the serial number if it hasn't already been set
This fixes the serial number for Nintendo Switch Pro, which is queried from the hardware in device initialization, and was later clobbered by the USB string which isn't correct.

(cherry picked from commit 2042e9c4e3)
2023-06-09 17:36:06 -07:00
Sam Lantinga
1cdd6dc829 Fixed reading input from the Razer Atrox Arcade Stick using Windows Gaming Input
(cherry picked from commit 172cfca51332a845abf9c141ae56aa121fe4ada5)
2023-06-09 14:36:12 -07:00
Sam Lantinga
dc94cca8dd Fixed typo in cherry-pick (thanks @HadesD!) 2023-06-03 11:57:08 -07:00
Sam Lantinga
97fe777ab4 Steam uses a different VID/PID for the Steam Virtual Gamepad on Windows
(cherry picked from commit 6815e75caf)
2023-06-03 11:40:58 -07:00