This PR adds the ability to use touchpads on supported controllers, such as DualShock 4 and DualSense.
Currently there's no InputEvent that gets fired when a finger appears/moves on a touchpad.
The MISC2-MISC6 button strings are recognized by SDL3 but were not
mapped in Godot's JoyButton enum, causing 'Unrecognized output string'
warnings for controllers that use these buttons.
This adds:
- JoyButton::MISC2-MISC6 enum values (21-25)
- 'misc2'-'misc6' string mappings in _joy_buttons array
- GDScript bindings for JOY_BUTTON_MISC2 through JOY_BUTTON_MISC6
- Documentation entries in @GlobalScope.xml
- Updates JoyButton::SDL_MAX from 21 to 26
SDL input driver did not have the "xinput_index", "raw_name", "vendor_id" and "product_id" fields for this method and exposed an additional, essentially useless for the users "mapping_handled" field. This commit fixes these issues.
Made possible by EIREXE, xsellier and the SDL team.
This commit includes statically linked SDL3 for Windows, Linux and macOS.
The vendored copy of SDL3 was setup to only build the required subsystems
for gamepad/joystick support, with some patches to be able to make it as
minimal as possible and reduce the impact on binary size and code size.
Co-authored-by: Álex Román Núñez <eirexe123@gmail.com>
Co-authored-by: Xavier Sellier <xsellier@gmail.com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
- Returns an empty list when there's not registered plugins, thus preventing the creation of spurious iterator objects
- Inline `Godot#getRotatedValues(...)` given it only had a single caller. This allows to remove the allocation of a float array on each call and replace it with float variables
- Disable sensor events by default. Sensor events can fired at 10-100s Hz taking cpu and memory resources. Now the use of sensor data is behind a project setting allowing projects that have use of it to enable it, while other projects don't pay the cost for a feature they don't use
- Create a pool of specialized input `Runnable` objects to prevent spurious, unbounded `Runnable` allocations
- Disable showing the boot logo for Android XR projects
- Delete locale references of jni strings