Browse Source

docs: Explain events for already plugged in controllers (#11286)

Jordan Christiansen 6 months ago
parent
commit
9c848e08e4
2 changed files with 33 additions and 0 deletions
  1. 13 0
      include/SDL3/SDL_events.h
  2. 20 0
      include/SDL3/SDL_gamepad.h

+ 13 - 0
include/SDL3/SDL_events.h

@@ -549,7 +549,12 @@ typedef struct SDL_JoyButtonEvent
 /**
  * Joystick device event structure (event.jdevice.*)
  *
+ * SDL will send JOYSTICK_ADDED events for devices that
+ * are already plugged in during SDL_Init.
+ *
  * \since This struct is available since SDL 3.0.0.
+ *
+ * \sa SDL_GamepadDeviceEvent
  */
 typedef struct SDL_JoyDeviceEvent
 {
@@ -615,7 +620,15 @@ typedef struct SDL_GamepadButtonEvent
 /**
  * Gamepad device event structure (event.gdevice.*)
  *
+ * Joysticks that are supported gamepads receive both an SDL_JoyDeviceEvent and
+ * an SDL_GamepadDeviceEvent.
+ *
+ * SDL will send GAMEPAD_ADDED events for joysticks
+ * that are already plugged in during SDL_Init() and are recognized as gamepads. It will also send events for joysticks that get gamepad mappings at runtime.
+ *
  * \since This struct is available since SDL 3.0.0.
+ *
+ * \sa SDL_JoyDeviceEvent
  */
 typedef struct SDL_GamepadDeviceEvent
 {

+ 20 - 0
include/SDL3/SDL_gamepad.h

@@ -295,6 +295,9 @@ typedef struct SDL_GamepadBinding
  *
  * Buttons can be used as a gamepad axes and vice versa.
  *
+ * If a device with this GUID is already plugged in, SDL will generate an
+ * SDL_EVENT_GAMEPAD_ADDED event.
+ *
  * This string shows an example of a valid mapping for a gamepad:
  *
  * ```c
@@ -309,8 +312,13 @@ typedef struct SDL_GamepadBinding
  *
  * \since This function is available since SDL 3.0.0.
  *
+ * \sa SDL_AddGamepadMappingsFromFile
+ * \sa SDL_AddGamepadMappingsFromIO
  * \sa SDL_GetGamepadMapping
  * \sa SDL_GetGamepadMappingForGUID
+ * \sa SDL_HINT_GAMECONTROLLERCONFIG
+ * \sa SDL_HINT_GAMECONTROLLERCONFIG_FILE
+ * \sa SDL_EVENT_GAMEPAD_ADDED
  */
 extern SDL_DECLSPEC int SDLCALL SDL_AddGamepadMapping(const char *mapping);
 
@@ -323,6 +331,9 @@ extern SDL_DECLSPEC int SDLCALL SDL_AddGamepadMapping(const char *mapping);
  * If a new mapping is loaded for an already known gamepad GUID, the later
  * version will overwrite the one currently loaded.
  *
+ * Any new mappings for already plugged in controllers will generate
+ * SDL_EVENT_GAMEPAD_ADDED events.
+ *
  * Mappings not belonging to the current platform or with no platform field
  * specified will be ignored (i.e. mappings for Linux will be ignored in
  * Windows, etc).
@@ -345,6 +356,9 @@ extern SDL_DECLSPEC int SDLCALL SDL_AddGamepadMapping(const char *mapping);
  * \sa SDL_AddGamepadMappingsFromFile
  * \sa SDL_GetGamepadMapping
  * \sa SDL_GetGamepadMappingForGUID
+ * \sa SDL_HINT_GAMECONTROLLERCONFIG
+ * \sa SDL_HINT_GAMECONTROLLERCONFIG_FILE
+ * \sa SDL_EVENT_GAMEPAD_ADDED
  */
 extern SDL_DECLSPEC int SDLCALL SDL_AddGamepadMappingsFromIO(SDL_IOStream *src, bool closeio);
 
@@ -357,6 +371,9 @@ extern SDL_DECLSPEC int SDLCALL SDL_AddGamepadMappingsFromIO(SDL_IOStream *src,
  * If a new mapping is loaded for an already known gamepad GUID, the later
  * version will overwrite the one currently loaded.
  *
+ * Any new mappings for already plugged in controllers will generate
+ * SDL_EVENT_GAMEPAD_ADDED events.
+ *
  * Mappings not belonging to the current platform or with no platform field
  * specified will be ignored (i.e. mappings for Linux will be ignored in
  * Windows, etc).
@@ -373,6 +390,9 @@ extern SDL_DECLSPEC int SDLCALL SDL_AddGamepadMappingsFromIO(SDL_IOStream *src,
  * \sa SDL_AddGamepadMappingsFromIO
  * \sa SDL_GetGamepadMapping
  * \sa SDL_GetGamepadMappingForGUID
+ * \sa SDL_HINT_GAMECONTROLLERCONFIG
+ * \sa SDL_HINT_GAMECONTROLLERCONFIG_FILE
+ * \sa SDL_EVENT_GAMEPAD_ADDED
  */
 extern SDL_DECLSPEC int SDLCALL SDL_AddGamepadMappingsFromFile(const char *file);