1 /+
2 +            Copyright 2022 – 2024 Aya Partridge
3 +          Copyright 2018 - 2022 Michael D. Parker
4 + Distributed under the Boost Software License, Version 1.0.
5 +     (See accompanying file LICENSE_1_0.txt or copy at
6 +           http://www.boost.org/LICENSE_1_0.txt)
7 +/
8 module sdl.hints;
9 
10 import bindbc.sdl.config;
11 import bindbc.sdl.codegen;
12 
13 import sdl.stdinc: SDL_bool;
14 
15 enum{
16 	SDL_HINT_FRAMEBUFFER_ACCELERATION = "SDL_FRAMEBUFFER_ACCELERATION",
17 	SDL_HINT_RENDER_DRIVER = "SDL_RENDER_DRIVER",
18 	SDL_HINT_RENDER_OPENGL_SHADERS = "SDL_RENDER_OPENGL_SHADERS",
19 	SDL_HINT_RENDER_SCALE_QUALITY = "SDL_RENDER_SCALE_QUALITY",
20 	SDL_HINT_RENDER_VSYNC = "SDL_RENDER_VSYNC",
21 	SDL_HINT_VIDEO_X11_XVIDMODE = "SDL_VIDEO_X11_XVIDMODE",
22 	SDL_HINT_VIDEO_X11_XINERAMA = "SDL_VIDEO_X11_XINERAMA",
23 	SDL_HINT_VIDEO_X11_XRANDR = "SDL_VIDEO_X11_XRANDR",
24 	SDL_HINT_GRAB_KEYBOARD = "SDL_GRAB_KEYBOARD",
25 	SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS = "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS",
26 	SDL_HINT_IDLE_TIMER_DISABLED = "SDL_IOS_IDLE_TIMER_DISABLED",
27 	SDL_HINT_ORIENTATIONS = "SDL_IOS_ORIENTATIONS",
28 	SDL_HINT_XINPUT_ENABLED = "SDL_XINPUT_ENABLED",
29 	SDL_HINT_GAMECONTROLLERCONFIG = "SDL_GAMECONTROLLERCONFIG",
30 	SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS = "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS",
31 	SDL_HINT_ALLOW_TOPMOST = "SDL_ALLOW_TOPMOST",
32 	SDL_HINT_TIMER_RESOLUTION = "SDL_TIMER_RESOLUTION",
33 }
34 static if(sdlSupport >= SDLSupport.v2_0_1)
35 enum{
36 	SDL_HINT_RENDER_DIRECT3D_THREADSAFE = "SDL_RENDER_DIRECT3D_THREADSAFE",
37 	SDL_HINT_VIDEO_HIGHDPI_DISABLED = "SDL_VIDEO_HIGHDPI_DISABLED",
38 }
39 static if(sdlSupport >= SDLSupport.v2_0_2)
40 enum{
41 	SDL_HINT_VIDEO_ALLOW_SCREENSAVER = "SDL_VIDEO_ALLOW_SCREENSAVER",
42 	SDL_HINT_MOUSE_RELATIVE_MODE_WARP = "SDL_MOUSE_RELATIVE_MODE_WARP",
43 	SDL_HINT_ACCELEROMETER_AS_JOYSTICK = "SDL_ACCELEROMETER_AS_JOYSTICK",
44 	SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK = "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK",
45 	SDL_HINT_VIDEO_WIN_D3DCOMPILER = "SDL_VIDEO_WIN_D3DCOMPILER",
46 	SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT = "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT",
47 	SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES = "SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES",
48 }
49 // This is *intended* to be == and not >=. The values for all of these changed in 2.0.4.
50 static if(sdlSupport == SDLSupport.v2_0_3)
51 enum{
52 	SDL_HINT_RENDER_DIRECT3D11_DEBUG = "SDL_HINT_RENDER_DIRECT3D11_DEBUG",
53 	SDL_HINT_WINRT_PRIVACY_POLICY_URL = "SDL_HINT_WINRT_PRIVACY_POLICY_URL",
54 	SDL_HINT_WINRT_PRIVACY_POLICY_LABEL = "SDL_HINT_WINRT_PRIVACY_POLICY_LABEL",
55 	SDL_HINT_WINRT_HANDLE_BACK_BUTTON = "SDL_HINT_WINRT_HANDLE_BACK_BUTTON",
56 }
57 static if(sdlSupport >= SDLSupport.v2_0_4)
58 enum{
59 	SDL_HINT_VIDEO_X11_NET_WM_PING = "SDL_VIDEO_X11_NET_WM_PING",
60 	SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN = "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN",
61 	SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP = "SDL_WINDOWS_ENABLE_MESSAGELOOP",
62 	SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING = "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING",
63 	SDL_HINT_THREAD_STACK_SIZE = "SDL_THREAD_STACK_SIZE",
64 	SDL_HINT_MAC_BACKGROUND_APP = "SDL_MAC_BACKGROUND_APP",
65 	SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION = "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION",
66 	SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION = "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION",
67 	SDL_HINT_IME_INTERNAL_EDITING = "SDL_IME_INTERNAL_EDITING",
68 	SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT = "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT",
69 	SDL_HINT_NO_SIGNAL_HANDLERS = "SDL_NO_SIGNAL_HANDLERS",
70 	SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 = "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4",
71 	
72 	// Changed values from those introduced in 2.0.3
73 	SDL_HINT_RENDER_DIRECT3D11_DEBUG = "SDL_RENDER_DIRECT3D11_DEBUG",
74 	SDL_HINT_WINRT_PRIVACY_POLICY_URL = "SDL_WINRT_PRIVACY_POLICY_URL",
75 	SDL_HINT_WINRT_PRIVACY_POLICY_LABEL = "SDL_WINRT_PRIVACY_POLICY_LABEL",
76 	SDL_HINT_WINRT_HANDLE_BACK_BUTTON = "SDL_WINRT_HANDLE_BACK_BUTTON",
77 }
78 static if(sdlSupport >= SDLSupport.v2_0_4 && sdlSupport < SDLSupport.v2_0_10)
79 enum{
80 	SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH = "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH",
81 }
82 static if(sdlSupport >= SDLSupport.v2_0_5)
83 enum{
84 	SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH = "SDL_MOUSE_FOCUS_CLICKTHROUGH",
85 	SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS = "SDL_APPLE_TV_CONTROLLER_UI_EVENTS",
86 	SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION = "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION",
87 	SDL_HINT_BMP_SAVE_LEGACY_FORMAT = "SDL_BMP_SAVE_LEGACY_FORMAT",
88 	SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING = "SDL_WINDOWS_DISABLE_THREAD_NAMING",
89 	SDL_HINT_RPI_VIDEO_LAYER = "SDL_RPI_VIDEO_LAYER",
90 }
91 static if(sdlSupport >= SDLSupport.v2_0_6)
92 enum{
93 	SDL_HINT_RENDER_LOGICAL_SIZE_MODE = "SDL_RENDER_LOGICAL_SIZE_MODE",
94 	SDL_HINT_WINDOWS_INTRESOURCE_ICON = "SDL_WINDOWS_INTRESOURCE_ICON",
95 	SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL = "SDL_WINDOWS_INTRESOURCE_ICON_SMALL",
96 	SDL_HINT_MOUSE_NORMAL_SPEED_SCALE = "SDL_MOUSE_NORMAL_SPEED_SCALE",
97 	SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE = "SDL_MOUSE_RELATIVE_SPEED_SCALE",
98 	SDL_HINT_TOUCH_MOUSE_EVENTS = "SDL_TOUCH_MOUSE_EVENTS",
99 	SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES = "SDL_GAMECONTROLLER_IGNORE_DEVICES",
100 	SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT = "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT",
101 	SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION = "SDL_QTWAYLAND_CONTENT_ORIENTATION",
102 	SDL_HINT_QTWAYLAND_WINDOW_FLAGS = "SDL_QTWAYLAND_WINDOW_FLAGS",
103 	SDL_HINT_OPENGL_ES_DRIVER = "SDL_OPENGL_ES_DRIVER",
104 	SDL_HINT_AUDIO_RESAMPLING_MODE = "SDL_AUDIO_RESAMPLING_MODE",
105 	SDL_HINT_AUDIO_CATEGORY = "SDL_AUDIO_CATEGORY",
106 }
107 static if(sdlSupport >= SDLSupport.v2_0_8)
108 enum{
109 	SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR = "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR",
110 	SDL_HINT_IOS_HIDE_HOME_INDICATOR = "SDL_IOS_HIDE_HOME_INDICATOR",
111 	SDL_HINT_TV_REMOTE_AS_JOYSTICK = "SDL_TV_REMOTE_AS_JOYSTICK",
112 	SDL_HINT_RETURN_KEY_HIDES_IME = "SDL_RETURN_KEY_HIDES_IME",
113 	SDL_HINT_VIDEO_DOUBLE_BUFFER = "SDL_VIDEO_DOUBLE_BUFFER",
114 }
115 static if(sdlSupport >= SDLSupport.v2_0_9)
116 enum{
117 	SDL_HINT_MOUSE_DOUBLE_CLICK_TIME = "SDL_MOUSE_DOUBLE_CLICK_TIME",
118 	SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS = "SDL_MOUSE_DOUBLE_CLICK_RADIUS",
119 	SDL_HINT_JOYSTICK_HIDAPI = "SDL_JOYSTICK_HIDAPI",
120 	SDL_HINT_JOYSTICK_HIDAPI_PS4 = "SDL_JOYSTICK_HIDAPI_PS4",
121 	SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE = "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE",
122 	SDL_HINT_JOYSTICK_HIDAPI_STEAM = "SDL_JOYSTICK_HIDAPI_STEAM",
123 	SDL_HINT_JOYSTICK_HIDAPI_SWITCH = "SDL_JOYSTICK_HIDAPI_SWITCH",
124 	SDL_HINT_JOYSTICK_HIDAPI_XBOX = "SDL_JOYSTICK_HIDAPI_XBOX",
125 	SDL_HINT_ENABLE_STEAM_CONTROLLERS = "SDL_ENABLE_STEAM_CONTROLLERS",
126 	SDL_HINT_ANDROID_TRAP_BACK_BUTTON = "SDL_ANDROID_TRAP_BACK_BUTTON",
127 }
128 static if(sdlSupport >= SDLSupport.v2_0_10)
129 enum{
130 	SDL_HINT_MOUSE_TOUCH_EVENTS = "SDL_MOUSE_TOUCH_EVENTS",
131 	SDL_HINT_GAMECONTROLLERCONFIG_FILE = "SDL_GAMECONTROLLERCONFIG_FILE",
132 	SDL_HINT_ANDROID_BLOCK_ON_PAUSE = "SDL_ANDROID_BLOCK_ON_PAUSE",
133 	SDL_HINT_RENDER_BATCHING = "SDL_RENDER_BATCHING",
134 	SDL_HINT_EVENT_LOGGING = "SDL_EVENT_LOGGING",
135 	SDL_HINT_WAVE_RIFF_CHUNK_SIZE = "SDL_WAVE_RIFF_CHUNK_SIZE",
136 	SDL_HINT_WAVE_TRUNCATION = "SDL_WAVE_TRUNCATION",
137 	SDL_HINT_WAVE_FACT_CHUNK = "SDL_WAVE_FACT_CHUNK",
138 }
139 static if(sdlSupport >= SDLSupport.v2_0_12)
140 enum{
141 	SDL_HINT_VIDEO_EXTERNAL_CONTEXT = "SDL_VIDEO_EXTERNAL_CONTEXT",
142 	SDL_HINT_VIDEO_X11_WINDOW_VISUALID = "SDL_VIDEO_X11_WINDOW_VISUALID",
143 	SDL_HINT_VIDEO_X11_FORCE_EGL = "SDL_VIDEO_X11_FORCE_EGL",
144 	SDL_HINT_GAMECONTROLLERTYPE = "SDL_GAMECONTROLLERTYPE",
145 	SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS = "SDL_GAMECONTROLLER_USE_BUTTON_LABELS",
146 	SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE = "SDL_JOYSTICK_HIDAPI_GAMECUBE",
147 	SDL_HINT_DISPLAY_USABLE_BOUNDS = "SDL_DISPLAY_USABLE_BOUNDS",
148 }
149 static if(sdlSupport >= SDLSupport.v2_0_14)
150 enum{
151 	SDL_HINT_MOUSE_RELATIVE_SCALING = "SDL_MOUSE_RELATIVE_SCALING",
152 	SDL_HINT_JOYSTICK_HIDAPI_PS5 = "SDL_JOYSTICK_HIDAPI_PS5",
153 	SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT = "SDL_JOYSTICK_HIDAPI_CORRELATE_XINPUT",
154 	SDL_HINT_JOYSTICK_RAWINPUT = "SDL_JOYSTICK_RAWINPUT",
155 	SDL_HINT_JOYSTICK_THREAD = "SDL_JOYSTICK_THREAD",
156 	SDL_HINT_LINUX_JOYSTICK_DEADZONES = "SDL_LINUX_JOYSTICK_DEADZONES",
157 	SDL_HINT_THREAD_PRIORITY_POLICY = "SDL_THREAD_PRIORITY_POLICY",
158 	SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL = "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL",
159 	SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO = "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO",
160 	SDL_HINT_EMSCRIPTEN_ASYNCIFY = "SDL_EMSCRIPTEN_ASYNCIFY",
161 	SDL_HINT_AUTO_UPDATE_JOYSTICKS = "SDL_AUTO_UPDATE_JOYSTICKS",
162 	SDL_HINT_AUTO_UPDATE_SENSORS = "SDL_AUTO_UPDATE_SENSORS",
163 	SDL_HINT_AUDIO_DEVICE_APP_NAME = "SDL_AUDIO_DEVICE_APP_NAME",
164 	SDL_HINT_AUDIO_DEVICE_STREAM_NAME = "SDL_AUDIO_DEVICE_STREAM_NAME",
165 	SDL_HINT_PREFERRED_LOCALES = "SDL_PREFERRED_LOCALES",
166 }
167 static if(sdlSupport >= SDLSupport.v2_0_16)
168 enum{
169 	SDL_HINT_AUDIO_INCLUDE_MONITORS = "SDL_AUDIO_INCLUDE_MONITORS",
170 	SDL_HINT_AUDIO_DEVICE_STREAM_ROLE = "SDL_AUDIO_DEVICE_STREAM_ROLE",
171 }
172 static if(sdlSupport >= SDLSupport.v2_0_18)
173 enum{
174 	SDL_HINT_APP_NAME = "SDL_APP_NAME",
175 	SDL_HINT_IME_SHOW_UI = "SDL_IME_SHOW_UI",
176 	SDL_HINT_JOYSTICK_DEVICE = "SDL_JOYSTICK_DEVICE",
177 	SDL_HINT_LINUX_JOYSTICK_CLASSIC = "SDL_LINUX_JOYSTICK_CLASSIC",
178 	SDL_HINT_POLL_SENTINEL = "SDL_HINT_POLL_SENTINEL",
179 	SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME = "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME",
180 	SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY = "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY",
181 	SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN = "SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN",
182 }
183 static if(sdlSupport >= SDLSupport.v2_0_20)
184 enum{
185 	SDL_HINT_RENDER_LINE_METHOD = "SDL_RENDER_LINE_METHOD",
186 }
187 static if(sdlSupport >= SDLSupport.v2_0_22)
188 enum{
189 	SDL_HINT_FORCE_RAISEWINDOW = "SDL_HINT_FORCE_RAISEWINDOW",
190 	SDL_HINT_IME_SUPPORT_EXTENDED_TEXT = "SDL_HINT_IME_SUPPORT_EXTENDED_TEXT",
191 	SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE = "SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE",
192 	SDL_HINT_JOYSTICK_ROG_CHAKRAM = "SDL_HINT_JOYSTICK_ROG_CHAKRAM",
193 	SDL_HINT_MOUSE_RELATIVE_MODE_CENTER = "SDL_HINT_MOUSE_RELATIVE_MODE_CENTER",
194 	SDL_HINT_MOUSE_AUTO_CAPTURE = "SDL_HINT_MOUSE_AUTO_CAPTURE",
195 	SDL_HINT_VITA_TOUCH_MOUSE_DEVICE = "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE",
196 	SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR = "SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR",
197 	SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL = "SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL",
198 	SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN = "SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN",
199 	SDL_HINT_X11_WINDOW_TYPE = "SDL_HINT_X11_WINDOW_TYPE",
200 	SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE = "SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE",
201 	SDL_HINT_VIDEODRIVER = "SDL_HINT_VIDEODRIVER",
202 	SDL_HINT_AUDIODRIVER = "SDL_HINT_AUDIODRIVER",
203 }
204 static if(sdlSupport >= SDLSupport.v2_24)
205 enum{
206 	SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS = "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS",
207 	SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC = "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC",
208 	SDL_HINT_JOYSTICK_HIDAPI_SHIELD = "SDL_JOYSTICK_HIDAPI_SHIELD",
209 	SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED = "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED",
210 	SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED = "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED",
211 	SDL_HINT_LINUX_DIGITAL_HATS = "SDL_LINUX_DIGITAL_HATS",
212 	SDL_HINT_LINUX_HAT_DEADZONES = "SDL_LINUX_HAT_DEADZONES",
213 	SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH = "SDL_MAC_OPENGL_ASYNC_DISPATCH",
214 	SDL_HINT_MOUSE_RELATIVE_WARP_MOTION = "SDL_MOUSE_RELATIVE_WARP_MOTION",
215 	SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION = "SDL_VIDEO_WAYLAND_MODE_EMULATION",
216 	SDL_HINT_WINDOWS_DPI_AWARENESS = "SDL_WINDOWS_DPI_AWARENESS",
217 	SDL_HINT_WINDOWS_DPI_SCALING = "SDL_WINDOWS_DPI_SCALING",
218 	SDL_HINT_DIRECTINPUT_ENABLED = "SDL_DIRECTINPUT_ENABLED",
219 	SDL_HINT_KMSDRM_DEVICE_INDEX = "SDL_KMSDRM_DEVICE_INDEX",
220 	SDL_HINT_TRACKPAD_IS_TOUCH_ONLY = "SDL_TRACKPAD_IS_TOUCH_ONLY",
221 }
222 static if(sdlSupport >= SDLSupport.v2_26)
223 enum{
224 	SDL_HINT_HIDAPI_IGNORE_DEVICES = "SDL_HIDAPI_IGNORE_DEVICES",
225 	SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS = "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS",
226 	SDL_HINT_JOYSTICK_HIDAPI_PS3 = "SDL_JOYSTICK_HIDAPI_PS3",
227 	SDL_HINT_JOYSTICK_HIDAPI_WII = "SDL_JOYSTICK_HIDAPI_WII",
228 	SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED = "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED",
229 	SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 = "SDL_JOYSTICK_HIDAPI_XBOX_360",
230 	SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED = "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED",
231 	SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS = "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS",
232 	SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE = "SDL_JOYSTICK_HIDAPI_XBOX_ONE",
233 	SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED = "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED",
234 	SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE = "SDL_MOUSE_RELATIVE_SYSTEM_SCALE",
235 	SDL_HINT_PS2_DYNAMIC_VSYNC = "SDL_PS2_DYNAMIC_VSYNC",
236 	SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP = "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP",
237 }
238 static if(sdlSupport >= SDLSupport.v2_28)
239 enum{
240 	SDL_HINT_ENABLE_SCREEN_KEYBOARD = "SDL_ENABLE_SCREEN_KEYBOARD",
241 	SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS = "SDL_WINDOWS_ENABLE_MENU_MNEMONICS",
242 }
243 static if(sdlSupport >= SDLSupport.v2_30)
244 enum{
245 	SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES = "SDL_JOYSTICK_ARCADESTICK_DEVICES",
246 	SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED = "SDL_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED",
247 	SDL_HINT_JOYSTICK_BLACKLIST_DEVICES = "SDL_JOYSTICK_BLACKLIST_DEVICES",
248 	SDL_HINT_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED = "SDL_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED",
249 	SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES = "SDL_JOYSTICK_FLIGHTSTICK_DEVICES",
250 	SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED = "SDL_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED",
251 	SDL_HINT_JOYSTICK_GAMECUBE_DEVICES = "SDL_JOYSTICK_GAMECUBE_DEVICES",
252 	SDL_HINT_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED = "SDL_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED",
253 	SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK = "SDL_JOYSTICK_HIDAPI_STEAMDECK",
254 	SDL_HINT_JOYSTICK_IOKIT = "SDL_JOYSTICK_IOKIT",
255 	SDL_HINT_JOYSTICK_MFI = "SDL_JOYSTICK_MFI",
256 	SDL_HINT_JOYSTICK_THROTTLE_DEVICES = "SDL_JOYSTICK_THROTTLE_DEVICES",
257 	SDL_HINT_JOYSTICK_THROTTLE_DEVICES_EXCLUDED = "SDL_JOYSTICK_THROTTLE_DEVICES_EXCLUDED",
258 	SDL_HINT_JOYSTICK_WGI = "SDL_JOYSTICK_WGI",
259 	SDL_HINT_JOYSTICK_WHEEL_DEVICES = "SDL_JOYSTICK_WHEEL_DEVICES",
260 	SDL_HINT_JOYSTICK_WHEEL_DEVICES_EXCLUDED = "SDL_JOYSTICK_WHEEL_DEVICES_EXCLUDED",
261 	SDL_HINT_JOYSTICK_ZERO_CENTERED_DEVICES = "SDL_JOYSTICK_ZERO_CENTERED_DEVICES",
262 	SDL_HINT_LOGGING = "SDL_LOGGING",
263 	SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE = "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE",
264 	SDL_HINT_ROG_GAMEPAD_MICE = "SDL_ROG_GAMEPAD_MICE",
265 	SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED = "SDL_ROG_GAMEPAD_MICE_EXCLUDED",
266 	SDL_HINT_SHUTDOWN_DBUS_ON_QUIT = "SDL_SHUTDOWN_DBUS_ON_QUIT",
267 }
268 
269 alias SDL_HintPriority = uint;
270 enum: SDL_HintPriority{
271 	SDL_HINT_DEFAULT,
272 	SDL_HINT_NORMAL,
273 	SDL_HINT_OVERRIDE,
274 }
275 
276 alias SDL_HintCallback = extern(C) void function(void* userData, const(char)* name, const(char)* oldValue, const(char)* newValue) nothrow;
277 
278 mixin(joinFnBinds((){
279 	FnBind[] ret = [
280 		{q{SDL_bool}, q{SDL_SetHintWithPriority}, q{const(char)* name, const(char)* value, SDL_HintPriority priority}},
281 		{q{SDL_bool}, q{SDL_SetHint}, q{const(char)* name, const(char)* value}},
282 		{q{const(char)*}, q{SDL_GetHint}, q{const(char)* name}},
283 		{q{void}, q{SDL_AddHintCallback}, q{const(char)* name, SDL_HintCallback callback, void* userData}},
284 		{q{void}, q{SDL_DelHintCallback}, q{const(char)* name, SDL_HintCallback callback, void* userData}},
285 		{q{void}, q{SDL_ClearHints}, q{}},
286 	];
287 	if(sdlSupport >= SDLSupport.v2_0_5){
288 		FnBind[] add = [
289 			{q{SDL_bool}, q{SDL_GetHintBoolean}, q{const(char)* name, SDL_bool defaultValue}},
290 		];
291 		ret ~= add;
292 	}
293 	if(sdlSupport >= SDLSupport.v2_24){
294 		FnBind[] add = [
295 			{q{SDL_bool}, q{SDL_ResetHint}, q{const(char)* name}},
296 		];
297 		ret ~= add;
298 	}
299 	if(sdlSupport >= SDLSupport.v2_26){
300 		FnBind[] add = [
301 			{q{void}, q{SDL_ResetHints}, q{}},
302 		];
303 		ret ~= add;
304 	}
305 	return ret;
306 }()));