Skip to content

Commit d11b64f

Browse files
committed
Introduce new joypad features provided by SDL3
This commit adds support for new SDL joypad features that weren't previously possible due to older custom joypad implementations. These features include accelerometer, gyroscope, LED lights, touchpads and more.
1 parent 45509c2 commit d11b64f

File tree

16 files changed

+2869
-39
lines changed

16 files changed

+2869
-39
lines changed

COPYRIGHT.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ Comment: Godot Engine logo
5353
Copyright: 2017, Andrea Calabró
5454
License: CC-BY-4.0
5555

56+
Files: core/input/input.cpp ("joy_adaptive_triggers_*" methods)
57+
Comment: Factories for all DualSense trigger effects
58+
Copyright: 2021-2022 John "Nielk1" Klein
59+
License: Expat
60+
5661
Files: core/math/convex_hull.cpp
5762
core/math/convex_hull.h
5863
Comment: Bullet Continuous Collision Detection and Physics Library

core/core_constants.cpp

Lines changed: 54 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,16 @@ void register_global_constants() {
527527
BIND_CORE_BITFIELD_CLASS_FLAG(MouseButtonMask, MOUSE_BUTTON_MASK, MB_XBUTTON1);
528528
BIND_CORE_BITFIELD_CLASS_FLAG(MouseButtonMask, MOUSE_BUTTON_MASK, MB_XBUTTON2);
529529

530+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, INVALID);
531+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, LEFT_X);
532+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, LEFT_Y);
533+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, RIGHT_X);
534+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, RIGHT_Y);
535+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, TRIGGER_LEFT);
536+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, TRIGGER_RIGHT);
537+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, SDL_MAX);
538+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, MAX);
539+
530540
BIND_CORE_ENUM_CLASS_CONSTANT(JoyButton, JOY_BUTTON, INVALID);
531541
BIND_CORE_ENUM_CLASS_CONSTANT(JoyButton, JOY_BUTTON, A);
532542
BIND_CORE_ENUM_CLASS_CONSTANT(JoyButton, JOY_BUTTON, B);
@@ -552,15 +562,50 @@ void register_global_constants() {
552562
BIND_CORE_ENUM_CLASS_CONSTANT(JoyButton, JOY_BUTTON, SDL_MAX);
553563
BIND_CORE_ENUM_CLASS_CONSTANT(JoyButton, JOY_BUTTON, MAX);
554564

555-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, INVALID);
556-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, LEFT_X);
557-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, LEFT_Y);
558-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, RIGHT_X);
559-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, RIGHT_Y);
560-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, TRIGGER_LEFT);
561-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, TRIGGER_RIGHT);
562-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, SDL_MAX);
563-
BIND_CORE_ENUM_CLASS_CONSTANT(JoyAxis, JOY_AXIS, MAX);
565+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, INVALID);
566+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, UNKNOWN);
567+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, STANDARD);
568+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, XBOX360);
569+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, XBOXONE);
570+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, PS3);
571+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, PS4);
572+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, PS5);
573+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, SWITCH_PRO);
574+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, JOYCON_LEFT);
575+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, JOYCON_RIGHT);
576+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyModel, JOY_MODEL, JOYCON_PAIR);
577+
578+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyScheme, JOY_SCHEME, INVALID);
579+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyScheme, JOY_SCHEME, UNKNOWN);
580+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyScheme, JOY_SCHEME, STANDARD);
581+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyScheme, JOY_SCHEME, XBOX);
582+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyScheme, JOY_SCHEME, PLAYSTATION);
583+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyScheme, JOY_SCHEME, NINTENDO);
584+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyScheme, JOY_SCHEME, JOYCON_HORIZONTAL);
585+
586+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, INVALID);
587+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, UNKNOWN);
588+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, GAMEPAD);
589+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, WHEEL);
590+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, ARCADE_STICK);
591+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, FLIGHT_STICK);
592+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, DANCE_PAD);
593+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, GUITAR);
594+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, DRUM_KIT);
595+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, ARCADE_PAD);
596+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyDeviceType, JOY_DEVICE, THROTTLE);
597+
598+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyPowerState, JOY_POWER, INVALID);
599+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyPowerState, JOY_POWER, UNKNOWN);
600+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyPowerState, JOY_POWER, ON_BATTERY);
601+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyPowerState, JOY_POWER, NO_BATTERY);
602+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyPowerState, JOY_POWER, CHARGING);
603+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyPowerState, JOY_POWER, FULL_BATTERY);
604+
605+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyConnectionState, JOY_CONNECTION, INVALID);
606+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyConnectionState, JOY_CONNECTION, UNKNOWN);
607+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyConnectionState, JOY_CONNECTION, WIRED);
608+
BIND_CORE_ENUM_CLASS_CONSTANT(JoyConnectionState, JOY_CONNECTION, WIRELESS);
564609

565610
BIND_CORE_ENUM_CLASS_CONSTANT(MIDIMessage, MIDI_MESSAGE, NONE);
566611
BIND_CORE_ENUM_CLASS_CONSTANT(MIDIMessage, MIDI_MESSAGE, NOTE_OFF);

0 commit comments

Comments
 (0)