From 3304ec648b3f02b6cf192bbe0677c645153c7f41 Mon Sep 17 00:00:00 2001
From: Lucas Alves <[EMAIL REDACTED]>
Date: Wed, 22 Jul 2026 23:35:11 -0300
Subject: [PATCH] Add "_FIRST/_LAST" fields to events subsections.
---
include/SDL3/SDL_events.h | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/include/SDL3/SDL_events.h b/include/SDL3/SDL_events.h
index 0a8130df51d2b..1a67d733fe84a 100644
--- a/include/SDL3/SDL_events.h
+++ b/include/SDL3/SDL_events.h
@@ -180,6 +180,8 @@ typedef enum SDL_EventType
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 */
+ SDL_EVENT_KEYBOARD_FIRST = SDL_EVENT_KEY_DOWN,
+ SDL_EVENT_KEYBOARD_LAST = SDL_EVENT_SCREEN_KEYBOARD_HIDDEN,
/* Mouse events */
SDL_EVENT_MOUSE_MOTION = 0x400, /**< Mouse moved */
@@ -188,6 +190,8 @@ typedef enum SDL_EventType
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_MOUSE_FIRST = SDL_EVENT_MOUSE_MOTION,
+ SDL_EVENT_MOUSE_LAST = SDL_EVENT_MOUSE_REMOVED,
/* Joystick events */
SDL_EVENT_JOYSTICK_AXIS_MOTION = 0x600, /**< Joystick axis motion */
@@ -199,6 +203,8 @@ typedef enum SDL_EventType
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_JOYSTICK_FIRST = SDL_EVENT_JOYSTICK_AXIS_MOTION,
+ SDL_EVENT_JOYSTICK_LAST = SDL_EVENT_JOYSTICK_UPDATE_COMPLETE,
/* Gamepad events */
SDL_EVENT_GAMEPAD_AXIS_MOTION = 0x650, /**< Gamepad axis motion */
@@ -215,22 +221,30 @@ typedef enum SDL_EventType
SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED, /**< Gamepad Steam handle has changed */
SDL_EVENT_GAMEPAD_CAPSENSE_TOUCH, /**< Gamepad capsense was touched */
SDL_EVENT_GAMEPAD_CAPSENSE_RELEASE, /**< Gamepad capsense was released */
+ SDL_EVENT_GAMEPAD_FIRST = SDL_EVENT_GAMEPAD_AXIS_MOTION,
+ SDL_EVENT_GAMEPAD_LAST = SDL_EVENT_GAMEPAD_CAPSENSE_RELEASE,
/* Touch events */
SDL_EVENT_FINGER_DOWN = 0x700,
SDL_EVENT_FINGER_UP,
SDL_EVENT_FINGER_MOTION,
SDL_EVENT_FINGER_CANCELED,
+ SDL_EVENT_FINGER_FIRST = SDL_EVENT_FINGER_DOWN,
+ SDL_EVENT_FINGER_LAST = 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 */
+ SDL_EVENT_PINCH_FIRST = SDL_EVENT_PINCH_BEGIN,
+ SDL_EVENT_PINCH_LAST = SDL_EVENT_PINCH_END,
/* 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 */
+ SDL_EVENT_CLIPBOARD_FIRST = SDL_EVENT_CLIPBOARD_UPDATE,
+ SDL_EVENT_CLIPBOARD_LAST = SDL_EVENT_CLIPBOARD_UPDATE,
/* Drag and drop events */
SDL_EVENT_DROP_FILE = 0x1000, /**< The system requests a file open */
@@ -238,14 +252,20 @@ typedef enum SDL_EventType
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_DROP_FIRST = SDL_EVENT_DROP_FILE,
+ SDL_EVENT_DROP_LAST = SDL_EVENT_DROP_POSITION,
/* 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. */
+ SDL_EVENT_AUDIO_DEVICE_FIRST = SDL_EVENT_AUDIO_DEVICE_ADDED,
+ SDL_EVENT_AUDIO_DEVICE_LAST = SDL_EVENT_AUDIO_DEVICE_FORMAT_CHANGED,
/* Sensor events */
SDL_EVENT_SENSOR_UPDATE = 0x1200, /**< A sensor was updated */
+ SDL_EVENT_SENSOR_FIRST = SDL_EVENT_SENSOR_UPDATE,
+ SDL_EVENT_SENSOR_LAST = SDL_EVENT_SENSOR_UPDATE,
/* Pressure-sensitive pen events */
SDL_EVENT_PEN_PROXIMITY_IN = 0x1300, /**< Pressure-sensitive pen has become available */
@@ -256,20 +276,28 @@ typedef enum SDL_EventType
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_PEN_FIRST = SDL_EVENT_PEN_PROXIMITY_IN,
+ SDL_EVENT_PEN_LAST = SDL_EVENT_PEN_AXIS,
/* 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. */
+ SDL_EVENT_CAMERA_DEVICE_FIRST = SDL_EVENT_CAMERA_DEVICE_ADDED,
+ SDL_EVENT_CAMERA_DEVICE_LAST = SDL_EVENT_CAMERA_DEVICE_DENIED,
/* Notification events */
SDL_EVENT_NOTIFICATION_ACTION_INVOKED = 0x1500, /**< A user response to a system notification was received. */
+ SDL_EVENT_NOTIFICATION_FIRST = SDL_EVENT_NOTIFICATION_ACTION_INVOKED,
+ SDL_EVENT_NOTIFICATION_LAST = SDL_EVENT_NOTIFICATION_ACTION_INVOKED,
/* 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. */
+ SDL_EVENT_RENDER_FIRST = SDL_EVENT_RENDER_TARGETS_RESET,
+ SDL_EVENT_RENDER_LAST = SDL_EVENT_RENDER_DEVICE_LOST,
/* Reserved events for private platforms */
SDL_EVENT_PRIVATE0 = 0x4000,