A user-defined event type (event.user.*)
Defined in <SDL3/SDL_events.h>
typedef struct SDL_UserEvent
{/**< SDL_EVENT_USER through SDL_EVENT_LAST-1, Uint32 because these are not in the SDL_EventType enumeration */
Uint32 type;
Uint32 reserved;/**< In nanoseconds, populated using SDL_GetTicksNS() */
Uint64 timestamp; /**< The associated window if any */
SDL_WindowID windowID; /**< User defined event code */
Sint32 code; void *data1; /**< User defined data pointer */
void *data2; /**< User defined data pointer */
} SDL_UserEvent;
This event is unique; it is never created by SDL, but only by the application. The event can be pushed onto the event queue using SDL_PushEvent(). The contents of the structure members are completely up to the programmer; the only requirement is that '''type''' is a value obtained from SDL_RegisterEvents().
This struct is available since SDL 3.1.3.
extern Sint32 my_event_code;
extern void *significant_data;
extern void *some_other_data;
const Uint32 myEventType = SDL_RegisterEvents(1);
if (myEventType != 0) {
SDL_Event event;
SDL_zero(event);
event.type = myEventType;
event.user.code = my_event_code;
event.user.data1 = significant_data;
event.user.data2 = some_other_data;
SDL_PushEvent(&event); }