SDL_EventType(3type)

SDL_EventType(3type) ๐Ÿ’…โœจ

SDL3 DATATYPES โ€” yeah bestie, that's the little corner of the manual this one lives in.

Okay so. Sit down, grab a snack ๐Ÿ“, because this page is the master list of every single event type SDL can hand you. Like, the whole menu. Every vibe your app can get pinged with. And it is LONG, so we're doing it in two parts โ€” this is part one. No skipping, no skimming, we're getting every constant and every number. Periodt. ๐Ÿ’–


๐Ÿ’– NAME ๐Ÿ’–

SDL_EventType โ€” the types of events that can be delivered. ๐ŸŒˆ

Like, that's it. That's the whole name section. The entire roster of things that can show up in your event loop and go "hey. hey. bestie. something happened." ๐Ÿ‘‘


๐ŸŒธ SYNOPSIS ๐ŸŒธ

First things first, you gotta pull in the header:

#include <SDL3/SDL_events.h>

typedef enum SDL_EventType
{
    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_USABLE_BOUNDS_CHANGED, /**< Display has changed usable bounds */
    SDL_EVENT_DISPLAY_FIRST = SDL_EVENT_DISPLAY_ORIENTATION,
    SDL_EVENT_DISPLAY_LAST = SDL_EVENT_DISPLAY_USABLE_BOUNDS_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.
                                             data1 is 1 for live-resize expose events, 0 otherwise. */
    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 */
    SDL_EVENT_SCREEN_KEYBOARD_SHOWN,   /**< The on-screen keyboard has been shown */
    SDL_EVENT_SCREEN_KEYBOARD_HIDDEN,  /**< The on-screen keyboard has been hidden */

    /* 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,

    /* Pinch events */
    SDL_EVENT_PINCH_BEGIN      = 0x710,     /**< Pinch gesture started */
    SDL_EVENT_PINCH_UPDATE,                 /**< Pinch gesture updated */
    SDL_EVENT_PINCH_END,                    /**< Pinch gesture ended */

    /* 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 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 */

๐ŸŽ€ okay but what do these ALL mean bestie ๐ŸŽ€

Here's the tour, group by group, in the same order as the enum. Nothing skipped, nothing invented. ๐Ÿซถ

๐Ÿซง the "application" era

  • SDL_EVENT_FIRST = 0 โ€” literally unused, and the comment says do not remove. So don't. It's the load-bearing zero. ๐Ÿ’€
  • SDL_EVENT_QUIT = 0x100 โ€” user-requested quit. Somebody wants out. ๐Ÿ˜ญ
  • SDL_EVENT_TERMINATING โ€” the OS is terminating your app. This one must be handled in a callback set with SDL_AddEventWatch(). On iOS it fires in applicationWillTerminate(), on Android in onDestroy().
  • SDL_EVENT_LOW_MEMORY โ€” you're low on memory, free some up if you can. Also must be handled in a callback set with SDL_AddEventWatch(). On iOS it's applicationDidReceiveMemoryWarning(), on Android it's onTrimMemory().
  • SDL_EVENT_WILL_ENTER_BACKGROUND โ€” you're about to go to the background. Must be handled in a callback set with SDL_AddEventWatch(). iOS: applicationWillResignActive(). Android: onPause().
  • SDL_EVENT_DID_ENTER_BACKGROUND โ€” you did enter the background and might not get CPU for a while. Must be handled in a callback set with SDL_AddEventWatch(). iOS: applicationDidEnterBackground(). Android: onPause().
  • SDL_EVENT_WILL_ENTER_FOREGROUND โ€” you're about to come back to the foreground. Must be handled in a callback set with SDL_AddEventWatch(). iOS: applicationWillEnterForeground(). Android: onResume().
  • SDL_EVENT_DID_ENTER_FOREGROUND โ€” you're now interactive. Must be handled in a callback set with SDL_AddEventWatch(). iOS: applicationDidBecomeActive(). Android: onResume().
Heads up bestie ๐Ÿ’œ โ€” that whole background/foreground/terminating/low-memory crew has special meaning on iOS and Android, and the manpage points you at README-ios.md and README-android.md for the details. Go read those. I'm serious.
  • SDL_EVENT_LOCALE_CHANGED โ€” the user's locale preferences changed. ๐ŸŒ
  • SDL_EVENT_SYSTEM_THEME_CHANGED โ€” the system theme changed. ๐ŸŒ—

๐Ÿ–ฅ๏ธ display events

Reserved number alert: 0x150 was SDL_DISPLAYEVENT, and the number is reserved for sdl2-compat. Do not touch it, do not reuse it, it is not yours. ๐Ÿ™…โ€โ™€๏ธ
  • SDL_EVENT_DISPLAY_ORIENTATION = 0x151 โ€” display orientation changed, and the new value is in data1.
  • SDL_EVENT_DISPLAY_ADDED โ€” a display got added to the system.
  • SDL_EVENT_DISPLAY_REMOVED โ€” a display got removed from the system.
  • SDL_EVENT_DISPLAY_MOVED โ€” a display changed position.
  • SDL_EVENT_DISPLAY_DESKTOP_MODE_CHANGED โ€” a display changed desktop mode.
  • SDL_EVENT_DISPLAY_CURRENT_MODE_CHANGED โ€” a display changed current mode.
  • SDL_EVENT_DISPLAY_CONTENT_SCALE_CHANGED โ€” a display changed content scale.
  • SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED โ€” a display changed usable bounds.
  • SDL_EVENT_DISPLAY_FIRST = SDL_EVENT_DISPLAY_ORIENTATION โ€” the first display event. Bookend #1. ๐ŸŽ€
  • SDL_EVENT_DISPLAY_LAST = SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED โ€” the last display event. Bookend #2.

๐ŸชŸ window events

More reserved numbers, keep your hands to yourself: 0x200 was SDL_WINDOWEVENT and 0x201 was SDL_SYSWMEVENT, both reserved for sdl2-compat. ๐Ÿ’€
  • SDL_EVENT_WINDOW_SHOWN = 0x202 โ€” the window has been shown.
  • SDL_EVENT_WINDOW_HIDDEN โ€” the window has been hidden.
  • SDL_EVENT_WINDOW_EXPOSED โ€” the window has been exposed and should be redrawn, and it can be redrawn directly from event watchers for this event. data1 is 1 for live-resize expose events, 0 otherwise.
  • SDL_EVENT_WINDOW_MOVED โ€” the window has been moved to data1, data2.
  • SDL_EVENT_WINDOW_RESIZED โ€” the 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 โ€” the window has been minimized.
  • SDL_EVENT_WINDOW_MAXIMIZED โ€” the window has been maximized.
  • SDL_EVENT_WINDOW_RESTORED โ€” the window has been restored to normal size and position.
  • SDL_EVENT_WINDOW_MOUSE_ENTER โ€” the window gained mouse focus.
  • SDL_EVENT_WINDOW_MOUSE_LEAVE โ€” the window lost mouse focus.
  • SDL_EVENT_WINDOW_FOCUS_GAINED โ€” the window gained keyboard focus.
  • SDL_EVENT_WINDOW_FOCUS_LOST โ€” the window lost keyboard focus.
  • SDL_EVENT_WINDOW_CLOSE_REQUESTED โ€” the window manager is asking for the window to be closed. It's a request, bestie, read the room. ๐Ÿ‘€
  • SDL_EVENT_WINDOW_HIT_TEST โ€” the 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 โ€” the window has been moved to display data1.
  • SDL_EVENT_WINDOW_DISPLAY_SCALE_CHANGED โ€” the 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 entered fullscreen mode. main character energy ๐ŸŒˆ
  • SDL_EVENT_WINDOW_LEAVE_FULLSCREEN โ€” the window left fullscreen mode.
  • SDL_EVENT_WINDOW_DESTROYED โ€” the window with the associated ID is being or has already been destroyed. Important: if this 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. So likeโ€ฆ timing is everything here. โš ๏ธ
  • SDL_EVENT_WINDOW_HDR_STATE_CHANGED โ€” the window's HDR properties have changed.
  • SDL_EVENT_WINDOW_FIRST = SDL_EVENT_WINDOW_SHOWN โ€” first window event.
  • SDL_EVENT_WINDOW_LAST = SDL_EVENT_WINDOW_HDR_STATE_CHANGED โ€” last window event.

โŒจ๏ธ keyboard events

  • SDL_EVENT_KEY_DOWN = 0x300 โ€” a key was pressed.
  • SDL_EVENT_KEY_UP โ€” a key was released.
  • SDL_EVENT_TEXT_EDITING โ€” keyboard text editing (composition). iykyk ๐Ÿงš
  • SDL_EVENT_TEXT_INPUT โ€” keyboard text input.
  • SDL_EVENT_KEYMAP_CHANGED โ€” the keymap changed because of a system event, like an input language or keyboard layout change.
  • SDL_EVENT_KEYBOARD_ADDED โ€” a new keyboard was inserted into the system.
  • SDL_EVENT_KEYBOARD_REMOVED โ€” a keyboard was removed.
  • SDL_EVENT_TEXT_EDITING_CANDIDATES โ€” keyboard text editing candidates.
  • SDL_EVENT_SCREEN_KEYBOARD_SHOWN โ€” the on-screen keyboard has been shown.
  • SDL_EVENT_SCREEN_KEYBOARD_HIDDEN โ€” the on-screen keyboard has been hidden.

๐Ÿ–ฑ๏ธ mouse events

  • SDL_EVENT_MOUSE_MOTION = 0x400 โ€” the mouse moved.
  • SDL_EVENT_MOUSE_BUTTON_DOWN โ€” a mouse button was pressed.
  • SDL_EVENT_MOUSE_BUTTON_UP โ€” a mouse button was released.
  • SDL_EVENT_MOUSE_WHEEL โ€” mouse wheel motion. scrolling behavior fr fr ๐ŸŒ€
  • SDL_EVENT_MOUSE_ADDED โ€” a new mouse was inserted into the system.
  • SDL_EVENT_MOUSE_REMOVED โ€” a mouse was 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 was inserted into the system.
  • SDL_EVENT_JOYSTICK_REMOVED โ€” an opened joystick has been removed. (Yeah, "opened" โ€” that word is doing work, don't gloss over it.)
  • 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 was inserted into the system.
  • SDL_EVENT_GAMEPAD_REMOVED โ€” a gamepad was 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

Okay so the source ships these four with no little /**< ... */ comment, so I'm not about to sit here and invent lore for them. They're the touch crew, they live at 0x700, that's what the page says and that's what I'm telling you. ๐Ÿค๐Ÿ’œ

๐Ÿค pinch events

  • SDL_EVENT_PINCH_BEGIN = 0x710 โ€” pinch gesture started.
  • SDL_EVENT_PINCH_UPDATE โ€” pinch gesture updated.
  • SDL_EVENT_PINCH_END โ€” pinch gesture ended.
HUGE one, do not skip this: 0x800, 0x801, and 0x802 were the Gesture events from SDL2. Do not reuse these values! sdl2-compat needs them! Like, genuinely. Leave them alone. ๐Ÿšจ

๐Ÿ“‹ clipboard events

  • SDL_EVENT_CLIPBOARD_UPDATE = 0x900 โ€” the clipboard changed. ๐Ÿ“‹โœจ

๐Ÿ“ drag and drop events

  • SDL_EVENT_DROP_FILE = 0x1000 โ€” the system requests a file open.
  • SDL_EVENT_DROP_TEXT โ€” a text/plain drag-and-drop event.
  • SDL_EVENT_DROP_BEGIN โ€” a new set of drops is beginning (NULL filename).
  • SDL_EVENT_DROP_COMPLETE โ€” the current set of drops is now complete (NULL filename).
  • SDL_EVENT_DROP_POSITION โ€” position while moving over the window.

And that's where part one cuts off, right in the middle of the drag-and-drop crew ๐Ÿ˜ญ the enum keeps going, so stay tuned for part two bestie ๐Ÿ’–

           /* 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;

okay bestie, and that's the whole rest of the enum, no crumbs left ๐Ÿ’… look at the range on it โ€” audio hotplug, sensors, pressure-sensitive pen drama, camera hotplug, render tea, some reserved private-platform slots, the internal poll sentinel, and then that big open playground at the top end for SDL_EVENT_USER through SDL_EVENT_LAST which are for you, fr fr. ๐Ÿ‘‘

quick reminder of the receipts though, because these numbers are not decorative:

  • SDL_EVENT_AUDIO_DEVICE_ADDED kicks off at 0x1100 and the audio trio just increments from there โ€” added, removed, format changed, that's the arc ๐Ÿ’–
  • SDL_EVENT_SENSOR_UPDATE sits at 0x1200 all on its own, main character energy, no siblings ๐ŸŒธ
  • SDL_EVENT_PEN_PROXIMITY_IN starts the pen block at 0x1300 and the pen events run all the way through SDL_EVENT_PEN_AXIS โ€” proximity in/out, down/up, button down/up, motion, axis ๐Ÿ–Š๏ธโœจ
  • SDL_EVENT_CAMERA_DEVICE_ADDED opens at 0x1400, then removed, approved, denied โ€” and yes, approved and denied literally mean the user said yes or no, that's in the comment, not me making stuff up ๐Ÿ™ˆ
  • SDL_EVENT_RENDER_TARGETS_RESET is 0x2000, with device reset and device lost trailing behind it โ€” and device lost is the dramatic one, "can't be recovered", so don't be out here pretending it's fine ๐Ÿ˜ญ
  • SDL_EVENT_PRIVATE0 through SDL_EVENT_PRIVATE3 start at 0x4000 and are, as advertised, reserved for private platforms โ€” not your lane, bestie ๐Ÿซถ
  • SDL_EVENT_POLL_SENTINEL is 0x7F00 and it signals the end of an event poll cycle, which is lowkey iconic as a job description ๐Ÿ’€
  • SDL_EVENT_USER is 0x8000 and it's the start of the events that are for your use, and the docs are clear: they should be allocated with SDL_RegisterEvents() โ€” don't freehand it ๐ŸŽ€
  • SDL_EVENT_LAST is 0xFFFF and exists only for bounding internal arrays โ€” it's a fence, not a party invite ๐Ÿงš
  • and SDL_EVENT_ENUM_PADDING = 0x7FFFFFFF is there for exactly one reason and it's in the comment: it makes sure the enum is the size of Uint32 ๐Ÿ’œ
real talk warning: the whole 0x thing matters because these are the actual values the enum holds โ€” if you go comparing or storing them, compare the names, don't go inventing your own numbers. no cap. โœ‹

๐ŸŒˆ AVAILABILITY ๐ŸŒˆ

This enum is available since SDL 3.2.0. so if you're on something older than that... bestie, we need to talk ๐Ÿ˜ญ


and that's the page!! ๐ŸŽ€ this came out of the Simple Directmedia Layer docs, tagged SDL 3.4.18 โ€” go forth and handle your events, you absolute legend ๐Ÿ’–โœจ๐Ÿฆ‹๐ŸŒธ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from