Commit Graph

1711 Commits

Author SHA1 Message Date
luzpaz
37e567994d Fix remaining typos (#7921)
* Fix remaining typos

Found via `codespell -q 3 -S *.hex,*.pdf,./src/libm,./src/hidapi,./src/stdlib/SDL_malloc.c,./src/video/x11/edid.h -L caf,currenty,datas,einstance,fo,hda,lod,mata,parm,parms,pevent,pevents,pixelx,requestor,ser,statics,te,texturers,thid,uscaled,windowz`
2023-07-03 12:46:47 -07:00
Sam Lantinga
69c7a49990 Fixed build warnings 2023-06-29 22:15:23 -07:00
Sam Lantinga
675fc8c38f Added Linux mapping for the Logitech Chillstream
Fixes https://github.com/libsdl-org/SDL/issues/7829
2023-06-29 16:10:55 -07:00
Sam Lantinga
ba9e924e57 Added additional debug logging for Linux joysticks 2023-06-29 16:09:55 -07:00
Sam Lantinga
baa9c57581 Added support for the Nintendo Online Famicom controllers 2023-06-28 19:15:43 -07:00
Sam Lantinga
9ee1200e6f Fixed Nintendo Switch Pro controllers that don't have readable user calibration 2023-06-27 07:48:42 -07:00
Narr the Reg
425062c123 hidapi: switch: Handle MCU input reports 2023-06-26 10:01:49 -07:00
Ozkan Sezer
02398a8f11 Allow building against old Linux kernels. 2023-06-26 18:01:50 +03:00
Sam Lantinga
fd062657dd Fixed build 2023-06-26 07:43:44 -07:00
meyraud705
6cc21af900 Don't keep sensor file open while sensors are disabled 2023-06-26 07:32:40 -07:00
meyraud705
9cfac88054 Improve sensor detection for Linux gamepad 2023-06-26 07:32:40 -07:00
meyraud705
000277060c Add support for sensor to joystick on Linux (evdev) 2023-06-26 07:32:40 -07:00
Sam Lantinga
87e916dd21 SDL_FindFreePlayerIndex() will always return the next available player index
Fixes https://github.com/libsdl-org/SDL/issues/7868
2023-06-24 15:38:38 -07:00
Sam Lantinga
267fdd7daa Removed Bluetooth connection detection now that we get it from hidapi 2023-06-23 15:50:07 -07:00
Sam Lantinga
44bae1e8a9 Corrected the Victrix FS Pro as a PS4 controller instead of a PS3 controller 2023-06-23 14:27:21 -07:00
Sylvain
6f344f29b8 After using SDL_qsort, mark sort_entries() as SDLCALL 2023-06-23 12:52:05 +02:00
Sylvain
6cde3835f0 Remove some use of C runtime functions (strlen, qsort) 2023-06-23 10:51:15 +02:00
Sam Lantinga
a807b14957 Greatly improved Xbox One controller initialization sequence 2023-06-22 17:15:35 -07:00
Sam Lantinga
8aee6908bb Make sure we send update complete events for delayed guide buttons 2023-06-21 18:42:25 -07:00
Sam Lantinga
4c9fb3e169 Added the events SDL_EVENT_JOYSTICK_UPDATE_COMPLETE and SDL_EVENT_GAMEPAD_UPDATE_COMPLETE
This allows the application to tell when a joystick polling cycle is complete and can process state changes as a single atomic update. It is disabled by default, at least for now.
2023-06-21 13:59:53 -07:00
Sam Lantinga
214d5daa3c Removed 100 ms hitch when querying third party Nintendo Switch controllers that don't respond to request for info
Also take advantage of the fact that we know whether the device is connected over Bluetooth now.
2023-06-21 12:14:50 -07:00
Sam Lantinga
3694dabe7c Use default sensor calibration if we can't read it from the Nintendo Switch controller
Fixes https://github.com/libsdl-org/SDL/issues/7830
2023-06-21 10:28:45 -07:00
Sam Lantinga
5f3213eb0e Added support for gamepad sensor fusion with the Razer Kishi 2023-06-20 08:41:15 -07:00
Sam Lantinga
1a9c04e9f1 Don't try to update the gamepad fusion sensors manually, instead rely on the normal update flow 2023-06-19 19:41:20 -07:00
Sam Lantinga
20ea35138f Use a separate sensor watching function for gamepad events to avoid reliance on system sensor events and prevent a potential deadlock 2023-06-19 16:17:34 -07:00
Sam Lantinga
f168f9c813 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.
2023-06-17 12:42:55 -07:00
Sam Lantinga
9fe384b696 Fixed display orientation function names for SDL 3.0 convention 2023-06-17 09:28:27 -07:00
Sam Lantinga
d91e96e7f5 Use SDL_HINT_GAMECONTROLLER_SENSOR_FUSION as a list of controllers to enable sensor fusion
There are too many wraparound style controllers out there to enumerate them all, so instead make this a user option in applications that support it.
2023-06-17 08:59:52 -07:00
Sam Lantinga
610c31c7b7 Generalized the sensor coordinate transform for wraparound gamepads 2023-06-17 08:28:37 -07:00
Sam Lantinga
9eb5eab0ad Use the correct orientation transformation based on whether the device is naturally landscape or portrait 2023-06-17 08:04:34 -07:00
Sam Lantinga
8de6ce7e92 Rotate the sensor axes to match gamepad orientation when using the device sensors for game controllers 2023-06-16 17:48:34 -07:00
Sam Lantinga
a9c86e518a Added the Razer Edge controller to the list of wraparound controllers 2023-06-16 17:48:18 -07:00
Sam Lantinga
c207cd3f56 Added the Razer Junglecat to the wraparound controller list 2023-06-16 16:04:12 -07:00
Sam Lantinga
42e4639a5e For gamepads that don't have their own sensors, try to use the system sensors.
This allows using the gyro and accelerometer in handheld devices in conjunction with built-in or wraparound controllers.
2023-06-16 14:44:59 -07:00
Simon McVittie
0d5aa70e62 linux: Pass evdev properties when guessing device type
In newer kernels, devices that can be positively identified as a
particular device type (for example accelerometers) get a property
bit set. Plumb this information through into the function, but don't
use it for anything just yet.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2023-06-16 08:54:41 -07:00
Sam Lantinga
73927b0948 Removed unused function 2023-06-14 15:16:21 -07:00
Sam Lantinga
0c16f4faf0 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.
2023-06-14 10:15:06 -07:00
Sam Lantinga
23e007d3b7 Fixed third party Nintendo Switch Pro Controller resetting when being sent an unsupported command to set the Home LED
Tested with the PowerA Fusion Pro Wireless Controller in Bluetooth mode
2023-06-14 00:02:32 -07:00
Sam Lantinga
8c95bd814b Allow switching licensed Nintendo Switch Pro controllers into gyro input mode 2023-06-13 22:40:51 -07:00
Sam Lantinga
cdfc0c5a33 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
2023-06-13 22:20:58 -07:00
Sam Lantinga
0f4b15e16b Removed more Linux Xbox mappings in favor of the automatic mapping
This fixes the Xbox Series X share button on Linux 5.x kernels.
2023-06-13 16:53:10 -07:00
Sam Lantinga
883b0f4071 Cleanup for previous change, fixing typos, etc. 2023-06-13 16:49:33 -07:00
Sam Lantinga
9567989eb3 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.
2023-06-13 16:41:52 -07:00
Sam Lantinga
db1d4d3d76 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.
2023-06-13 16:40:30 -07:00
Sam Lantinga
b0677f476f 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.
2023-06-13 10:06:36 -07:00
Sam Lantinga
071d1e29dd Fixed joystick vendor detection in Linux automatic gamepad mapping 2023-06-13 10:05:19 -07:00
Simon McVittie
cf1dc66e2c 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>
2023-06-13 05:38:26 -07:00
Simon McVittie
c4d49fadd4 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>
2023-06-13 05:38:26 -07:00
Sam Lantinga
d95dbe78bb Fixed n3ds build 2023-06-12 15:39:57 -07:00
Sam Lantinga
cdc40ee054 Reduce the chance of destroying the joystick mutex while it's in use
Fixes https://github.com/libsdl-org/SDL/issues/7811
2023-06-12 15:27:45 -07:00