From 2147e7bfea0fc99fc04eef20f3a808ffc0c8865c Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 24 Jul 2021 11:01:58 -0700
Subject: [PATCH] Sorted the hints alphabetically
---
include/SDL_hints.h | 2060 +++++++++++++++++++++----------------------
1 file changed, 1027 insertions(+), 1033 deletions(-)
diff --git a/include/SDL_hints.h b/include/SDL_hints.h
index d6a2507bc..549ed6626 100644
--- a/include/SDL_hints.h
+++ b/include/SDL_hints.h
@@ -48,333 +48,464 @@ extern "C" {
#endif
/**
- * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
- *
- * SDL can try to accelerate the SDL screen surface by using streaming
- * textures with a 3D rendering engine. This variable controls whether and
- * how this is done.
+ * \brief A variable controlling whether the Android / iOS built-in
+ * accelerometer should be listed as a joystick device.
*
* This variable can be set to the following values:
- * "0" - Disable 3D acceleration
- * "1" - Enable 3D acceleration, using the default renderer.
- * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.)
- *
- * By default SDL tries to make a best guess for each platform whether
- * to use acceleration or not.
+ * "0" - The accelerometer is not listed as a joystick
+ * "1" - The accelerometer is available as a 3 axis joystick (the default).
*/
-#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION"
+#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
/**
- * \brief A variable specifying which render driver to use.
- *
- * If the application doesn't pick a specific renderer to use, this variable
- * specifies the name of the preferred renderer. If the preferred renderer
- * can't be initialized, the normal default renderer is used.
+ * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed.
*
- * This variable is case insensitive and can be set to the following values:
- * "direct3d"
- * "opengl"
- * "opengles2"
- * "opengles"
- * "metal"
- * "software"
+ * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed
+ * and your window is full-screen. This prevents the user from getting stuck in
+ * your application if you've enabled keyboard grab.
*
- * The default varies by platform, but it's the first one in the list that
- * is available on the current platform.
- */
-#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER"
+ * The variable can be set to the following values:
+ * "0" - SDL will not handle Alt+Tab. Your application is responsible
+ for handling Alt+Tab while the keyboard is grabbed.
+ * "1" - SDL will minimize your window when Alt+Tab is pressed (default)
+*/
+#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED"
/**
- * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available.
+ * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
+ * This is a debugging aid for developers and not expected to be used by end users. The default is "1"
*
* This variable can be set to the following values:
- * "0" - Disable shaders
- * "1" - Enable shaders
- *
- * By default shaders are used if OpenGL supports them.
+ * "0" - don't allow topmost
+ * "1" - allow topmost
*/
-#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS"
+#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
/**
- * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations.
+ * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
*
- * This variable can be set to the following values:
- * "0" - Thread-safety is not enabled (faster)
- * "1" - Thread-safety is enabled
+ * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
*
- * By default the Direct3D device is created with thread-safety disabled.
+ * If both hints were set then SDL_RWFromFile() will look into expansion files
+ * after a given relative path was not found in the internal storage and assets.
+ *
+ * By default this hint is not set and the APK expansion files are not searched.
*/
-#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
-
+#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
+
/**
- * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
+ * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
*
- * This variable does not have any effect on the Direct3D 9 based renderer.
+ * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
*
- * This variable can be set to the following values:
- * "0" - Disable Debug Layer use
- * "1" - Enable Debug Layer use
+ * If both hints were set then SDL_RWFromFile() will look into expansion files
+ * after a given relative path was not found in the internal storage and assets.
*
- * By default, SDL does not use Direct3D Debug Layer.
+ * By default this hint is not set and the APK expansion files are not searched.
*/
-#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG"
+#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
/**
- * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
+ * \brief A variable to control whether the event loop will block itself when the app is paused.
*
- * This variable can be set to the following values:
- * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
- * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
+ * The variable can be set to the following values:
+ * "0" - Non blocking.
+ * "1" - Blocking. (default)
*
- * By default letterbox is used
+ * The value should be set before SDL is initialized.
*/
-#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE"
+#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE"
/**
- * \brief A variable controlling the scaling quality
+ * \brief A variable to control whether SDL will pause audio in background
+ * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking")
*
- * This variable can be set to the following values:
- * "0" or "nearest" - Nearest pixel sampling
- * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D)
- * "2" or "best" - Currently this is the same as "linear"
+ * The variable can be set to the following values:
+ * "0" - Non paused.
+ * "1" - Paused. (default)
*
- * By default nearest pixel sampling is used
+ * The value should be set before SDL is initialized.
*/
-#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY"
+#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO"
/**
- * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
+ * \brief A variable to control whether we trap the Android back button to handle it manually.
+ * This is necessary for the right mouse button to work on some Android devices, or
+ * to be able to trap the back button for use in your code reliably. If set to true,
+ * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of
+ * SDL_SCANCODE_AC_BACK.
*
- * This variable can be set to the following values:
- * "0" - Disable vsync
- * "1" - Enable vsync
+ * The variable can be set to the following values:
+ * "0" - Back button will be handled as usual for system. (default)
+ * "1" - Back button will be trapped, allowing you to handle the key press
+ * manually. (This will also let right mouse click work on systems
+ * where the right mouse button functions as back.)
*
- * By default SDL does not sync screen surface updates with vertical refresh.
+ * The value of this hint is used at runtime, so it can be changed at any time.
*/
-#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"
+#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON"
/**
- * \brief A variable controlling whether the screensaver is enabled.
+ * \brief A variable controlling whether controllers used with the Apple TV
+ * generate UI events.
*
- * This variable can be set to the following values:
- * "0" - Disable screensaver
- * "1" - Enable screensaver
+ * When UI events are generated by controller input, the app will be
+ * backgrounded when the Apple TV remote's menu button is pressed, and when the
+ * pause or B buttons on gamepads are pressed.
*
- * By default SDL will disable the screensaver.
+ * More information about properly making use of controllers for the Apple TV
+ * can be found here:
+ * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
+ *
+ * This variable can be set to the following values:
+ * "0" - Controller input does not generate UI events (the default).
+ * "1" - Controller input generates UI events.
*/
-#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER"
+#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"
/**
- * \brief A variable controlling whether the graphics context is externally managed.
- *
- * This variable can be set to the following values:
- * "0" - SDL will manage graphics contexts that are attached to windows.
- * "1" - Disable graphics context management on windows.
+ * \brief A variable controlling whether the Apple TV remote's joystick axes
+ * will automatically match the rotation of the remote.
*
- * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the
- * context will be automatically saved and restored when pausing the application. Additionally, some
- * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this
- * behavior, which is desireable when the application manages the graphics context, such as
- * an externally managed OpenGL context or attaching a Vulkan surface to the window.
+ * This variable can be set to the following values:
+ * "0" - Remote orientation does not affect joystick axes (the default).
+ * "1" - Joystick axes are based on the orientation of the remote.
*/
-#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT"
+#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
/**
- * \brief A variable controlling whether the X11 VidMode extension should be used.
+ * \brief A variable controlling the audio category on iOS and Mac OS X
*
* This variable can be set to the following values:
- * "0" - Disable XVidMode
- * "1" - Enable XVidMode
*
- * By default SDL will use XVidMode if it is available.
+ * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)
+ * "playback" - Use the AVAudioSessionCategoryPlayback category
+ *
+ * For more information, see Apple's documentation:
+ * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
*/
-#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE"
+#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY"
/**
- * \brief A variable controlling whether the X11 Xinerama extension should be used.
+ * \brief Specify an application name for an audio device.
*
- * This variable can be set to the following values:
- * "0" - Disable Xinerama
- * "1" - Enable Xinerama
+ * Some audio backends (such as PulseAudio) allow you to describe your audio
+ * stream. Among other things, this description might show up in a system
+ * control panel that lets the user adjust the volume on specific audio
+ * streams instead of using one giant master volume slider.
*
- * By default SDL will use Xinerama if it is available.
+ * This hints lets you transmit that information to the OS. The contents of
+ * this hint are used while opening an audio device. You should use a string
+ * that describes your program ("My Game 2: The Revenge")
+ *
+ * Setting this to "" or leaving it unset will have SDL use a reasonable
+ * default: probably the application's name or "SDL Application" if SDL
+ * doesn't have any better information.
+ *
+ * On targets where this is not supported, this hint does nothing.
*/
-#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA"
+#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME"
/**
- * \brief A variable controlling whether the X11 XRandR extension should be used.
+ * \brief Specify an application name for an audio device.
*
- * This variable can be set to the following values:
- * "0" - Disable XRandR
- * "1" - Enable XRandR
+ * Some audio backends (such as PulseAudio) allow you to describe your audio
+ * stream. Among other things, this description might show up in a system
+ * control panel that lets the user adjust the volume on specific audio
+ * streams instead of using one giant master volume slider.
*
- * By default SDL will not use XRandR because of window manager issues.
+ * This hints lets you transmit that information to the OS. The contents of
+ * this hint are used while opening an audio device. You should use a string
+ * that describes your what your program is playing ("audio stream" is
+ * probably sufficient in many cases, but this could be useful for something
+ * like "team chat" if you have a headset playing VoIP audio separately).
+ *
+ * Setting this to "" or leaving it unset will have SDL use a reasonable
+ * default: "audio stream" or something similar.
+ *
+ * On targets where this is not supported, this hint does nothing.
*/
-#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
+#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME"
/**
- * \brief A variable forcing the visual ID chosen for new X11 windows
+ * \brief Specify an application role for an audio device.
+ *
+ * Some audio backends (such as Pipewire) allow you to describe the role of
+ * your audio stream. Among other things, this description might show up in
+ * a system control panel or software for displaying and manipulating media
+ * playback/capture graphs.
*
+ * This hints lets you transmit that information to the OS. The contents of
+ * this hint are used while opening an audio device. You should use a string
+ * that describes your what your program is playing (Game, Music, Movie,
+ * etc...).
+ *
+ * Setting this to "" or leaving it unset will have SDL use a reasonable
+ * default: "Game" or something similar.
+ *
+ * On targets where this is not supported, this hint does nothing.
*/
-#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID"
+#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE"
/**
- * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
+ * \brief A variable controlling speed/quality tradeoff of audio resampling.
+ *
+ * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
+ * to handle audio resampling. There are different resampling modes available
+ * that produce different levels of quality, using more CPU.
+ *
+ * If this hint isn't specified to a valid setting, or libsamplerate isn't
+ * available, SDL will use the default, internal resampling algorithm.
+ *
+ * Note that this is currently only applicable to resampling audio that is
+ * being written to a device for playback or audio being read from a device
+ * for capture. SDL_AudioCVT always uses the default resampler (although this
+ * might change for SDL 2.1).
+ *
+ * This hint is currently only checked at audio subsystem initialization.
*
* This variable can be set to the following values:
- * "0" - Disable _NET_WM_PING
- * "1" - Enable _NET_WM_PING
*
- * By default SDL will use _NET_WM_PING, but for applications that know they
- * will not always be able to respond to ping requests in a timely manner they can
- * turn it off to avoid the window manager thinking the app is hung.
- * The hint is checked in CreateWindow.
+ * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
+ * "1" or "fast" - Use fast, slightly higher quality resampling, if available
+ * "2" or "medium" - Use medium quality resampling, if available
+ * "3" or "best" - Use high quality resampling, if available
*/
-#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING"
+#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE"
/**
- * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
- *
- * This variable can be set to the following values:
- * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
- * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
- *
- * By default SDL will use _NET_WM_BYPASS_COMPOSITOR
- *
+ * \brief A variable controlling whether SDL updates joystick state when getting input events
+ *
+ * This variable can be set to the following values:
+ *
+ * "0" - You'll call SDL_JoystickUpdate() manually
+ * "1" - SDL will automatically call SDL_JoystickUpdate() (default)
+ *
+ * This hint can be toggled on and off at runtime.
*/
-#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
+#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS"
/**
- * \brief A variable controlling whether X11 should use GLX or EGL by default
+ * \brief A variable controlling whether SDL updates sensor state when getting input events
*
- * This variable can be set to the following values:
- * "0" - Use GLX
- * "1" - Use EGL
+ * This variable can be set to the following values:
*
- * By default SDL will use GLX when both are present.
+ * "0" - You'll call SDL_SensorUpdate() manually
+ * "1" - SDL will automatically call SDL_SensorUpdate() (default)
+ *
+ * This hint can be toggled on and off at runtime.
*/
-#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL"
+#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS"
/**
- * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
+ * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
*
- * This variable can be set to the following values:
- * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
- * "1" - The window frame is interactive when the cursor is hidden
+ * The bitmap header version 4 is required for proper alpha channel support and
+ * SDL will use it when required. Should this not be desired, this hint can
+ * force the use of the 40 byte header version which is supported everywhere.
*
- * By default SDL will allow interaction with the window frame when the cursor is hidden
+ * The variable can be set to the following values:
+ * "0" - Surfaces with a colorkey or an alpha channel are saved to a
+ * 32-bit BMP file with an alpha mask. SDL will use the bitmap
+ * header version 4 and set the alpha mask accordingly.
+ * "1" - Surfaces with a colorkey or an alpha channel are saved to a
+ * 32-bit BMP file without an alpha mask. The alpha channel data
+ * will be in the file, but applications are going to ignore it.
+ *
+ * The default value is "0".
*/
-#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
+#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
/**
- * \brief A variable to specify custom icon resource id from RC file on Windows platform
+ * \brief Override for SDL_GetDisplayUsableBounds()
+ *
+ * If set, this hint will override the expected results for
+ * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want
+ * to do this, but this allows an embedded system to request that some of the
+ * screen be reserved for other uses when paired with a well-behaved
+ * application.
+ *
+ * The contents of this hint must be 4 comma-separated integers, the first
+ * is the bounds x, then y, width and height, in that order.
*/
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON"
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
+#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS"
/**
- * \brief A variable controlling whether the windows message loop is processed by SDL
+ * \brief Disable giving back control to the browser automatically
+ * when running with asyncify
*
- * This variable can be set to the following values:
- * "0" - The window message loop is not run
- * "1" - The window message loop is processed in SDL_PumpEvents()
+ * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations
+ * such as refreshing the screen or polling events.
*
- * By default SDL will process the windows message loop
+ * This hint only applies to the emscripten platform
+ *
+ * The variable can be set to the following values:
+ * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes)
+ * "1" - Enable emscripten_sleep calls (the default)
*/
-#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
+#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY"
/**
- * \brief A variable controlling whether grabbing input grabs the keyboard
+ * \brief override the binding element for keyboard inputs for Emscripten builds
*
- * This variable can be set to the following values:
- * "0" - Grab will affect only the mouse
- * "1" - Grab will affect mouse and keyboard
+ * This hint only applies to the emscripten platform
*
- * By default SDL will not grab the keyboard so system shortcuts still work.
+ * The variable can be one of
+ * "#window" - The javascript window object (this is the default)
+ * "#document" - The javascript document object
+ * "#screen" - the javascript window.screen object
+ * "#canvas" - the WebGL canvas element
+ * any other string without a leading # sign applies to the element on the page with that ID.
*/
-#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD"
+#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
/**
- * \brief A variable setting the double click time, in milliseconds.
+ * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
+ *
+ * The variable can be set to the following values:
+ * "0" - Do not scan for Steam Controllers
+ * "1" - Scan for Steam Controllers (the default)
+ *
+ * The default value is "1". This hint must be set before initializing the joystick subsystem.
*/
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME"
+#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
/**
- * \brief A variable setting the double click radius, in pixels.
+ * \brief A variable controlling whether SDL logs all events pushed onto its internal queue.
+ *
+ * This variable can be set to the following values:
+ *
+ * "0" - Don't log any events (default)
+ * "1" - Log all events except mouse and finger motion, which are pretty spammy.
+ * "2" - Log all events.
+ *
+ * This is generally meant to be used to debug SDL itself, but can be useful
+ * for application developers that need better visibility into what is going
+ * on in the event queue. Logged events are sent through SDL_Log(), which
+ * means by default they appear on stdout on most platforms or maybe
+ * OutputDebugString() on Windows, and can be funneled by the app with
+ * SDL_LogSetOutputFunction(), etc.
+ *
+ * This hint can be toggled on and off at runtime, if you only need to log
+ * events for a small subset of program execution.
*/
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
+#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING"
/**
- * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
+ * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
+ *
+ * SDL can try to accelerate the SDL screen surface by using streaming
+ * textures with a 3D rendering engine. This variable controls whether and
+ * how this is done.
+ *
+ * This variable can be set to the following values:
+ * "0" - Disable 3D acceleration
+ * "1" - Enable 3D acceleration, using the default renderer.
+ * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.)
+ *
+ * By default SDL tries to make a best guess for each platform whether
+ * to use acceleration or not.
*/
-#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE"
+#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION"
/**
- * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
+ * \brief A variable that lets you manually hint extra gamecontroller db entries.
+ *
+ * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
+ *
+ * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
+ * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
*/
-#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE"
+#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
/**
- * \brief A variable controlling whether relative mouse motion is affected by renderer scaling
+ * \brief A variable that lets you provide a file with extra gamecontroller db entries.
*
- * This variable can be set to the following values:
- * "0" - Relative motion is unaffected by DPI or renderer's logical size
- * "1" - Relative motion is scaled according to DPI scaling and logical size
+ * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
*
- * By default relative mouse deltas are affected by DPI and renderer scaling
+ * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
+ * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
*/
-#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING"
+#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
/**
- * \brief A variable controlling whether relative mouse mode is implemented using mouse warping
+ * \brief A variable that overrides the automatic controller type detection
*
- * This variable can be set to the following values:
- * "0" - Relative mouse mode uses raw input
- * "1" - Relative mouse mode uses mouse warping
+ * The variable should be comma separated entries, in the form: VID/PID=type
*
- * By default SDL will use raw input for relative mouse mode
+ * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd
+ *
+ * The type should be one of:
+ * Xbox360
+ * XboxOne
+ * PS3
+ * PS4
+ * PS5
+ * SwitchPro
+ *
+ * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
*/
-#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP"
+#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE"
/**
- * \brief Allow mouse click events when clicking to focus an SDL window
+ * \brief A variable containing a list of devices to skip when scanning for game controllers.
*
- * This variable can be set to the following values:
- * "0" - Ignore mouse clicks that activate a window
- * "1" - Generate events for mouse clicks that activate a window
+ * The format of the string is a comma separated list of USB VID/PID pairs
+ * in hexadecimal form, e.g.
*
- * By default SDL will ignore mouse clicks that activate a window
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named
+ * file will be loaded and interpreted as the value of the variable.
*/
-#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
+#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
/**
- * \brief A variable controlling whether touch events should generate synthetic mouse events
+ * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
*
- * This variable can be set to the following values:
- * "0" - Touch events will not generate mouse events
- * "1" - Touch events will generate mouse events
+ * The format of the string is a comma separated list of USB VID/PID pairs
+ * in hexadecimal form, e.g.
*
- * By default SDL will generate mouse events for touch events
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named
+ * file will be loaded and interpreted as the value of the variable.
*/
-#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS"
+#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
/**
- * \brief A variable controlling whether mouse events should generate synthetic touch events
+ * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout.
+ *
+ * For example, on Nintendo Switch controllers, normally you'd get:
*
- * This variable can be set to the following values:
- * "0" - Mouse events will not generate touch events (default for desktop platforms)
- * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
+ * (Y)
+ * (X) (B)
+ * (A)
+ *
+ * but if this hint is set, you'll get:
+ *
+ * (X)
+ * (Y) (A)
+ * (B)
+ *
+ * The variable can be set to the following values:
+ * "0" - Report the face buttons by position, as though they were on an Xbox controller.
+ * "1" - Report the face buttons by label instead of position
+ *
+ * The default value is "1". This hint may be set at any time.
*/
-
-#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS"
+#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROL
(Patch may be truncated, please check the link at the top of this post.)