SDL_events.h File Reference
`#include <SDL3/SDL_stdinc.h>`
`#include <SDL3/SDL_audio.h>`
`#include <SDL3/SDL_camera.h>`
`#include <SDL3/SDL_error.h>`
`#include <SDL3/SDL_gamepad.h>`
`#include <SDL3/SDL_joystick.h>`
`#include <SDL3/SDL_keyboard.h>`
`#include <SDL3/SDL_keycode.h>`
`#include <SDL3/SDL_mouse.h>`
`#include <SDL3/SDL_pen.h>`
`#include <SDL3/SDL_power.h>`
`#include <SDL3/SDL_sensor.h>`
`#include <SDL3/SDL_scancode.h>`
`#include <SDL3/SDL_touch.h>`
`#include <SDL3/SDL_video.h>`
`#include <SDL3/SDL_begin_code.h>`
`#include <SDL3/SDL_close_code.h>`
Include dependency graph for SDL_events.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | SDL_CommonEvent
struct | SDL_DisplayEvent
struct | SDL_WindowEvent
struct | SDL_KeyboardDeviceEvent
struct | SDL_KeyboardEvent
struct | SDL_TextEditingEvent
struct | SDL_TextEditingCandidatesEvent
struct | SDL_TextInputEvent
struct | SDL_MouseDeviceEvent
struct | SDL_MouseMotionEvent
struct | SDL_MouseButtonEvent
struct | SDL_MouseWheelEvent
struct | SDL_JoyAxisEvent
struct | SDL_JoyBallEvent
struct | SDL_JoyHatEvent
struct | SDL_JoyButtonEvent
struct | SDL_JoyDeviceEvent
struct | SDL_JoyBatteryEvent
struct | SDL_GamepadAxisEvent
struct | SDL_GamepadButtonEvent
struct | SDL_GamepadDeviceEvent
struct | SDL_GamepadTouchpadEvent
struct | SDL_GamepadSensorEvent
struct | SDL_AudioDeviceEvent
struct | SDL_CameraDeviceEvent
struct | SDL_RenderEvent
struct | SDL_TouchFingerEvent
struct | SDL_PenProximityEvent
struct | SDL_PenMotionEvent
struct | SDL_PenTouchEvent
struct | SDL_PenButtonEvent
struct | SDL_PenAxisEvent
struct | SDL_DropEvent
struct | SDL_ClipboardEvent
struct | SDL_SensorEvent
struct | SDL_QuitEvent
struct | SDL_UserEvent
union | SDL_Event

## Typedefs

typedef bool(* | SDL_EventFilter) (void *userdata, SDL_Event *event)

## Enumerations

enum

SDL_EventType {
SDL_EVENT_FIRST = 0 ,
SDL_EVENT_QUIT = 0x100 ,
SDL_EVENT_TERMINATING ,
SDL_EVENT_LOW_MEMORY ,
SDL_EVENT_WILL_ENTER_BACKGROUND ,
SDL_EVENT_DID_ENTER_BACKGROUND ,
SDL_EVENT_WILL_ENTER_FOREGROUND ,
SDL_EVENT_DID_ENTER_FOREGROUND ,
SDL_EVENT_LOCALE_CHANGED ,
SDL_EVENT_SYSTEM_THEME_CHANGED ,
SDL_EVENT_DISPLAY_ORIENTATION = 0x151 ,
SDL_EVENT_DISPLAY_ADDED ,
SDL_EVENT_DISPLAY_REMOVED ,
SDL_EVENT_DISPLAY_MOVED ,
SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED ,
SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED ,
SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED ,
SDL_EVENT_DISPLAY_FIRST = SDL_EVENT_DISPLAY_ORIENTATION ,
SDL_EVENT_DISPLAY_LAST = SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED ,
SDL_EVENT_WINDOW_SHOWN = 0x202 ,
SDL_EVENT_WINDOW_HIDDEN ,
SDL_EVENT_WINDOW_EXPOSED ,
SDL_EVENT_WINDOW_MOVED ,
SDL_EVENT_WINDOW_RESIZED ,
SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED ,
SDL_EVENT_WINDOW_METAL_VIEW_RESIZED ,
SDL_EVENT_WINDOW_MINIMIZED ,
SDL_EVENT_WINDOW_MAXIMIZED ,
SDL_EVENT_WINDOW_RESTORED ,
SDL_EVENT_WINDOW_MOUSE_ENTER ,
SDL_EVENT_WINDOW_MOUSE_LEAVE ,
SDL_EVENT_WINDOW_FOCUS_GAINED ,
SDL_EVENT_WINDOW_FOCUS_LOST ,
SDL_EVENT_WINDOW_CLOSE_REQUESTED ,
SDL_EVENT_WINDOW_HIT_TEST ,
SDL_EVENT_WINDOW_ICCPROF_CHANGED ,
SDL_EVENT_WINDOW_DISPLAY_CHANGED ,
SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED ,
SDL_EVENT_WINDOW_SAFE_AREA_CHANGED ,
SDL_EVENT_WINDOW_OCCLUDED ,
SDL_EVENT_WINDOW_ENTER_FULLSCREEN ,
SDL_EVENT_WINDOW_LEAVE_FULLSCREEN ,
SDL_EVENT_WINDOW_DESTROYED ,
SDL_EVENT_WINDOW_HDR_STATE_CHANGED ,
SDL_EVENT_WINDOW_FIRST = SDL_EVENT_WINDOW_SHOWN ,
SDL_EVENT_WINDOW_LAST = SDL_EVENT_WINDOW_HDR_STATE_CHANGED ,
SDL_EVENT_KEY_DOWN = 0x300 ,
SDL_EVENT_KEY_UP ,
SDL_EVENT_TEXT_EDITING ,
SDL_EVENT_TEXT_INPUT ,
SDL_EVENT_KEYMAP_CHANGED ,
SDL_EVENT_KEYBOARD_ADDED ,
SDL_EVENT_KEYBOARD_REMOVED ,
SDL_EVENT_TEXT_EDITING_CANDIDATES ,
SDL_EVENT_MOUSE_MOTION = 0x400 ,
SDL_EVENT_MOUSE_BUTTON_DOWN ,
SDL_EVENT_MOUSE_BUTTON_UP ,
SDL_EVENT_MOUSE_WHEEL ,
SDL_EVENT_MOUSE_ADDED ,
SDL_EVENT_MOUSE_REMOVED ,
SDL_EVENT_JOYSTICK_AXIS_MOTION = 0x600 ,
SDL_EVENT_JOYSTICK_BALL_MOTION ,
SDL_EVENT_JOYSTICK_HAT_MOTION ,
SDL_EVENT_JOYSTICK_BUTTON_DOWN ,
SDL_EVENT_JOYSTICK_BUTTON_UP ,
SDL_EVENT_JOYSTICK_ADDED ,
SDL_EVENT_JOYSTICK_REMOVED ,
SDL_EVENT_JOYSTICK_BATTERY_UPDATED ,
SDL_EVENT_JOYSTICK_UPDATE_COMPLETE ,
SDL_EVENT_GAMEPAD_AXIS_MOTION = 0x650 ,
SDL_EVENT_GAMEPAD_BUTTON_DOWN ,
SDL_EVENT_GAMEPAD_BUTTON_UP ,
SDL_EVENT_GAMEPAD_ADDED ,
SDL_EVENT_GAMEPAD_REMOVED ,
SDL_EVENT_GAMEPAD_REMAPPED ,
SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN ,
SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION ,
SDL_EVENT_GAMEPAD_TOUCHPAD_UP ,
SDL_EVENT_GAMEPAD_SENSOR_UPDATE ,
SDL_EVENT_GAMEPAD_UPDATE_COMPLETE ,
SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED ,
SDL_EVENT_FINGER_DOWN = 0x700 ,
SDL_EVENT_FINGER_UP ,
SDL_EVENT_FINGER_MOTION ,
SDL_EVENT_FINGER_CANCELED ,
SDL_EVENT_CLIPBOARD_UPDATE = 0x900 ,
SDL_EVENT_DROP_FILE = 0x1000 ,
SDL_EVENT_DROP_TEXT ,
SDL_EVENT_DROP_BEGIN ,
SDL_EVENT_DROP_COMPLETE ,
SDL_EVENT_DROP_POSITION ,
SDL_EVENT_AUDIO_DEVICE_ADDED = 0x1100 ,
SDL_EVENT_AUDIO_DEVICE_REMOVED ,
SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED ,
SDL_EVENT_SENSOR_UPDATE = 0x1200 ,
SDL_EVENT_PEN_PROXIMITY_IN = 0x1300 ,
SDL_EVENT_PEN_PROXIMITY_OUT ,
SDL_EVENT_PEN_DOWN ,
SDL_EVENT_PEN_UP ,
SDL_EVENT_PEN_BUTTON_DOWN ,
SDL_EVENT_PEN_BUTTON_UP ,
SDL_EVENT_PEN_MOTION ,
SDL_EVENT_PEN_AXIS ,
SDL_EVENT_CAMERA_DEVICE_ADDED = 0x1400 ,
SDL_EVENT_CAMERA_DEVICE_REMOVED ,
SDL_EVENT_CAMERA_DEVICE_APPROVED ,
SDL_EVENT_CAMERA_DEVICE_DENIED ,
SDL_EVENT_RENDER_TARGETS_RESET = 0x2000 ,
SDL_EVENT_RENDER_DEVICE_RESET ,
SDL_EVENT_RENDER_DEVICE_LOST ,
SDL_EVENT_PRIVATE0 = 0x4000 ,
SDL_EVENT_PRIVATE1 ,
SDL_EVENT_PRIVATE2 ,
SDL_EVENT_PRIVATE3 ,
SDL_EVENT_POLL_SENTINEL = 0x7F00 ,
SDL_EVENT_USER = 0x8000 ,
SDL_EVENT_LAST = 0xFFFF ,
SDL_EVENT_ENUM_PADDING = 0x7FFFFFFF
}

enum | SDL_EventAction { SDL_ADDEVENT , SDL_PEEKEVENT , SDL_GETEVENT }

## Functions

| SDL_COMPILE_TIME_ASSERT (SDL_Event, sizeof(SDL_Event)==sizeof(((SDL_Event *) NULL) ->padding))
void | SDL_PumpEvents (void)
int | SDL_PeepEvents (SDL_Event *events, int numevents, SDL_EventAction action, Uint32 minType, Uint32 maxType)
bool | SDL_HasEvent (Uint32 type)
bool | SDL_HasEvents (Uint32 minType, Uint32 maxType)
void | SDL_FlushEvent (Uint32 type)
void | SDL_FlushEvents (Uint32 minType, Uint32 maxType)
bool | SDL_PollEvent (SDL_Event *event)
bool | SDL_WaitEvent (SDL_Event *event)
bool | SDL_WaitEventTimeout (SDL_Event *event, Sint32 timeoutMS)
bool | SDL_PushEvent (SDL_Event *event)
void | SDL_SetEventFilter (SDL_EventFilter filter, void *userdata)
bool | SDL_GetEventFilter (SDL_EventFilter *filter, void **userdata)
bool | SDL_AddEventWatch (SDL_EventFilter filter, void *userdata)
void | SDL_RemoveEventWatch (SDL_EventFilter filter, void *userdata)
void | SDL_FilterEvents (SDL_EventFilter filter, void *userdata)
void | SDL_SetEventEnabled (Uint32 type, bool enabled)
bool | SDL_EventEnabled (Uint32 type)
Uint32 | SDL_RegisterEvents (int numevents)
SDL_Window * | SDL_GetWindowFromEvent (const SDL_Event *event)

## Typedef Documentation

## SDL_EventFilter

typedef bool(* SDL_EventFilter) (void *userdata, SDL_Event *event)

A function pointer used for callbacks that watch the event queue.

Parameters

  userdata | what was passed as `userdata` to SDL_SetEventFilter() or SDL_AddEventWatch, etc.
  event | the event that triggered the callback.

Returns
  true to permit event to be added to the queue, and false to disallow it. When used with SDL_AddEventWatch, the return value is ignored.

\threadsafety SDL may call this callback at any time from any thread; the application is responsible for locking resources the callback touches that need to be protected.

Since
  This datatype is available since SDL 3.2.0.

See also
  SDL_SetEventFilter
  SDL_AddEventWatch

Definition at line 1379 of file SDL_events.h.

## Enumeration Type Documentation

## SDL_EventAction

enum SDL_EventAction

The type of action to request from SDL_PeepEvents().

Since
  This enum is available since SDL 3.2.0.

Enumerator
SDL_ADDEVENT | Add events to the back of the queue.
SDL_PEEKEVENT | Check but don't remove events from the queue front.
SDL_GETEVENT | Retrieve/remove events from the front of the queue.

Definition at line 1080 of file SDL_events.h.

{
SDL_ADDEVENT, /**< Add events to the back of the queue. */
SDL_PEEKEVENT, /**< Check but don't remove events from the queue front. */
SDL_GETEVENT /**< Retrieve/remove events from the front of the queue. */
} SDL_EventAction;
SDL_EventAction
SDL_EventAction
Definition SDL_events.h:1081
SDL_ADDEVENT
@ SDL_ADDEVENT
Definition SDL_events.h:1082
SDL_PEEKEVENT
@ SDL_PEEKEVENT
Definition SDL_events.h:1083
SDL_GETEVENT
@ SDL_GETEVENT
Definition SDL_events.h:1084

## SDL_EventType

enum SDL_EventType

# CategoryEvents

Event queue management.

It's extremely common–often required–that an app deal with SDL's event queue. Almost all useful information about interactions with the real world flow through here: the user interacting with the computer and app, hardware coming and going, the system changing in some way, etc.

An app generally takes a moment, perhaps at the start of a new frame, to examine any events that have occured since the last time and process or ignore them. This is generally done by calling SDL_PollEvent() in a loop until it returns false (or, if using the main callbacks, events are provided one at a time in calls to SDL_AppEvent() before the next call to SDL_AppIterate(); in this scenario, the app does not call SDL_PollEvent() at all).

There is other forms of control, too: SDL_PeepEvents() has more functionality at the cost of more complexity, and SDL_WaitEvent() can block the process until something interesting happens, which might be beneficial for certain types of programs on low-power hardware. One may also call SDL_AddEventWatch() to set a callback when new events arrive.

The app is free to generate their own events, too: SDL_PushEvent allows the app to put events onto the queue for later retrieval; SDL_RegisterEvents can guarantee that these events have a type that isn't in use by other parts of the system. The types of events that can be delivered.

Since
  This enum is available since SDL 3.2.0.

Enumerator
SDL_EVENT_FIRST | Unused (do not remove)
SDL_EVENT_QUIT | User-requested quit
SDL_EVENT_TERMINATING | The application is being terminated by the OS. This event must be handled in a callback set with SDL_AddEventWatch(). Called on iOS in applicationWillTerminate() Called on Android in onDestroy()
SDL_EVENT_LOW_MEMORY | The application is low on memory, free memory if possible. This event must be handled in a callback set with SDL_AddEventWatch(). Called on iOS in applicationDidReceiveMemoryWarning() Called on Android in onTrimMemory()
SDL_EVENT_WILL_ENTER_BACKGROUND | The application is about to enter the background. This event must be handled in a callback set with SDL_AddEventWatch(). Called on iOS in applicationWillResignActive() Called on Android in onPause()
SDL_EVENT_DID_ENTER_BACKGROUND | The application did enter the background and may not get CPU for some time. This event must be handled in a callback set with SDL_AddEventWatch(). Called on iOS in applicationDidEnterBackground() Called on Android in onPause()
SDL_EVENT_WILL_ENTER_FOREGROUND | The application is about to enter the foreground. This event must be handled in a callback set with SDL_AddEventWatch(). Called on iOS in applicationWillEnterForeground() Called on Android in onResume()
SDL_EVENT_DID_ENTER_FOREGROUND | The application is now interactive. This event must be handled in a callback set with SDL_AddEventWatch(). Called on iOS in applicationDidBecomeActive() Called on Android in onResume()
SDL_EVENT_LOCALE_CHANGED | The user's locale preferences have changed.
SDL_EVENT_SYSTEM_THEME_CHANGED | The system theme changed
SDL_EVENT_DISPLAY_ORIENTATION | Display orientation has changed to data1
SDL_EVENT_DISPLAY_ADDED | Display has been added to the system
SDL_EVENT_DISPLAY_REMOVED | Display has been removed from the system
SDL_EVENT_DISPLAY_MOVED | Display has changed position
SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED | Display has changed desktop mode
SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED | Display has changed current mode
SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED | Display has changed content scale
SDL_EVENT_DISPLAY_FIRST |
SDL_EVENT_DISPLAY_LAST |
SDL_EVENT_WINDOW_SHOWN | Window has been shown
SDL_EVENT_WINDOW_HIDDEN | Window has been hidden
SDL_EVENT_WINDOW_EXPOSED | Window has been exposed and should be redrawn, and can be redrawn directly from event watchers for this event
SDL_EVENT_WINDOW_MOVED | Window has been moved to data1, data2
SDL_EVENT_WINDOW_RESIZED | Window has been resized to data1xdata2
SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED | The pixel size of the window has changed to data1xdata2
SDL_EVENT_WINDOW_METAL_VIEW_RESIZED | The pixel size of a Metal view associated with the window has changed
SDL_EVENT_WINDOW_MINIMIZED | Window has been minimized
SDL_EVENT_WINDOW_MAXIMIZED | Window has been maximized
SDL_EVENT_WINDOW_RESTORED | Window has been restored to normal size and position
SDL_EVENT_WINDOW_MOUSE_ENTER | Window has gained mouse focus
SDL_EVENT_WINDOW_MOUSE_LEAVE | Window has lost mouse focus
SDL_EVENT_WINDOW_FOCUS_GAINED | Window has gained keyboard focus
SDL_EVENT_WINDOW_FOCUS_LOST | Window has lost keyboard focus
SDL_EVENT_WINDOW_CLOSE_REQUESTED | The window manager requests that the window be closed
SDL_EVENT_WINDOW_HIT_TEST | Window had a hit test that wasn't SDL_HITTEST_NORMAL
SDL_EVENT_WINDOW_ICCPROF_CHANGED | The ICC profile of the window's display has changed
SDL_EVENT_WINDOW_DISPLAY_CHANGED | Window has been moved to display data1
SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED | Window display scale has been changed
SDL_EVENT_WINDOW_SAFE_AREA_CHANGED | The window safe area has been changed
SDL_EVENT_WINDOW_OCCLUDED | The window has been occluded
SDL_EVENT_WINDOW_ENTER_FULLSCREEN | The window has entered fullscreen mode
SDL_EVENT_WINDOW_LEAVE_FULLSCREEN | The window has left fullscreen mode
SDL_EVENT_WINDOW_DESTROYED | The window with the associated ID is being or has been destroyed. If this message is being handled in an event watcher, the window handle is still valid and can still be used to retrieve any properties associated with the window. Otherwise, the handle has already been destroyed and all resources associated with it are invalid
SDL_EVENT_WINDOW_HDR_STATE_CHANGED | Window HDR properties have changed
SDL_EVENT_WINDOW_FIRST |
SDL_EVENT_WINDOW_LAST |
SDL_EVENT_KEY_DOWN | Key pressed
SDL_EVENT_KEY_UP | Key released
SDL_EVENT_TEXT_EDITING | Keyboard text editing (composition)
SDL_EVENT_TEXT_INPUT | Keyboard text input
SDL_EVENT_KEYMAP_CHANGED | Keymap changed due to a system event such as an input language or keyboard layout change.
SDL_EVENT_KEYBOARD_ADDED | A new keyboard has been inserted into the system
SDL_EVENT_KEYBOARD_REMOVED | A keyboard has been removed
SDL_EVENT_TEXT_EDITING_CANDIDATES | Keyboard text editing candidates
SDL_EVENT_MOUSE_MOTION | Mouse moved
SDL_EVENT_MOUSE_BUTTON_DOWN | Mouse button pressed
SDL_EVENT_MOUSE_BUTTON_UP | Mouse button released
SDL_EVENT_MOUSE_WHEEL | Mouse wheel motion
SDL_EVENT_MOUSE_ADDED | A new mouse has been inserted into the system
SDL_EVENT_MOUSE_REMOVED | A mouse has been removed
SDL_EVENT_JOYSTICK_AXIS_MOTION | Joystick axis motion
SDL_EVENT_JOYSTICK_BALL_MOTION | Joystick trackball motion
SDL_EVENT_JOYSTICK_HAT_MOTION | Joystick hat position change
SDL_EVENT_JOYSTICK_BUTTON_DOWN | Joystick button pressed
SDL_EVENT_JOYSTICK_BUTTON_UP | Joystick button released
SDL_EVENT_JOYSTICK_ADDED | A new joystick has been inserted into the system
SDL_EVENT_JOYSTICK_REMOVED | An opened joystick has been removed
SDL_EVENT_JOYSTICK_BATTERY_UPDATED | Joystick battery level change
SDL_EVENT_JOYSTICK_UPDATE_COMPLETE | Joystick update is complete
SDL_EVENT_GAMEPAD_AXIS_MOTION | Gamepad axis motion
SDL_EVENT_GAMEPAD_BUTTON_DOWN | Gamepad button pressed
SDL_EVENT_GAMEPAD_BUTTON_UP | Gamepad button released
SDL_EVENT_GAMEPAD_ADDED | A new gamepad has been inserted into the system
SDL_EVENT_GAMEPAD_REMOVED | A gamepad has been removed
SDL_EVENT_GAMEPAD_REMAPPED | The gamepad mapping was updated
SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN | Gamepad touchpad was touched
SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION | Gamepad touchpad finger was moved
SDL_EVENT_GAMEPAD_TOUCHPAD_UP | Gamepad touchpad finger was lifted
SDL_EVENT_GAMEPAD_SENSOR_UPDATE | Gamepad sensor was updated
SDL_EVENT_GAMEPAD_UPDATE_COMPLETE | Gamepad update is complete
SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED | Gamepad Steam handle has changed
SDL_EVENT_FINGER_DOWN |
SDL_EVENT_FINGER_UP |
SDL_EVENT_FINGER_MOTION |
SDL_EVENT_FINGER_CANCELED |
SDL_EVENT_CLIPBOARD_UPDATE | The clipboard or primary selection changed
SDL_EVENT_DROP_FILE | The system requests a file open
SDL_EVENT_DROP_TEXT | text/plain drag-and-drop event
SDL_EVENT_DROP_BEGIN | A new set of drops is beginning (NULL filename)
SDL_EVENT_DROP_COMPLETE | Current set of drops is now complete (NULL filename)
SDL_EVENT_DROP_POSITION | Position while moving over the window
SDL_EVENT_AUDIO_DEVICE_ADDED | A new audio device is available
SDL_EVENT_AUDIO_DEVICE_REMOVED | An audio device has been removed.
SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED | An audio device's format has been changed by the system.
SDL_EVENT_SENSOR_UPDATE | A sensor was updated
SDL_EVENT_PEN_PROXIMITY_IN | Pressure-sensitive pen has become available
SDL_EVENT_PEN_PROXIMITY_OUT | Pressure-sensitive pen has become unavailable
SDL_EVENT_PEN_DOWN | Pressure-sensitive pen touched drawing surface
SDL_EVENT_PEN_UP | Pressure-sensitive pen stopped touching drawing surface
SDL_EVENT_PEN_BUTTON_DOWN | Pressure-sensitive pen button pressed
SDL_EVENT_PEN_BUTTON_UP | Pressure-sensitive pen button released
SDL_EVENT_PEN_MOTION | Pressure-sensitive pen is moving on the tablet
SDL_EVENT_PEN_AXIS | Pressure-sensitive pen angle/pressure/etc changed
SDL_EVENT_CAMERA_DEVICE_ADDED | A new camera device is available
SDL_EVENT_CAMERA_DEVICE_REMOVED | A camera device has been removed.
SDL_EVENT_CAMERA_DEVICE_APPROVED | A camera device has been approved for use by the user.
SDL_EVENT_CAMERA_DEVICE_DENIED | A camera device has been denied for use by the user.
SDL_EVENT_RENDER_TARGETS_RESET | The render targets have been reset and their contents need to be updated
SDL_EVENT_RENDER_DEVICE_RESET | The device has been reset and all textures need to be recreated
SDL_EVENT_RENDER_DEVICE_LOST | The device has been lost and can't be recovered.
SDL_EVENT_PRIVATE0 |
SDL_EVENT_PRIVATE1 |
SDL_EVENT_PRIVATE2 |
SDL_EVENT_PRIVATE3 |
SDL_EVENT_POLL_SENTINEL | Signals the end of an event poll cycle
SDL_EVENT_USER | Events SDL_EVENT_USER through SDL_EVENT_LAST are for your use, and should be allocated with SDL_RegisterEvents()
SDL_EVENT_LAST | This last event is only for bounding internal arrays
SDL_EVENT_ENUM_PADDING |

Definition at line 84 of file SDL_events.h.

{
SDL_EVENT_FIRST = 0, /**< Unused (do not remove) */
/* Application events */
SDL_EVENT_QUIT = 0x100, /**< User-requested quit */
/* These application events have special meaning on iOS and Android, see README-ios.md and README-android.md for details */
SDL_EVENT_TERMINATING, /**< The application is being terminated by the OS. This event must be handled in a callback set with SDL_AddEventWatch().
Called on iOS in applicationWillTerminate()
Called on Android in onDestroy()
*/
SDL_EVENT_LOW_MEMORY, /**< The application is low on memory, free memory if possible. This event must be handled in a callback set with SDL_AddEventWatch().
Called on iOS in applicationDidReceiveMemoryWarning()
Called on Android in onTrimMemory()
*/
SDL_EVENT_WILL_ENTER_BACKGROUND, /**< The application is about to enter the background. This event must be handled in a callback set with SDL_AddEventWatch().
Called on iOS in applicationWillResignActive()
Called on Android in onPause()
*/
SDL_EVENT_DID_ENTER_BACKGROUND, /**< The application did enter the background and may not get CPU for some time. This event must be handled in a callback set with SDL_AddEventWatch().
Called on iOS in applicationDidEnterBackground()
Called on Android in onPause()
*/
SDL_EVENT_WILL_ENTER_FOREGROUND, /**< The application is about to enter the foreground. This event must be handled in a callback set with SDL_AddEventWatch().
Called on iOS in applicationWillEnterForeground()
Called on Android in onResume()
*/
SDL_EVENT_DID_ENTER_FOREGROUND, /**< The application is now interactive. This event must be handled in a callback set with SDL_AddEventWatch().
Called on iOS in applicationDidBecomeActive()
Called on Android in onResume()
*/
SDL_EVENT_LOCALE_CHANGED, /**< The user's locale preferences have changed. */
SDL_EVENT_SYSTEM_THEME_CHANGED, /**< The system theme changed */
/* Display events */
/* 0x150 was SDL_DISPLAYEVENT, reserve the number for sdl2-compat */
SDL_EVENT_DISPLAY_ORIENTATION = 0x151, /**< Display orientation has changed to data1 */
SDL_EVENT_DISPLAY_ADDED, /**< Display has been added to the system */
SDL_EVENT_DISPLAY_REMOVED, /**< Display has been removed from the system */
SDL_EVENT_DISPLAY_MOVED, /**< Display has changed position */
SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED, /**< Display has changed desktop mode */
SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED, /**< Display has changed current mode */
SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED, /**< Display has changed content scale */
SDL_EVENT_DISPLAY_FIRST = SDL_EVENT_DISPLAY_ORIENTATION,
SDL_EVENT_DISPLAY_LAST = SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED,
/* Window events */
/* 0x200 was SDL_WINDOWEVENT, reserve the number for sdl2-compat */
/* 0x201 was SDL_SYSWMEVENT, reserve the number for sdl2-compat */
SDL_EVENT_WINDOW_SHOWN = 0x202, /**< Window has been shown */
SDL_EVENT_WINDOW_HIDDEN, /**< Window has been hidden */
SDL_EVENT_WINDOW_EXPOSED, /**< Window has been exposed and should be redrawn, and can be redrawn directly from event watchers for this event */
SDL_EVENT_WINDOW_MOVED, /**< Window has been moved to data1, data2 */
SDL_EVENT_WINDOW_RESIZED, /**< Window has been resized to data1xdata2 */
SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED,/**< The pixel size of the window has changed to data1xdata2 */
SDL_EVENT_WINDOW_METAL_VIEW_RESIZED,/**< The pixel size of a Metal view associated with the window has changed */
SDL_EVENT_WINDOW_MINIMIZED, /**< Window has been minimized */
SDL_EVENT_WINDOW_MAXIMIZED, /**< Window has been maximized */
SDL_EVENT_WINDOW_RESTORED, /**< Window has been restored to normal size and position */
SDL_EVENT_WINDOW_MOUSE_ENTER, /**< Window has gained mouse focus */
SDL_EVENT_WINDOW_MOUSE_LEAVE, /**< Window has lost mouse focus */
SDL_EVENT_WINDOW_FOCUS_GAINED, /**< Window has gained keyboard focus */
SDL_EVENT_WINDOW_FOCUS_LOST, /**< Window has lost keyboard focus */
SDL_EVENT_WINDOW_CLOSE_REQUESTED, /**< The window manager requests that the window be closed */
SDL_EVENT_WINDOW_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL */
SDL_EVENT_WINDOW_ICCPROF_CHANGED, /**< The ICC profile of the window's display has changed */
SDL_EVENT_WINDOW_DISPLAY_CHANGED, /**< Window has been moved to display data1 */
SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED, /**< Window display scale has been changed */
SDL_EVENT_WINDOW_SAFE_AREA_CHANGED, /**< The window safe area has been changed */
SDL_EVENT_WINDOW_OCCLUDED, /**< The window has been occluded */
SDL_EVENT_WINDOW_ENTER_FULLSCREEN, /**< The window has entered fullscreen mode */
SDL_EVENT_WINDOW_LEAVE_FULLSCREEN, /**< The window has left fullscreen mode */
SDL_EVENT_WINDOW_DESTROYED, /**< The window with the associated ID is being or has been destroyed. If this message is being handled
in an event watcher, the window handle is still valid and can still be used to retrieve any properties
associated with the window. Otherwise, the handle has already been destroyed and all resources
associated with it are invalid */
SDL_EVENT_WINDOW_HDR_STATE_CHANGED, /**< Window HDR properties have changed */
SDL_EVENT_WINDOW_FIRST = SDL_EVENT_WINDOW_SHOWN,
SDL_EVENT_WINDOW_LAST = SDL_EVENT_WINDOW_HDR_STATE_CHANGED,
/* Keyboard events */
SDL_EVENT_KEY_DOWN = 0x300, /**< Key pressed */
SDL_EVENT_KEY_UP, /**< Key released */
SDL_EVENT_TEXT_EDITING, /**< Keyboard text editing (composition) */
SDL_EVENT_TEXT_INPUT, /**< Keyboard text input */
SDL_EVENT_KEYMAP_CHANGED, /**< Keymap changed due to a system event such as an
input language or keyboard layout change. */
SDL_EVENT_KEYBOARD_ADDED, /**< A new keyboard has been inserted into the system */
SDL_EVENT_KEYBOARD_REMOVED, /**< A keyboard has been removed */
SDL_EVENT_TEXT_EDITING_CANDIDATES, /**< Keyboard text editing candidates */
/* Mouse events */
SDL_EVENT_MOUSE_MOTION = 0x400, /**< Mouse moved */
SDL_EVENT_MOUSE_BUTTON_DOWN, /**< Mouse button pressed */
SDL_EVENT_MOUSE_BUTTON_UP, /**< Mouse button released */
SDL_EVENT_MOUSE_WHEEL, /**< Mouse wheel motion */
SDL_EVENT_MOUSE_ADDED, /**< A new mouse has been inserted into the system */
SDL_EVENT_MOUSE_REMOVED, /**< A mouse has been removed */
/* Joystick events */
SDL_EVENT_JOYSTICK_AXIS_MOTION = 0x600, /**< Joystick axis motion */
SDL_EVENT_JOYSTICK_BALL_MOTION, /**< Joystick trackball motion */
SDL_EVENT_JOYSTICK_HAT_MOTION, /**< Joystick hat position change */
SDL_EVENT_JOYSTICK_BUTTON_DOWN, /**< Joystick button pressed */
SDL_EVENT_JOYSTICK_BUTTON_UP, /**< Joystick button released */
SDL_EVENT_JOYSTICK_ADDED, /**< A new joystick has been inserted into the system */
SDL_EVENT_JOYSTICK_REMOVED, /**< An opened joystick has been removed */
SDL_EVENT_JOYSTICK_BATTERY_UPDATED, /**< Joystick battery level change */
SDL_EVENT_JOYSTICK_UPDATE_COMPLETE, /**< Joystick update is complete */
/* Gamepad events */
SDL_EVENT_GAMEPAD_AXIS_MOTION = 0x650, /**< Gamepad axis motion */
SDL_EVENT_GAMEPAD_BUTTON_DOWN, /**< Gamepad button pressed */
SDL_EVENT_GAMEPAD_BUTTON_UP, /**< Gamepad button released */
SDL_EVENT_GAMEPAD_ADDED, /**< A new gamepad has been inserted into the system */
SDL_EVENT_GAMEPAD_REMOVED, /**< A gamepad has been removed */
SDL_EVENT_GAMEPAD_REMAPPED, /**< The gamepad mapping was updated */
SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN, /**< Gamepad touchpad was touched */
SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION, /**< Gamepad touchpad finger was moved */
SDL_EVENT_GAMEPAD_TOUCHPAD_UP, /**< Gamepad touchpad finger was lifted */
SDL_EVENT_GAMEPAD_SENSOR_UPDATE, /**< Gamepad sensor was updated */
SDL_EVENT_GAMEPAD_UPDATE_COMPLETE, /**< Gamepad update is complete */
SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED, /**< Gamepad Steam handle has changed */
/* Touch events */
SDL_EVENT_FINGER_DOWN = 0x700,
SDL_EVENT_FINGER_UP,
SDL_EVENT_FINGER_MOTION,
SDL_EVENT_FINGER_CANCELED,
/* 0x800, 0x801, and 0x802 were the Gesture events from SDL2. Do not reuse these values! sdl2-compat needs them! */
/* Clipboard events */
SDL_EVENT_CLIPBOARD_UPDATE = 0x900, /**< The clipboard or primary selection changed */
/* Drag and drop events */
SDL_EVENT_DROP_FILE = 0x1000, /**< The system requests a file open */
SDL_EVENT_DROP_TEXT, /**< text/plain drag-and-drop event */
SDL_EVENT_DROP_BEGIN, /**< A new set of drops is beginning (NULL filename) */
SDL_EVENT_DROP_COMPLETE, /**< Current set of drops is now complete (NULL filename) */
SDL_EVENT_DROP_POSITION, /**< Position while moving over the window */
/* Audio hotplug events */
SDL_EVENT_AUDIO_DEVICE_ADDED = 0x1100, /**< A new audio device is available */
SDL_EVENT_AUDIO_DEVICE_REMOVED, /**< An audio device has been removed. */
SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED, /**< An audio device's format has been changed by the system. */
/* Sensor events */
SDL_EVENT_SENSOR_UPDATE = 0x1200, /**< A sensor was updated */
/* Pressure-sensitive pen events */
SDL_EVENT_PEN_PROXIMITY_IN = 0x1300, /**< Pressure-sensitive pen has become available */
SDL_EVENT_PEN_PROXIMITY_OUT, /**< Pressure-sensitive pen has become unavailable */
SDL_EVENT_PEN_DOWN, /**< Pressure-sensitive pen touched drawing surface */
SDL_EVENT_PEN_UP, /**< Pressure-sensitive pen stopped touching drawing surface */
SDL_EVENT_PEN_BUTTON_DOWN, /**< Pressure-sensitive pen button pressed */
SDL_EVENT_PEN_BUTTON_UP, /**< Pressure-sensitive pen button released */
SDL_EVENT_PEN_MOTION, /**< Pressure-sensitive pen is moving on the tablet */
SDL_EVENT_PEN_AXIS, /**< Pressure-sensitive pen angle/pressure/etc changed */
/* Camera hotplug events */
SDL_EVENT_CAMERA_DEVICE_ADDED = 0x1400, /**< A new camera device is available */
SDL_EVENT_CAMERA_DEVICE_REMOVED, /**< A camera device has been removed. */
SDL_EVENT_CAMERA_DEVICE_APPROVED, /**< A camera device has been approved for use by the user. */
SDL_EVENT_CAMERA_DEVICE_DENIED, /**< A camera device has been denied for use by the user. */
/* Render events */
SDL_EVENT_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
SDL_EVENT_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
SDL_EVENT_RENDER_DEVICE_LOST, /**< The device has been lost and can't be recovered. */
/* Reserved events for private platforms */
SDL_EVENT_PRIVATE0 = 0x4000,
SDL_EVENT_PRIVATE1,
SDL_EVENT_PRIVATE2,
SDL_EVENT_PRIVATE3,
/* Internal events */
SDL_EVENT_POLL_SENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */
/** Events SDL_EVENT_USER through SDL_EVENT_LAST are for your use,
* and should be allocated with SDL_RegisterEvents()
*/
SDL_EVENT_USER = 0x8000,
/**
* This last event is only for bounding internal arrays
*/
SDL_EVENT_LAST = 0xFFFF,
/* This just makes sure the enum is the size of Uint32 */
SDL_EVENT_ENUM_PADDING = 0x7FFFFFFF
} SDL_EventType;
SDL_EventType
SDL_EventType
Definition SDL_events.h:85
SDL_EVENT_KEYMAP_CHANGED
@ SDL_EVENT_KEYMAP_CHANGED
Definition SDL_events.h:172
SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED
@ SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED
Definition SDL_events.h:129
SDL_EVENT_PRIVATE0
@ SDL_EVENT_PRIVATE0
Definition SDL_events.h:259
SDL_EVENT_PEN_PROXIMITY_OUT
@ SDL_EVENT_PEN_PROXIMITY_OUT
Definition SDL_events.h:239
SDL_EVENT_WINDOW_HIT_TEST
@ SDL_EVENT_WINDOW_HIT_TEST
Definition SDL_events.h:151
SDL_EVENT_GAMEPAD_ADDED
@ SDL_EVENT_GAMEPAD_ADDED
Definition SDL_events.h:201
SDL_EVENT_GAMEPAD_TOUCHPAD_UP
@ SDL_EVENT_GAMEPAD_TOUCHPAD_UP
Definition SDL_events.h:206
SDL_EVENT_WINDOW_RESTORED
@ SDL_EVENT_WINDOW_RESTORED
Definition SDL_events.h:145
SDL_EVENT_GAMEPAD_AXIS_MOTION
@ SDL_EVENT_GAMEPAD_AXIS_MOTION
Definition SDL_events.h:198
SDL_EVENT_WINDOW_LAST
@ SDL_EVENT_WINDOW_LAST
Definition SDL_events.h:165
SDL_EVENT_DROP_BEGIN
@ SDL_EVENT_DROP_BEGIN
Definition SDL_events.h:225
SDL_EVENT_MOUSE_MOTION
@ SDL_EVENT_MOUSE_MOTION
Definition SDL_events.h:179
SDL_EVENT_WINDOW_FOCUS_GAINED
@ SDL_EVENT_WINDOW_FOCUS_GAINED
Definition SDL_events.h:148
SDL_EVENT_WINDOW_SAFE_AREA_CHANGED
@ SDL_EVENT_WINDOW_SAFE_AREA_CHANGED
Definition SDL_events.h:155
SDL_EVENT_MOUSE_WHEEL
@ SDL_EVENT_MOUSE_WHEEL
Definition SDL_events.h:182
SDL_EVENT_JOYSTICK_REMOVED
@ SDL_EVENT_JOYSTICK_REMOVED
Definition SDL_events.h:193
SDL_EVENT_WINDOW_ENTER_FULLSCREEN
@ SDL_EVENT_WINDOW_ENTER_FULLSCREEN
Definition SDL_events.h:157
SDL_EVENT_PEN_DOWN
@ SDL_EVENT_PEN_DOWN
Definition SDL_events.h:240
SDL_EVENT_CLIPBOARD_UPDATE
@ SDL_EVENT_CLIPBOARD_UPDATE
Definition SDL_events.h:220
SDL_EVENT_DID_ENTER_FOREGROUND
@ SDL_EVENT_DID_ENTER_FOREGROUND
Definition SDL_events.h:112
SDL_EVENT_JOYSTICK_BUTTON_UP
@ SDL_EVENT_JOYSTICK_BUTTON_UP
Definition SDL_events.h:191
SDL_EVENT_JOYSTICK_BATTERY_UPDATED
@ SDL_EVENT_JOYSTICK_BATTERY_UPDATED
Definition SDL_events.h:194
SDL_EVENT_WILL_ENTER_FOREGROUND
@ SDL_EVENT_WILL_ENTER_FOREGROUND
Definition SDL_events.h:108
SDL_EVENT_PEN_MOTION
@ SDL_EVENT_PEN_MOTION
Definition SDL_events.h:244
SDL_EVENT_POLL_SENTINEL
@ SDL_EVENT_POLL_SENTINEL
Definition SDL_events.h:265
SDL_EVENT_CAMERA_DEVICE_REMOVED
@ SDL_EVENT_CAMERA_DEVICE_REMOVED
Definition SDL_events.h:249
SDL_EVENT_JOYSTICK_UPDATE_COMPLETE
@ SDL_EVENT_JOYSTICK_UPDATE_COMPLETE
Definition SDL_events.h:195
SDL_EVENT_FINGER_UP
@ SDL_EVENT_FINGER_UP
Definition SDL_events.h:213
SDL_EVENT_DISPLAY_REMOVED
@ SDL_EVENT_DISPLAY_REMOVED
Definition SDL_events.h:125
SDL_EVENT_JOYSTICK_ADDED
@ SDL_EVENT_JOYSTICK_ADDED
Definition SDL_events.h:192
SDL_EVENT_MOUSE_ADDED
@ SDL_EVENT_MOUSE_ADDED
Definition SDL_events.h:183
SDL_EVENT_DROP_POSITION
@ SDL_EVENT_DROP_POSITION
Definition SDL_events.h:227
SDL_EVENT_WINDOW_EXPOSED
@ SDL_EVENT_WINDOW_EXPOSED
Definition SDL_events.h:138
SDL_EVENT_WINDOW_DISPLAY_CHANGED
@ SDL_EVENT_WINDOW_DISPLAY_CHANGED
Definition SDL_events.h:153
SDL_EVENT_WINDOW_RESIZED
@ SDL_EVENT_WINDOW_RESIZED
Definition SDL_events.h:140
SDL_EVENT_ENUM_PADDING
@ SDL_EVENT_ENUM_PADDING
Definition SDL_events.h:278
SDL_EVENT_GAMEPAD_REMAPPED
@ SDL_EVENT_GAMEPAD_REMAPPED
Definition SDL_events.h:203
SDL_EVENT_GAMEPAD_REMOVED
@ SDL_EVENT_GAMEPAD_REMOVED
Definition SDL_events.h:202
SDL_EVENT_WINDOW_HDR_STATE_CHANGED
@ SDL_EVENT_WINDOW_HDR_STATE_CHANGED
Definition SDL_events.h:163
SDL_EVENT_FINGER_MOTION
@ SDL_EVENT_FINGER_MOTION
Definition SDL_events.h:214
SDL_EVENT_WINDOW_MOUSE_ENTER
@ SDL_EVENT_WINDOW_MOUSE_ENTER
Definition SDL_events.h:146
SDL_EVENT_WINDOW_HIDDEN
@ SDL_EVENT_WINDOW_HIDDEN
Definition SDL_events.h:137
SDL_EVENT_RENDER_TARGETS_RESET
@ SDL_EVENT_RENDER_TARGETS_RESET
Definition SDL_events.h:254
SDL_EVENT_MOUSE_REMOVED
@ SDL_EVENT_MOUSE_REMOVED
Definition SDL_events.h:184
SDL_EVENT_DID_ENTER_BACKGROUND
@ SDL_EVENT_DID_ENTER_BACKGROUND
Definition SDL_events.h:104
SDL_EVENT_CAMERA_DEVICE_APPROVED
@ SDL_EVENT_CAMERA_DEVICE_APPROVED
Definition SDL_events.h:250
SDL_EVENT_AUDIO_DEVICE_ADDED
@ SDL_EVENT_AUDIO_DEVICE_ADDED
Definition SDL_events.h:230
SDL_EVENT_RENDER_DEVICE_RESET
@ SDL_EVENT_RENDER_DEVICE_RESET
Definition SDL_events.h:255
SDL_EVENT_LOW_MEMORY
@ SDL_EVENT_LOW_MEMORY
Definition SDL_events.h:96
SDL_EVENT_GAMEPAD_UPDATE_COMPLETE
@ SDL_EVENT_GAMEPAD_UPDATE_COMPLETE
Definition SDL_events.h:208
SDL_EVENT_WINDOW_DESTROYED
@ SDL_EVENT_WINDOW_DESTROYED
Definition SDL_events.h:159
SDL_EVENT_PEN_UP
@ SDL_EVENT_PEN_UP
Definition SDL_events.h:241
SDL_EVENT_GAMEPAD_BUTTON_DOWN
@ SDL_EVENT_GAMEPAD_BUTTON_DOWN
Definition SDL_events.h:199
SDL_EVENT_DISPLAY_ADDED
@ SDL_EVENT_DISPLAY_ADDED
Definition SDL_events.h:124
SDL_EVENT_JOYSTICK_AXIS_MOTION
@ SDL_EVENT_JOYSTICK_AXIS_MOTION
Definition SDL_events.h:187
SDL_EVENT_KEY_UP
@ SDL_EVENT_KEY_UP
Definition SDL_events.h:169
SDL_EVENT_WINDOW_CLOSE_REQUESTED
@ SDL_EVENT_WINDOW_CLOSE_REQUESTED
Definition SDL_events.h:150
SDL_EVENT_TEXT_INPUT
@ SDL_EVENT_TEXT_INPUT
Definition SDL_events.h:171
SDL_EVENT_LOCALE_CHANGED
@ SDL_EVENT_LOCALE_CHANGED
Definition SDL_events.h:117
SDL_EVENT_WINDOW_OCCLUDED
@ SDL_EVENT_WINDOW_OCCLUDED
Definition SDL_events.h:156
SDL_EVENT_DISPLAY_LAST
@ SDL_EVENT_DISPLAY_LAST
Definition SDL_events.h:131
SDL_EVENT_WILL_ENTER_BACKGROUND
@ SDL_EVENT_WILL_ENTER_BACKGROUND
Definition SDL_events.h:100
SDL_EVENT_MOUSE_BUTTON_DOWN
@ SDL_EVENT_MOUSE_BUTTON_DOWN
Definition SDL_events.h:180
SDL_EVENT_USER
@ SDL_EVENT_USER
Definition SDL_events.h:270
SDL_EVENT_WINDOW_FIRST
@ SDL_EVENT_WINDOW_FIRST
Definition SDL_events.h:164
SDL_EVENT_SENSOR_UPDATE
@ SDL_EVENT_SENSOR_UPDATE
Definition SDL_events.h:235
SDL_EVENT_PEN_BUTTON_DOWN
@ SDL_EVENT_PEN_BUTTON_DOWN
Definition SDL_events.h:242
SDL_EVENT_FIRST
@ SDL_EVENT_FIRST
Definition SDL_events.h:86
SDL_EVENT_PEN_PROXIMITY_IN
@ SDL_EVENT_PEN_PROXIMITY_IN
Definition SDL_events.h:238
SDL_EVENT_FINGER_CANCELED
@ SDL_EVENT_FINGER_CANCELED
Definition SDL_events.h:215
SDL_EVENT_DISPLAY_MOVED
@ SDL_EVENT_DISPLAY_MOVED
Definition SDL_events.h:126
SDL_EVENT_JOYSTICK_BUTTON_DOWN
@ SDL_EVENT_JOYSTICK_BUTTON_DOWN
Definition SDL_events.h:190
SDL_EVENT_PEN_BUTTON_UP
@ SDL_EVENT_PEN_BUTTON_UP
Definition SDL_events.h:243
SDL_EVENT_MOUSE_BUTTON_UP
@ SDL_EVENT_MOUSE_BUTTON_UP
Definition SDL_events.h:181
SDL_EVENT_PRIVATE1
@ SDL_EVENT_PRIVATE1
Definition SDL_events.h:260
SDL_EVENT_DROP_TEXT
@ SDL_EVENT_DROP_TEXT
Definition SDL_events.h:224
SDL_EVENT_DROP_FILE
@ SDL_EVENT_DROP_FILE
Definition SDL_events.h:223
SDL_EVENT_KEYBOARD_REMOVED
@ SDL_EVENT_KEYBOARD_REMOVED
Definition SDL_events.h:175
SDL_EVENT_WINDOW_FOCUS_LOST
@ SDL_EVENT_WINDOW_FOCUS_LOST
Definition SDL_events.h:149
SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED
@ SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED
Definition SDL_events.h:209
SDL_EVENT_GAMEPAD_BUTTON_UP
@ SDL_EVENT_GAMEPAD_BUTTON_UP
Definition SDL_events.h:200
SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED
@ SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED
Definition SDL_events.h:128
SDL_EVENT_WINDOW_MAXIMIZED
@ SDL_EVENT_WINDOW_MAXIMIZED
Definition SDL_events.h:144
SDL_EVENT_PEN_AXIS
@ SDL_EVENT_PEN_AXIS
Definition SDL_events.h:245
SDL_EVENT_TERMINATING
@ SDL_EVENT_TERMINATING
Definition SDL_events.h:92
SDL_EVENT_RENDER_DEVICE_LOST
@ SDL_EVENT_RENDER_DEVICE_LOST
Definition SDL_events.h:256
SDL_EVENT_WINDOW_ICCPROF_CHANGED
@ SDL_EVENT_WINDOW_ICCPROF_CHANGED
Definition SDL_events.h:152
SDL_EVENT_SYSTEM_THEME_CHANGED
@ SDL_EVENT_SYSTEM_THEME_CHANGED
Definition SDL_events.h:119
SDL_EVENT_WINDOW_LEAVE_FULLSCREEN
@ SDL_EVENT_WINDOW_LEAVE_FULLSCREEN
Definition SDL_events.h:158
SDL_EVENT_CAMERA_DEVICE_ADDED
@ SDL_EVENT_CAMERA_DEVICE_ADDED
Definition SDL_events.h:248
SDL_EVENT_KEYBOARD_ADDED
@ SDL_EVENT_KEYBOARD_ADDED
Definition SDL_events.h:174
SDL_EVENT_GAMEPAD_SENSOR_UPDATE
@ SDL_EVENT_GAMEPAD_SENSOR_UPDATE
Definition SDL_events.h:207
SDL_EVENT_JOYSTICK_HAT_MOTION
@ SDL_EVENT_JOYSTICK_HAT_MOTION
Definition SDL_events.h:189
SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED
@ SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED
Definition SDL_events.h:232
SDL_EVENT_JOYSTICK_BALL_MOTION
@ SDL_EVENT_JOYSTICK_BALL_MOTION
Definition SDL_events.h:188
SDL_EVENT_PRIVATE3
@ SDL_EVENT_PRIVATE3
Definition SDL_events.h:262
SDL_EVENT_WINDOW_SHOWN
@ SDL_EVENT_WINDOW_SHOWN
Definition SDL_events.h:136
SDL_EVENT_KEY_DOWN
@ SDL_EVENT_KEY_DOWN
Definition SDL_events.h:168
SDL_EVENT_CAMERA_DEVICE_DENIED
@ SDL_EVENT_CAMERA_DEVICE_DENIED
Definition SDL_events.h:251
SDL_EVENT_TEXT_EDITING_CANDIDATES
@ SDL_EVENT_TEXT_EDITING_CANDIDATES
Definition SDL_events.h:176
SDL_EVENT_WINDOW_MOVED
@ SDL_EVENT_WINDOW_MOVED
Definition SDL_events.h:139
SDL_EVENT_DISPLAY_FIRST
@ SDL_EVENT_DISPLAY_FIRST
Definition SDL_events.h:130
SDL_EVENT_WINDOW_MINIMIZED
@ SDL_EVENT_WINDOW_MINIMIZED
Definition SDL_events.h:143
SDL_EVENT_WINDOW_METAL_VIEW_RESIZED
@ SDL_EVENT_WINDOW_METAL_VIEW_RESIZED
Definition SDL_events.h:142
SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED
@ SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED
Definition SDL_events.h:141
SDL_EVENT_DISPLAY_ORIENTATION
@ SDL_EVENT_DISPLAY_ORIENTATION
Definition SDL_events.h:123
SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED
@ SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED
Definition SDL_events.h:154
SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION
@ SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION
Definition SDL_events.h:205
SDL_EVENT_LAST
@ SDL_EVENT_LAST
Definition SDL_events.h:275
SDL_EVENT_AUDIO_DEVICE_REMOVED
@ SDL_EVENT_AUDIO_DEVICE_REMOVED
Definition SDL_events.h:231
SDL_EVENT_DROP_COMPLETE
@ SDL_EVENT_DROP_COMPLETE
Definition SDL_events.h:226
SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN
@ SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN
Definition SDL_events.h:204
SDL_EVENT_TEXT_EDITING
@ SDL_EVENT_TEXT_EDITING
Definition SDL_events.h:170
SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED
@ SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED
Definition SDL_events.h:127
SDL_EVENT_WINDOW_MOUSE_LEAVE
@ SDL_EVENT_WINDOW_MOUSE_LEAVE
Definition SDL_events.h:147
SDL_EVENT_QUIT
@ SDL_EVENT_QUIT
Definition SDL_events.h:89
SDL_EVENT_PRIVATE2
@ SDL_EVENT_PRIVATE2
Definition SDL_events.h:261
SDL_EVENT_FINGER_DOWN
@ SDL_EVENT_FINGER_DOWN
Definition SDL_events.h:212

## Function Documentation

## SDL_AddEventWatch()

bool SDL_AddEventWatch | ( | SDL_EventFilter | filter,
|  | void * | userdata
| ) |  |

extern

Add a callback to be triggered when an event is added to the event queue.

`filter` will be called when an event happens, and its return value is ignored.

WARNING: Be very careful of what you do in the event filter function, as it may run in a different thread!

If the quit event is generated by a signal (e.g. SIGINT), it will bypass the internal queue and be delivered to the watch callback immediately, and arrive at the next event poll.

Note: the callback is called for events posted by the user through SDL_PushEvent(), but not for disabled events, nor for events by a filter callback set with SDL_SetEventFilter(), nor for events posted by the user through SDL_PeepEvents().

Parameters

  filter | an SDL_EventFilter function to call when an event happens.
  userdata | a pointer that is passed to `filter`.

Returns
  true on success or false on failure; call SDL_GetError() for more information.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_RemoveEventWatch
  SDL_SetEventFilter

## SDL_COMPILE_TIME_ASSERT()

SDL_COMPILE_TIME_ASSERT | ( | SDL_Event | ,
|  | sizeof(SDL_Event) | = `=sizeof(((SDL_Event *) NULL) ->padding)`
| ) |  |

## SDL_EventEnabled()

bool SDL_EventEnabled | ( | Uint32 | type | ) |

extern

Query the state of processing events by type.

Parameters

  type | the type of event; see SDL_EventType for details.

Returns
  true if the event is being processed, false otherwise.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_SetEventEnabled

## SDL_FilterEvents()

void SDL_FilterEvents | ( | SDL_EventFilter | filter,
|  | void * | userdata
| ) |  |

extern

Run a specific filter function on the current event queue, removing any events for which the filter returns false.

See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), this function does not change the filter permanently, it only uses the supplied filter until this function returns.

Parameters

  filter | the SDL_EventFilter function to call when an event happens.
  userdata | a pointer that is passed to `filter`.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_GetEventFilter
  SDL_SetEventFilter

## SDL_FlushEvent()

void SDL_FlushEvent | ( | Uint32 | type | ) |

extern

Clear events of a specific type from the event queue.

This will unconditionally remove any events from the queue that match `type`. If you need to remove a range of event types, use SDL_FlushEvents() instead.

It's also normal to just ignore events you don't care about in your event loop without calling this function.

This function only affects currently queued events. If you want to make sure that all pending OS events are flushed, you can call SDL_PumpEvents() on the main thread immediately before the flush call.

If you have user events with custom data that needs to be freed, you should use SDL_PeepEvents() to remove and clean up those events before calling this function.

Parameters

  type | the type of event to be cleared; see SDL_EventType for details.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_FlushEvents

## SDL_FlushEvents()

void SDL_FlushEvents | ( | Uint32 | minType,
|  | Uint32 | maxType
| ) |  |

extern

Clear events of a range of types from the event queue.

This will unconditionally remove any events from the queue that are in the range of `minType` to `maxType`, inclusive. If you need to remove a single event type, use SDL_FlushEvent() instead.

It's also normal to just ignore events you don't care about in your event loop without calling this function.

This function only affects currently queued events. If you want to make sure that all pending OS events are flushed, you can call SDL_PumpEvents() on the main thread immediately before the flush call.

Parameters

  minType | the low end of event type to be cleared, inclusive; see SDL_EventType for details.
  maxType | the high end of event type to be cleared, inclusive; see SDL_EventType for details.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_FlushEvent

## SDL_GetEventFilter()

bool SDL_GetEventFilter | ( | SDL_EventFilter * | filter,
|  | void ** | userdata
| ) |  |

extern

Query the current event filter.

This function can be used to "chain" filters, by saving the existing filter before replacing it with a function that will call that saved filter.

Parameters

  filter | the current callback function will be stored here.
  userdata | the pointer that is passed to the current event filter will be stored here.

Returns
  true on success or false if there is no event filter set.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_SetEventFilter

## SDL_GetWindowFromEvent()

SDL_Window * SDL_GetWindowFromEvent | ( | const SDL_Event * | event | ) |

extern

Get window associated with an event.

Parameters

  event | an event containing a `windowID`.

Returns
  the associated window on success or NULL if there is none.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_PollEvent
  SDL_WaitEvent
  SDL_WaitEventTimeout

## SDL_HasEvent()

bool SDL_HasEvent | ( | Uint32 | type | ) |

extern

Check for the existence of a certain event type in the event queue.

If you need to check for a range of event types, use SDL_HasEvents() instead.

Parameters

  type | the type of event to be queried; see SDL_EventType for details.

Returns
  true if events matching `type` are present, or false if events matching `type` are not present.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_HasEvents

## SDL_HasEvents()

bool SDL_HasEvents | ( | Uint32 | minType,
|  | Uint32 | maxType
| ) |  |

extern

Check for the existence of certain event types in the event queue.

If you need to check for a single event type, use SDL_HasEvent() instead.

Parameters

  minType | the low end of event type to be queried, inclusive; see SDL_EventType for details.
  maxType | the high end of event type to be queried, inclusive; see SDL_EventType for details.

Returns
  true if events with type >= `minType` and <= `maxType` are present, or false if not.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_HasEvents

## SDL_PeepEvents()

int SDL_PeepEvents | ( | SDL_Event * | events,
|  | int | numevents,
|  | SDL_EventAction | action,
|  | Uint32 | minType,
|  | Uint32 | maxType
| ) |  |

extern

Check the event queue for messages and optionally return them.

`action` may be any of the following:

- `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the event queue.
- `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, within the specified minimum and maximum type, will be returned to the caller and will not be removed from the queue. If you pass NULL for `events`, then `numevents` is ignored and the total number of matching events will be returned.
- `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, within the specified minimum and maximum type, will be returned to the caller and will be removed from the queue.

You may have to call SDL_PumpEvents() before calling this function. Otherwise, the events may not be ready to be filtered when you call SDL_PeepEvents().

Parameters

  events | destination buffer for the retrieved events, may be NULL to leave the events in the queue and return the number of events that would have been stored.
  numevents | if action is SDL_ADDEVENT, the number of events to add back to the event queue; if action is SDL_PEEKEVENT or SDL_GETEVENT, the maximum number of events to retrieve.
  action | action to take; see Remarks for details.
  minType | minimum value of the event type to be considered; SDL_EVENT_FIRST is a safe choice.
  maxType | maximum value of the event type to be considered; SDL_EVENT_LAST is a safe choice.

Returns
  the number of events actually stored or -1 on failure; call SDL_GetError() for more information.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_PollEvent
  SDL_PumpEvents
  SDL_PushEvent

## SDL_PollEvent()

bool SDL_PollEvent | ( | SDL_Event * | event | ) |

extern

Poll for currently pending events.

If `event` is not NULL, the next event is removed from the queue and stored in the SDL_Event structure pointed to by `event`. The 1 returned refers to this event, immediately stored in the SDL Event structure – not an event to follow.

If `event` is NULL, it simply returns 1 if there is an event in the queue, but will not remove it from the queue.

As this function may implicitly call SDL_PumpEvents(), you can only call this function in the thread that set the video mode.

SDL_PollEvent() is the favored way of receiving system events since it can be done from the main loop and does not suspend the main loop while waiting on an event to be posted.

The common practice is to fully process the event queue once every frame, usually as a first step before updating the game's state:

while (game_is_still_running) {
SDL_Event event;
while (SDL_PollEvent(&event)) { // poll until all events are handled!
// decide what to do with this event.
}
// update game state, draw the current frame
}
SDL_PollEvent
bool SDL_PollEvent(SDL_Event *event)
SDL_Event
Definition SDL_events.h:989

Parameters

  event | the SDL_Event structure to be filled with the next event from the queue, or NULL.

Returns
  true if this got an event or false if there are none available.

\threadsafety This function should only be called on the main thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_PushEvent
  SDL_WaitEvent
  SDL_WaitEventTimeout

## SDL_PumpEvents()

void SDL_PumpEvents | ( | void |  | ) |

extern

Pump the event loop, gathering events from the input devices.

This function updates the event queue and internal input device state.

SDL_PumpEvents() gathers all the pending input information from devices and places it in the event queue. Without calls to SDL_PumpEvents() no events would ever be placed on the queue. Often the need for calls to SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not polling or waiting for events (e.g. you are filtering them), then you must call SDL_PumpEvents() to force an event queue update.

\threadsafety This function should only be called on the main thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_PollEvent
  SDL_WaitEvent

## SDL_PushEvent()

bool SDL_PushEvent | ( | SDL_Event * | event | ) |

extern

Add an event to the event queue.

The event queue can actually be used as a two way communication channel. Not only can events be read from the queue, but the user can also push their own events onto it. `event` is a pointer to the event structure you wish to push onto the queue. The event is copied into the queue, and the caller may dispose of the memory pointed to after SDL_PushEvent() returns.

Note: Pushing device input events onto the queue doesn't modify the state of the device within SDL.

Note: Events pushed onto the queue with SDL_PushEvent() get passed through the event filter but events added with SDL_PeepEvents() do not.

For pushing application-specific events, please use SDL_RegisterEvents() to get an event type that does not conflict with other code that also wants its own custom event types.

Parameters

  event | the SDL_Event to be added to the queue.

Returns
  true on success, false if the event was filtered or on failure; call SDL_GetError() for more information. A common reason for error is the event queue being full.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_PeepEvents
  SDL_PollEvent
  SDL_RegisterEvents

## SDL_RegisterEvents()

Uint32 SDL_RegisterEvents | ( | int | numevents | ) |

extern

Allocate a set of user-defined events, and return the beginning event number for that set of events.

Parameters

  numevents | the number of events to be allocated.

Returns
  the beginning event number, or 0 if numevents is invalid or if there are not enough user-defined events left.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_PushEvent

## SDL_RemoveEventWatch()

void SDL_RemoveEventWatch | ( | SDL_EventFilter | filter,
|  | void * | userdata
| ) |  |

extern

Remove an event watch callback added with SDL_AddEventWatch().

This function takes the same input as SDL_AddEventWatch() to identify and delete the corresponding callback.

Parameters

  filter | the function originally passed to SDL_AddEventWatch().
  userdata | the pointer originally passed to SDL_AddEventWatch().

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_AddEventWatch

## SDL_SetEventEnabled()

void SDL_SetEventEnabled | ( | Uint32 | type,
|  | bool | enabled
| ) |  |

extern

Set the state of processing events by type.

Parameters

  type | the type of event; see SDL_EventType for details.
  enabled | whether to process the event or not.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_EventEnabled

## SDL_SetEventFilter()

void SDL_SetEventFilter | ( | SDL_EventFilter | filter,
|  | void * | userdata
| ) |  |

extern

Set up a filter to process all events before they are added to the internal event queue.

If you just want to see events without modifying them or preventing them from being queued, you should use SDL_AddEventWatch() instead.

If the filter function returns true when called, then the event will be added to the internal queue. If it returns false, then the event will be dropped from the queue, but the internal state will still be updated. This allows selective filtering of dynamically arriving events.

WARNING: Be very careful of what you do in the event filter function, as it may run in a different thread!

On platforms that support it, if the quit event is generated by an interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the application at the next event poll.

Note: Disabled events never make it to the event filter function; see SDL_SetEventEnabled().

Note: Events pushed onto the queue with SDL_PushEvent() get passed through the event filter, but events pushed onto the queue with SDL_PeepEvents() do not.

Parameters

  filter | an SDL_EventFilter function to call when an event happens.
  userdata | a pointer that is passed to `filter`.

\threadsafety It is safe to call this function from any thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_AddEventWatch
  SDL_SetEventEnabled
  SDL_GetEventFilter
  SDL_PeepEvents
  SDL_PushEvent

## SDL_WaitEvent()

bool SDL_WaitEvent | ( | SDL_Event * | event | ) |

extern

Wait indefinitely for the next available event.

If `event` is not NULL, the next event is removed from the queue and stored in the SDL_Event structure pointed to by `event`.

As this function may implicitly call SDL_PumpEvents(), you can only call this function in the thread that initialized the video subsystem.

Parameters

  event | the SDL_Event structure to be filled in with the next event from the queue, or NULL.

Returns
  true on success or false if there was an error while waiting for events; call SDL_GetError() for more information.

\threadsafety This function should only be called on the main thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_PollEvent
  SDL_PushEvent
  SDL_WaitEventTimeout

## SDL_WaitEventTimeout()

bool SDL_WaitEventTimeout | ( | SDL_Event * | event,
|  | Sint32 | timeoutMS
| ) |  |

extern

Wait until the specified timeout (in milliseconds) for the next available event.

If `event` is not NULL, the next event is removed from the queue and stored in the SDL_Event structure pointed to by `event`.

As this function may implicitly call SDL_PumpEvents(), you can only call this function in the thread that initialized the video subsystem.

The timeout is not guaranteed, the actual wait time could be longer due to system scheduling.

Parameters

  event | the SDL_Event structure to be filled in with the next event from the queue, or NULL.
  timeoutMS | the maximum number of milliseconds to wait for the next available event.

Returns
  true if this got an event or false if the timeout elapsed without any events available.

\threadsafety This function should only be called on the main thread.

Since
  This function is available since SDL 3.2.0.

See also
  SDL_PollEvent
  SDL_PushEvent
  SDL_WaitEvent