sdl3_sys/generated/hints.rs
1//! This file contains functions to set and get configuration hints, as well as
2//! listing each of them alphabetically.
3//!
4//! The convention for naming hints is SDL_HINT_X, where "SDL_X" is the
5//! environment variable that can be used to override the default.
6//!
7//! In general these hints are just that - they may or may not be supported or
8//! applicable on any given platform, but they provide a way for an application
9//! or user to give the library a hint as to how they would like the library to
10//! work.
11
12use super::error::*;
13
14use super::stdinc::*;
15
16/// Specify the behavior of Alt+Tab while the keyboard is grabbed.
17///
18/// By default, SDL emulates Alt+Tab functionality while the keyboard is
19/// grabbed and your window is full-screen. This prevents the user from getting
20/// stuck in your application if you've enabled keyboard grab.
21///
22/// The variable can be set to the following values:
23///
24/// - "0": SDL will not handle Alt+Tab. Your application is responsible for
25/// handling Alt+Tab while the keyboard is grabbed.
26/// - "1": SDL will minimize your window when Alt+Tab is pressed (default)
27///
28/// This hint can be set anytime.
29///
30/// ## Availability
31/// This hint is available since SDL 3.2.0.
32pub const SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED: *const ::core::ffi::c_char =
33 c"SDL_ALLOW_ALT_TAB_WHILE_GRABBED".as_ptr();
34
35/// A variable to control whether the SDL activity is allowed to be re-created.
36///
37/// If this hint is true, the activity can be recreated on demand by the OS,
38/// and Java static data and C++ static data remain with their current values.
39/// If this hint is false, then SDL will call exit() when you return from your
40/// main function and the application will be terminated and then started fresh
41/// each time.
42///
43/// The variable can be set to the following values:
44///
45/// - "0": The application starts fresh at each launch. (default)
46/// - "1": The application activity can be recreated by the OS.
47///
48/// This hint can be set anytime.
49///
50/// ## Availability
51/// This hint is available since SDL 3.2.0.
52pub const SDL_HINT_ANDROID_ALLOW_RECREATE_ACTIVITY: *const ::core::ffi::c_char =
53 c"SDL_ANDROID_ALLOW_RECREATE_ACTIVITY".as_ptr();
54
55/// A variable to control whether the event loop will block itself when the app
56/// is paused.
57///
58/// The variable can be set to the following values:
59///
60/// - "0": Non blocking.
61/// - "1": Blocking. (default)
62///
63/// This hint should be set before SDL is initialized.
64///
65/// ## Availability
66/// This hint is available since SDL 3.2.0.
67pub const SDL_HINT_ANDROID_BLOCK_ON_PAUSE: *const ::core::ffi::c_char =
68 c"SDL_ANDROID_BLOCK_ON_PAUSE".as_ptr();
69
70/// A variable to control whether low latency audio should be enabled.
71///
72/// Some devices have poor quality output when this is enabled, but this is
73/// usually an improvement in audio latency.
74///
75/// The variable can be set to the following values:
76///
77/// - "0": Low latency audio is not enabled.
78/// - "1": Low latency audio is enabled. (default)
79///
80/// This hint should be set before SDL audio is initialized.
81///
82/// ## Availability
83/// This hint is available since SDL 3.2.0.
84pub const SDL_HINT_ANDROID_LOW_LATENCY_AUDIO: *const ::core::ffi::c_char =
85 c"SDL_ANDROID_LOW_LATENCY_AUDIO".as_ptr();
86
87/// A variable to control whether we trap the Android back button to handle it
88/// manually.
89///
90/// This is necessary for the right mouse button to work on some Android
91/// devices, or to be able to trap the back button for use in your code
92/// reliably. If this hint is true, the back button will show up as an
93/// [`SDL_EVENT_KEY_DOWN`] / [`SDL_EVENT_KEY_UP`] pair with a keycode of
94/// [`SDL_SCANCODE_AC_BACK`].
95///
96/// The variable can be set to the following values:
97///
98/// - "0": Back button will be handled as usual for system. (default)
99/// - "1": Back button will be trapped, allowing you to handle the key press
100/// manually. (This will also let right mouse click work on systems where the
101/// right mouse button functions as back.)
102///
103/// This hint can be set anytime.
104///
105/// ## Availability
106/// This hint is available since SDL 3.2.0.
107pub const SDL_HINT_ANDROID_TRAP_BACK_BUTTON: *const ::core::ffi::c_char =
108 c"SDL_ANDROID_TRAP_BACK_BUTTON".as_ptr();
109
110/// A variable setting the app ID string.
111///
112/// This string is used by desktop compositors to identify and group windows
113/// together, as well as match applications with associated desktop settings
114/// and icons.
115///
116/// This will override [`SDL_PROP_APP_METADATA_IDENTIFIER_STRING`], if set by the
117/// application.
118///
119/// This hint should be set before SDL is initialized.
120///
121/// ## Availability
122/// This hint is available since SDL 3.2.0.
123pub const SDL_HINT_APP_ID: *const ::core::ffi::c_char = c"SDL_APP_ID".as_ptr();
124
125/// A variable setting the application name.
126///
127/// This hint lets you specify the application name sent to the OS when
128/// required. For example, this will often appear in volume control applets for
129/// audio streams, and in lists of applications which are inhibiting the
130/// screensaver. You should use a string that describes your program ("My Game
131/// 2: The Revenge")
132///
133/// This will override [`SDL_PROP_APP_METADATA_NAME_STRING`], if set by the
134/// application.
135///
136/// This hint should be set before SDL is initialized.
137///
138/// ## Availability
139/// This hint is available since SDL 3.2.0.
140pub const SDL_HINT_APP_NAME: *const ::core::ffi::c_char = c"SDL_APP_NAME".as_ptr();
141
142/// A variable controlling whether controllers used with the Apple TV generate
143/// UI events.
144///
145/// When UI events are generated by controller input, the app will be
146/// backgrounded when the Apple TV remote's menu button is pressed, and when
147/// the pause or B buttons on gamepads are pressed.
148///
149/// More information about properly making use of controllers for the Apple TV
150/// can be found here:
151/// <https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/>
152///
153/// The variable can be set to the following values:
154///
155/// - "0": Controller input does not generate UI events. (default)
156/// - "1": Controller input generates UI events.
157///
158/// This hint can be set anytime.
159///
160/// ## Availability
161/// This hint is available since SDL 3.2.0.
162pub const SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS: *const ::core::ffi::c_char =
163 c"SDL_APPLE_TV_CONTROLLER_UI_EVENTS".as_ptr();
164
165/// A variable controlling whether the Apple TV remote's joystick axes will
166/// automatically match the rotation of the remote.
167///
168/// The variable can be set to the following values:
169///
170/// - "0": Remote orientation does not affect joystick axes. (default)
171/// - "1": Joystick axes are based on the orientation of the remote.
172///
173/// This hint can be set anytime.
174///
175/// ## Availability
176/// This hint is available since SDL 3.2.0.
177pub const SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION: *const ::core::ffi::c_char =
178 c"SDL_APPLE_TV_REMOTE_ALLOW_ROTATION".as_ptr();
179
180/// Specify the default ALSA audio device name.
181///
182/// This variable is a specific audio device to open when the "default" audio
183/// device is used.
184///
185/// This hint will be ignored when opening the default playback device if
186/// [`SDL_HINT_AUDIO_ALSA_DEFAULT_PLAYBACK_DEVICE`] is set, or when opening the
187/// default recording device if [`SDL_HINT_AUDIO_ALSA_DEFAULT_RECORDING_DEVICE`] is
188/// set.
189///
190/// This hint should be set before an audio device is opened.
191///
192/// ## Availability
193/// This hint is available since SDL 3.2.0.
194///
195/// ## See also
196/// - [`SDL_HINT_AUDIO_ALSA_DEFAULT_PLAYBACK_DEVICE`]
197/// - [`SDL_HINT_AUDIO_ALSA_DEFAULT_RECORDING_DEVICE`]
198pub const SDL_HINT_AUDIO_ALSA_DEFAULT_DEVICE: *const ::core::ffi::c_char =
199 c"SDL_AUDIO_ALSA_DEFAULT_DEVICE".as_ptr();
200
201/// Specify the default ALSA audio playback device name.
202///
203/// This variable is a specific audio device to open for playback, when the
204/// "default" audio device is used.
205///
206/// If this hint isn't set, SDL will check [`SDL_HINT_AUDIO_ALSA_DEFAULT_DEVICE`]
207/// before choosing a reasonable default.
208///
209/// This hint should be set before an audio device is opened.
210///
211/// ## Availability
212/// This hint is available since SDL 3.2.0.
213///
214/// ## See also
215/// - [`SDL_HINT_AUDIO_ALSA_DEFAULT_RECORDING_DEVICE`]
216/// - [`SDL_HINT_AUDIO_ALSA_DEFAULT_DEVICE`]
217pub const SDL_HINT_AUDIO_ALSA_DEFAULT_PLAYBACK_DEVICE: *const ::core::ffi::c_char =
218 c"SDL_AUDIO_ALSA_DEFAULT_PLAYBACK_DEVICE".as_ptr();
219
220/// Specify the default ALSA audio recording device name.
221///
222/// This variable is a specific audio device to open for recording, when the
223/// "default" audio device is used.
224///
225/// If this hint isn't set, SDL will check [`SDL_HINT_AUDIO_ALSA_DEFAULT_DEVICE`]
226/// before choosing a reasonable default.
227///
228/// This hint should be set before an audio device is opened.
229///
230/// ## Availability
231/// This hint is available since SDL 3.2.0.
232///
233/// ## See also
234/// - [`SDL_HINT_AUDIO_ALSA_DEFAULT_PLAYBACK_DEVICE`]
235/// - [`SDL_HINT_AUDIO_ALSA_DEFAULT_DEVICE`]
236pub const SDL_HINT_AUDIO_ALSA_DEFAULT_RECORDING_DEVICE: *const ::core::ffi::c_char =
237 c"SDL_AUDIO_ALSA_DEFAULT_RECORDING_DEVICE".as_ptr();
238
239/// A variable controlling the audio category on iOS and macOS.
240///
241/// The variable can be set to the following values:
242///
243/// - "ambient": Use the AVAudioSessionCategoryAmbient audio category, will be
244/// muted by the phone mute switch (default)
245/// - "playback": Use the AVAudioSessionCategoryPlayback category.
246///
247/// For more information, see Apple's documentation:
248/// <https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html>
249///
250/// This hint should be set before an audio device is opened.
251///
252/// ## Availability
253/// This hint is available since SDL 3.2.0.
254pub const SDL_HINT_AUDIO_CATEGORY: *const ::core::ffi::c_char = c"SDL_AUDIO_CATEGORY".as_ptr();
255
256/// A variable controlling the default audio channel count.
257///
258/// If the application doesn't specify the audio channel count when opening the
259/// device, this hint can be used to specify a default channel count that will
260/// be used. This defaults to "1" for recording and "2" for playback devices.
261///
262/// This hint should be set before an audio device is opened.
263///
264/// ## Availability
265/// This hint is available since SDL 3.2.0.
266pub const SDL_HINT_AUDIO_CHANNELS: *const ::core::ffi::c_char = c"SDL_AUDIO_CHANNELS".as_ptr();
267
268/// Specify an application icon name for an audio device.
269///
270/// Some audio backends (such as Pulseaudio and Pipewire) allow you to set an
271/// XDG icon name for your application. Among other things, this icon might
272/// show up in a system control panel that lets the user adjust the volume on
273/// specific audio streams instead of using one giant master volume slider.
274/// Note that this is unrelated to the icon used by the windowing system, which
275/// may be set with [`SDL_SetWindowIcon`] (or via desktop file on Wayland).
276///
277/// Setting this to "" or leaving it unset will have SDL use a reasonable
278/// default, "applications-games", which is likely to be installed. See
279/// <https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html>
280/// and
281/// <https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html>
282/// for the relevant XDG icon specs.
283///
284/// This hint should be set before an audio device is opened.
285///
286/// ## Availability
287/// This hint is available since SDL 3.2.0.
288pub const SDL_HINT_AUDIO_DEVICE_APP_ICON_NAME: *const ::core::ffi::c_char =
289 c"SDL_AUDIO_DEVICE_APP_ICON_NAME".as_ptr();
290
291/// A variable controlling device buffer size.
292///
293/// This hint is an integer > 0, that represents the size of the device's
294/// buffer in sample frames (stereo audio data in 16-bit format is 4 bytes per
295/// sample frame, for example).
296///
297/// SDL3 generally decides this value on behalf of the app, but if for some
298/// reason the app needs to dictate this (because they want either lower
299/// latency or higher throughput AND ARE WILLING TO DEAL WITH what that might
300/// require of the app), they can specify it.
301///
302/// SDL will try to accommodate this value, but there is no promise you'll get
303/// the buffer size requested. Many platforms won't honor this request at all,
304/// or might adjust it.
305///
306/// This hint should be set before an audio device is opened.
307///
308/// ## Availability
309/// This hint is available since SDL 3.2.0.
310pub const SDL_HINT_AUDIO_DEVICE_SAMPLE_FRAMES: *const ::core::ffi::c_char =
311 c"SDL_AUDIO_DEVICE_SAMPLE_FRAMES".as_ptr();
312
313/// Specify an audio stream name for an audio device.
314///
315/// Some audio backends (such as PulseAudio) allow you to describe your audio
316/// stream. Among other things, this description might show up in a system
317/// control panel that lets the user adjust the volume on specific audio
318/// streams instead of using one giant master volume slider.
319///
320/// This hints lets you transmit that information to the OS. The contents of
321/// this hint are used while opening an audio device. You should use a string
322/// that describes your what your program is playing ("audio stream" is
323/// probably sufficient in many cases, but this could be useful for something
324/// like "team chat" if you have a headset playing VoIP audio separately).
325///
326/// Setting this to "" or leaving it unset will have SDL use a reasonable
327/// default: "audio stream" or something similar.
328///
329/// Note that while this talks about audio streams, this is an OS-level
330/// concept, so it applies to a physical audio device in this case, and not an
331/// [`SDL_AudioStream`], nor an SDL logical audio device.
332///
333/// This hint should be set before an audio device is opened.
334///
335/// ## Availability
336/// This hint is available since SDL 3.2.0.
337pub const SDL_HINT_AUDIO_DEVICE_STREAM_NAME: *const ::core::ffi::c_char =
338 c"SDL_AUDIO_DEVICE_STREAM_NAME".as_ptr();
339
340/// Specify an application role for an audio device.
341///
342/// Some audio backends (such as Pipewire) allow you to describe the role of
343/// your audio stream. Among other things, this description might show up in a
344/// system control panel or software for displaying and manipulating media
345/// playback/recording graphs.
346///
347/// This hints lets you transmit that information to the OS. The contents of
348/// this hint are used while opening an audio device. You should use a string
349/// that describes your what your program is playing (Game, Music, Movie,
350/// etc...).
351///
352/// Setting this to "" or leaving it unset will have SDL use a reasonable
353/// default: "Game" or something similar.
354///
355/// Note that while this talks about audio streams, this is an OS-level
356/// concept, so it applies to a physical audio device in this case, and not an
357/// [`SDL_AudioStream`], nor an SDL logical audio device.
358///
359/// For Windows WASAPI audio, the following roles are supported, and map to
360/// `AUDIO_STREAM_CATEGORY`:
361///
362/// - "Other" (default)
363/// - "Communications" - Real-time communications, such as VOIP or chat
364/// - "Game" - Game audio
365/// - "GameChat" - Game chat audio, similar to "Communications" except that
366/// this will not attenuate other audio streams
367/// - "Movie" - Music or sound with dialog
368/// - "Media" - Music or sound without dialog
369///
370/// Android's AAudio target supports this hint as of SDL 3.4.4. Android does
371/// not support the exact same options as WASAPI, but for portability, will
372/// attempt to map these same strings to the `aaudio_usage_t` constants. For
373/// example, "Movie" and "Media" will both map to `AAUDIO_USAGE_MEDIA`, etc.
374///
375/// If your application applies its own echo cancellation, gain control, and
376/// noise reduction it should also set [`SDL_HINT_AUDIO_DEVICE_RAW_STREAM`].
377///
378/// This hint should be set before an audio device is opened.
379///
380/// ## Availability
381/// This hint is available since SDL 3.2.0.
382pub const SDL_HINT_AUDIO_DEVICE_STREAM_ROLE: *const ::core::ffi::c_char =
383 c"SDL_AUDIO_DEVICE_STREAM_ROLE".as_ptr();
384
385/// Specify whether this audio device should do audio processing.
386///
387/// Some operating systems perform echo cancellation, gain control, and noise
388/// reduction as needed. If your application already handles these, you can set
389/// this hint to prevent the OS from doing additional audio processing.
390///
391/// This corresponds to the WASAPI audio option `AUDCLNT_STREAMOPTIONS_RAW`.
392///
393/// The variable can be set to the following values:
394///
395/// - "0": audio processing can be done by the OS. (default)
396/// - "1": audio processing is done by the application.
397///
398/// This hint should be set before an audio device is opened.
399///
400/// ## Availability
401/// This hint is available since SDL 3.4.0.
402pub const SDL_HINT_AUDIO_DEVICE_RAW_STREAM: *const ::core::ffi::c_char =
403 c"SDL_AUDIO_DEVICE_RAW_STREAM".as_ptr();
404
405/// Specify the input file when recording audio using the disk audio driver.
406///
407/// This defaults to "sdlaudio-in.raw"
408///
409/// This hint should be set before an audio device is opened.
410///
411/// ## Availability
412/// This hint is available since SDL 3.2.0.
413pub const SDL_HINT_AUDIO_DISK_INPUT_FILE: *const ::core::ffi::c_char =
414 c"SDL_AUDIO_DISK_INPUT_FILE".as_ptr();
415
416/// Specify the output file when playing audio using the disk audio driver.
417///
418/// This defaults to "sdlaudio.raw"
419///
420/// This hint should be set before an audio device is opened.
421///
422/// ## Availability
423/// This hint is available since SDL 3.2.0.
424pub const SDL_HINT_AUDIO_DISK_OUTPUT_FILE: *const ::core::ffi::c_char =
425 c"SDL_AUDIO_DISK_OUTPUT_FILE".as_ptr();
426
427/// A variable controlling the audio rate when using the disk audio driver.
428///
429/// The disk audio driver normally simulates real-time for the audio rate that
430/// was specified, but you can use this variable to adjust this rate higher or
431/// lower down to 0. The default value is "1.0".
432///
433/// This hint should be set before an audio device is opened.
434///
435/// ## Availability
436/// This hint is available since SDL 3.2.0.
437pub const SDL_HINT_AUDIO_DISK_TIMESCALE: *const ::core::ffi::c_char =
438 c"SDL_AUDIO_DISK_TIMESCALE".as_ptr();
439
440/// A variable that specifies an audio backend to use.
441///
442/// By default, SDL will try all available audio backends in a reasonable order
443/// until it finds one that can work, but this hint allows the app or user to
444/// force a specific driver, such as "pipewire" if, say, you are on PulseAudio
445/// but want to try talking to the lower level instead.
446///
447/// This hint should be set before SDL is initialized.
448///
449/// ## Availability
450/// This hint is available since SDL 3.2.0.
451pub const SDL_HINT_AUDIO_DRIVER: *const ::core::ffi::c_char = c"SDL_AUDIO_DRIVER".as_ptr();
452
453/// A variable controlling the audio rate when using the dummy audio driver.
454///
455/// The dummy audio driver normally simulates real-time for the audio rate that
456/// was specified, but you can use this variable to adjust this rate higher or
457/// lower down to 0. The default value is "1.0".
458///
459/// This hint should be set before an audio device is opened.
460///
461/// ## Availability
462/// This hint is available since SDL 3.2.0.
463pub const SDL_HINT_AUDIO_DUMMY_TIMESCALE: *const ::core::ffi::c_char =
464 c"SDL_AUDIO_DUMMY_TIMESCALE".as_ptr();
465
466/// A variable controlling the default audio format.
467///
468/// If the application doesn't specify the audio format when opening the
469/// device, this hint can be used to specify a default format that will be
470/// used.
471///
472/// The variable can be set to the following values:
473///
474/// - "U8": Unsigned 8-bit audio
475/// - "S8": Signed 8-bit audio
476/// - "S16LE": Signed 16-bit little-endian audio
477/// - "S16BE": Signed 16-bit big-endian audio
478/// - "S16": Signed 16-bit native-endian audio (default)
479/// - "S32LE": Signed 32-bit little-endian audio
480/// - "S32BE": Signed 32-bit big-endian audio
481/// - "S32": Signed 32-bit native-endian audio
482/// - "F32LE": Floating point little-endian audio
483/// - "F32BE": Floating point big-endian audio
484/// - "F32": Floating point native-endian audio
485///
486/// This hint should be set before an audio device is opened.
487///
488/// ## Availability
489/// This hint is available since SDL 3.2.0.
490pub const SDL_HINT_AUDIO_FORMAT: *const ::core::ffi::c_char = c"SDL_AUDIO_FORMAT".as_ptr();
491
492/// A variable controlling the default audio frequency.
493///
494/// If the application doesn't specify the audio frequency when opening the
495/// device, this hint can be used to specify a default frequency that will be
496/// used. This defaults to "44100".
497///
498/// This hint should be set before an audio device is opened.
499///
500/// ## Availability
501/// This hint is available since SDL 3.2.0.
502pub const SDL_HINT_AUDIO_FREQUENCY: *const ::core::ffi::c_char = c"SDL_AUDIO_FREQUENCY".as_ptr();
503
504/// A variable that causes SDL to not ignore audio "monitors".
505///
506/// This is currently only used by the PulseAudio driver.
507///
508/// By default, SDL ignores audio devices that aren't associated with physical
509/// hardware. Changing this hint to "1" will expose anything SDL sees that
510/// appears to be an audio source or sink. This will add "devices" to the list
511/// that the user probably doesn't want or need, but it can be useful in
512/// scenarios where you want to hook up SDL to some sort of virtual device,
513/// etc.
514///
515/// The variable can be set to the following values:
516///
517/// - "0": Audio monitor devices will be ignored. (default)
518/// - "1": Audio monitor devices will show up in the device list.
519///
520/// This hint should be set before SDL is initialized.
521///
522/// ## Availability
523/// This hint is available since SDL 3.2.0.
524pub const SDL_HINT_AUDIO_INCLUDE_MONITORS: *const ::core::ffi::c_char =
525 c"SDL_AUDIO_INCLUDE_MONITORS".as_ptr();
526
527/// A variable controlling whether SDL updates joystick state when getting
528/// input events.
529///
530/// The variable can be set to the following values:
531///
532/// - "0": You'll call [`SDL_UpdateJoysticks()`] manually.
533/// - "1": SDL will automatically call [`SDL_UpdateJoysticks()`]. (default)
534///
535/// This hint can be set anytime.
536///
537/// ## Availability
538/// This hint is available since SDL 3.2.0.
539pub const SDL_HINT_AUTO_UPDATE_JOYSTICKS: *const ::core::ffi::c_char =
540 c"SDL_AUTO_UPDATE_JOYSTICKS".as_ptr();
541
542/// A variable controlling whether SDL updates sensor state when getting input
543/// events.
544///
545/// The variable can be set to the following values:
546///
547/// - "0": You'll call [`SDL_UpdateSensors()`] manually.
548/// - "1": SDL will automatically call [`SDL_UpdateSensors()`]. (default)
549///
550/// This hint can be set anytime.
551///
552/// ## Availability
553/// This hint is available since SDL 3.2.0.
554pub const SDL_HINT_AUTO_UPDATE_SENSORS: *const ::core::ffi::c_char =
555 c"SDL_AUTO_UPDATE_SENSORS".as_ptr();
556
557/// Prevent SDL from using version 4 of the bitmap header when saving BMPs.
558///
559/// The bitmap header version 4 is required for proper alpha channel support
560/// and SDL will use it when required. Should this not be desired, this hint
561/// can force the use of the 40 byte header version which is supported
562/// everywhere.
563///
564/// The variable can be set to the following values:
565///
566/// - "0": Surfaces with a colorkey or an alpha channel are saved to a 32-bit
567/// BMP file with an alpha mask. SDL will use the bitmap header version 4 and
568/// set the alpha mask accordingly. (default)
569/// - "1": Surfaces with a colorkey or an alpha channel are saved to a 32-bit
570/// BMP file without an alpha mask. The alpha channel data will be in the
571/// file, but applications are going to ignore it.
572///
573/// This hint can be set anytime.
574///
575/// ## Availability
576/// This hint is available since SDL 3.2.0.
577pub const SDL_HINT_BMP_SAVE_LEGACY_FORMAT: *const ::core::ffi::c_char =
578 c"SDL_BMP_SAVE_LEGACY_FORMAT".as_ptr();
579
580/// A variable that decides what camera backend to use.
581///
582/// By default, SDL will try all available camera backends in a reasonable
583/// order until it finds one that can work, but this hint allows the app or
584/// user to force a specific target, such as "directshow" if, say, you are on
585/// Windows Media Foundations but want to try DirectShow instead.
586///
587/// The default value is unset, in which case SDL will try to figure out the
588/// best camera backend on your behalf. This hint needs to be set before
589/// [`SDL_Init()`] is called to be useful.
590///
591/// ## Availability
592/// This hint is available since SDL 3.2.0.
593pub const SDL_HINT_CAMERA_DRIVER: *const ::core::ffi::c_char = c"SDL_CAMERA_DRIVER".as_ptr();
594
595/// A variable that limits what CPU features are available.
596///
597/// By default, SDL marks all features the current CPU supports as available.
598/// This hint allows the enabled features to be limited to a subset.
599///
600/// When the hint is unset, or empty, SDL will enable all detected CPU
601/// features.
602///
603/// The variable can be set to a comma separated list containing the following
604/// items:
605///
606/// - "all"
607/// - "altivec"
608/// - "sse"
609/// - "sse2"
610/// - "sse3"
611/// - "sse41"
612/// - "sse42"
613/// - "avx"
614/// - "avx2"
615/// - "avx512f"
616/// - "arm-simd"
617/// - "neon"
618/// - "lsx"
619/// - "lasx"
620///
621/// The items can be prefixed by '+'/'-' to add/remove features.
622///
623/// ## Availability
624/// This hint is available since SDL 3.2.0.
625pub const SDL_HINT_CPU_FEATURE_MASK: *const ::core::ffi::c_char = c"SDL_CPU_FEATURE_MASK".as_ptr();
626
627/// A variable controlling whether DirectInput should be used for controllers.
628///
629/// The variable can be set to the following values:
630///
631/// - "0": Disable DirectInput detection.
632/// - "1": Enable DirectInput detection. (default)
633///
634/// This hint should be set before SDL is initialized.
635///
636/// ## Availability
637/// This hint is available since SDL 3.2.0.
638pub const SDL_HINT_JOYSTICK_DIRECTINPUT: *const ::core::ffi::c_char =
639 c"SDL_JOYSTICK_DIRECTINPUT".as_ptr();
640
641/// A variable that specifies a dialog backend to use.
642///
643/// By default, SDL will try all available dialog backends in a reasonable
644/// order until it finds one that can work, but this hint allows the app or
645/// user to force a specific target.
646///
647/// If the specified target does not exist or is not available, the
648/// dialog-related function calls will fail.
649///
650/// This hint currently only applies to platforms using the generic "Unix"
651/// dialog implementation, but may be extended to more platforms in the future.
652/// Note that some Unix and Unix-like platforms have their own implementation,
653/// such as macOS and Haiku.
654///
655/// The variable can be set to the following values:
656///
657/// - NULL: Select automatically (default, all platforms)
658/// - "portal": Use XDG Portals through DBus (Unix only)
659/// - "zenity": Use the Zenity program (Unix only)
660///
661/// More options may be added in the future.
662///
663/// This hint can be set anytime.
664///
665/// ## Availability
666/// This hint is available since SDL 3.2.0.
667pub const SDL_HINT_FILE_DIALOG_DRIVER: *const ::core::ffi::c_char =
668 c"SDL_FILE_DIALOG_DRIVER".as_ptr();
669
670/// Override for [`SDL_GetDisplayUsableBounds()`].
671///
672/// If set, this hint will override the expected results for
673/// [`SDL_GetDisplayUsableBounds()`] for display index 0. Generally you don't want
674/// to do this, but this allows an embedded system to request that some of the
675/// screen be reserved for other uses when paired with a well-behaved
676/// application.
677///
678/// The contents of this hint must be 4 comma-separated integers, the first is
679/// the bounds x, then y, width and height, in that order.
680///
681/// This hint can be set anytime.
682///
683/// ## Availability
684/// This hint is available since SDL 3.2.0.
685pub const SDL_HINT_DISPLAY_USABLE_BOUNDS: *const ::core::ffi::c_char =
686 c"SDL_DISPLAY_USABLE_BOUNDS".as_ptr();
687
688/// Set the level of checking for invalid parameters passed to SDL functions.
689///
690/// The variable can be set to the following values:
691///
692/// - "1": Enable fast parameter error checking, e.g. quick NULL checks, etc.
693/// - "2": Enable full parameter error checking, e.g. validating objects are
694/// the correct type, etc. (default)
695///
696/// This hint can be set anytime.
697///
698/// ## Availability
699/// This hint is available since SDL 3.4.0.
700pub const SDL_HINT_INVALID_PARAM_CHECKS: *const ::core::ffi::c_char =
701 c"SDL_INVALID_PARAM_CHECKS".as_ptr();
702
703/// Disable giving back control to the browser automatically when running with
704/// asyncify.
705///
706/// With -s ASYNCIFY, SDL calls emscripten_sleep during operations such as
707/// refreshing the screen or polling events.
708///
709/// This hint only applies to the emscripten platform.
710///
711/// The variable can be set to the following values:
712///
713/// - "0": Disable emscripten_sleep calls (if you give back browser control
714/// manually or use asyncify for other purposes).
715/// - "1": Enable emscripten_sleep calls. (default)
716///
717/// This hint can be set anytime.
718///
719/// ## Availability
720/// This hint is available since SDL 3.2.0.
721pub const SDL_HINT_EMSCRIPTEN_ASYNCIFY: *const ::core::ffi::c_char =
722 c"SDL_EMSCRIPTEN_ASYNCIFY".as_ptr();
723
724/// Specify the CSS selector used for the "default" window/canvas.
725///
726/// This hint only applies to the emscripten platform.
727///
728/// This hint should be set before creating a window.
729///
730/// ## Availability
731/// This hint is available since SDL 3.2.0.
732pub const SDL_HINT_EMSCRIPTEN_CANVAS_SELECTOR: *const ::core::ffi::c_char =
733 c"SDL_EMSCRIPTEN_CANVAS_SELECTOR".as_ptr();
734
735/// Override the binding element for keyboard inputs for Emscripten builds.
736///
737/// This hint only applies to the emscripten platform.
738///
739/// The variable can be one of:
740///
741/// - "#window": the javascript window object
742/// - "#document": the javascript document object
743/// - "#screen": the javascript window.screen object
744/// - "#canvas": the WebGL canvas element
745/// - "#none": Don't bind anything at all
746/// - any other string without a leading # sign applies to the element on the
747/// page with that ID.
748///
749/// This hint should be set before creating a window.
750///
751/// ## Availability
752/// This hint is available since SDL 3.2.0.
753pub const SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT: *const ::core::ffi::c_char =
754 c"SDL_EMSCRIPTEN_KEYBOARD_ELEMENT".as_ptr();
755
756/// A variable that controls whether the on-screen keyboard should be shown
757/// when text input is active.
758///
759/// The variable can be set to the following values:
760///
761/// - "auto": The on-screen keyboard will be shown if there is no physical
762/// keyboard attached. (default)
763/// - "0": Do not show the on-screen keyboard.
764/// - "1": Show the on-screen keyboard, if available.
765///
766/// This hint must be set before [`SDL_StartTextInput()`] is called
767///
768/// ## Availability
769/// This hint is available since SDL 3.2.0.
770pub const SDL_HINT_ENABLE_SCREEN_KEYBOARD: *const ::core::ffi::c_char =
771 c"SDL_ENABLE_SCREEN_KEYBOARD".as_ptr();
772
773/// A variable containing a list of evdev devices to use if udev is not
774/// available.
775///
776/// The list of devices is in the form:
777///
778/// deviceclass:path\[,deviceclass:path\[,...\]\]
779///
780/// where device class is an integer representing the SDL_UDEV_deviceclass and
781/// path is the full path to the event device.
782///
783/// This hint should be set before SDL is initialized.
784///
785/// ## Availability
786/// This hint is available since SDL 3.2.0.
787pub const SDL_HINT_EVDEV_DEVICES: *const ::core::ffi::c_char = c"SDL_EVDEV_DEVICES".as_ptr();
788
789/// A variable controlling verbosity of the logging of SDL events pushed onto
790/// the internal queue.
791///
792/// The variable can be set to the following values, from least to most
793/// verbose:
794///
795/// - "0": Don't log any events. (default)
796/// - "1": Log most events (other than the really spammy ones).
797/// - "2": Include mouse and finger motion events.
798///
799/// This is generally meant to be used to debug SDL itself, but can be useful
800/// for application developers that need better visibility into what is going
801/// on in the event queue. Logged events are sent through [`SDL_Log()`], which
802/// means by default they appear on stdout on most platforms or maybe
803/// OutputDebugString() on Windows, and can be funneled by the app with
804/// [`SDL_SetLogOutputFunction()`], etc.
805///
806/// This hint can be set anytime.
807///
808/// ## Availability
809/// This hint is available since SDL 3.2.0.
810pub const SDL_HINT_EVENT_LOGGING: *const ::core::ffi::c_char = c"SDL_EVENT_LOGGING".as_ptr();
811
812/// A variable controlling whether raising the window should be done more
813/// forcefully.
814///
815/// The variable can be set to the following values:
816///
817/// - "0": Honor the OS policy for raising windows. (default)
818/// - "1": Force the window to be raised, overriding any OS policy.
819///
820/// At present, this is only an issue under MS Windows, which makes it nearly
821/// impossible to programmatically move a window to the foreground, for
822/// "security" reasons. See <http://stackoverflow.com/a/34414846> for a
823/// discussion.
824///
825/// This hint can be set anytime.
826///
827/// ## Availability
828/// This hint is available since SDL 3.2.0.
829pub const SDL_HINT_FORCE_RAISEWINDOW: *const ::core::ffi::c_char =
830 c"SDL_FORCE_RAISEWINDOW".as_ptr();
831
832/// A variable controlling how 3D acceleration is used to accelerate the SDL
833/// screen surface.
834///
835/// SDL can try to accelerate the SDL screen surface by using streaming
836/// textures with a 3D rendering engine. This variable controls whether and how
837/// this is done.
838///
839/// The variable can be set to the following values:
840///
841/// - "0": Disable 3D acceleration
842/// - "1": Enable 3D acceleration, using the default renderer. (default)
843/// - "X": Enable 3D acceleration, using X where X is one of the valid
844/// rendering drivers. (e.g. "direct3d", "opengl", etc.)
845///
846/// This hint should be set before calling [`SDL_GetWindowSurface()`]
847///
848/// ## Availability
849/// This hint is available since SDL 3.2.0.
850pub const SDL_HINT_FRAMEBUFFER_ACCELERATION: *const ::core::ffi::c_char =
851 c"SDL_FRAMEBUFFER_ACCELERATION".as_ptr();
852
853/// A variable that lets you manually hint extra gamecontroller db entries.
854///
855/// The variable should be newline delimited rows of gamecontroller config
856/// data, see SDL_gamepad.h
857///
858/// You can update mappings after SDL is initialized with
859/// [`SDL_GetGamepadMappingForGUID()`] and [`SDL_AddGamepadMapping()`]
860///
861/// This hint should be set before SDL is initialized.
862///
863/// ## Availability
864/// This hint is available since SDL 3.2.0.
865pub const SDL_HINT_GAMECONTROLLERCONFIG: *const ::core::ffi::c_char =
866 c"SDL_GAMECONTROLLERCONFIG".as_ptr();
867
868/// A variable that lets you provide a file with extra gamecontroller db
869/// entries.
870///
871/// The file should contain lines of gamecontroller config data, see
872/// SDL_gamepad.h
873///
874/// You can update mappings after SDL is initialized with
875/// [`SDL_GetGamepadMappingForGUID()`] and [`SDL_AddGamepadMapping()`]
876///
877/// This hint should be set before SDL is initialized.
878///
879/// ## Availability
880/// This hint is available since SDL 3.2.0.
881pub const SDL_HINT_GAMECONTROLLERCONFIG_FILE: *const ::core::ffi::c_char =
882 c"SDL_GAMECONTROLLERCONFIG_FILE".as_ptr();
883
884/// A variable that overrides the automatic controller type detection.
885///
886/// The variable should be comma separated entries, in the form: VID/PID=type
887///
888/// The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd
889///
890/// This hint affects what low level protocol is used with the HIDAPI driver.
891///
892/// The variable can be set to the following values:
893///
894/// - "Xbox360"
895/// - "XboxOne"
896/// - "PS3"
897/// - "PS4"
898/// - "PS5"
899/// - "SwitchPro"
900///
901/// This hint should be set before SDL is initialized.
902///
903/// ## Availability
904/// This hint is available since SDL 3.2.0.
905pub const SDL_HINT_GAMECONTROLLERTYPE: *const ::core::ffi::c_char =
906 c"SDL_GAMECONTROLLERTYPE".as_ptr();
907
908/// A variable containing a list of devices to skip when scanning for game
909/// controllers.
910///
911/// The format of the string is a comma separated list of USB VID/PID pairs in
912/// hexadecimal form, e.g.
913///
914/// 0xAAAA/0xBBBB,0xCCCC/0xDDDD
915///
916/// The variable can also take the form of "@file", in which case the named
917/// file will be loaded and interpreted as the value of the variable.
918///
919/// This hint can be set anytime.
920///
921/// ## Availability
922/// This hint is available since SDL 3.2.0.
923pub const SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES: *const ::core::ffi::c_char =
924 c"SDL_GAMECONTROLLER_IGNORE_DEVICES".as_ptr();
925
926/// If set, all devices will be skipped when scanning for game controllers
927/// except for the ones listed in this variable.
928///
929/// The format of the string is a comma separated list of USB VID/PID pairs in
930/// hexadecimal form, e.g.
931///
932/// 0xAAAA/0xBBBB,0xCCCC/0xDDDD
933///
934/// The variable can also take the form of "@file", in which case the named
935/// file will be loaded and interpreted as the value of the variable.
936///
937/// This hint can be set anytime.
938///
939/// ## Availability
940/// This hint is available since SDL 3.2.0.
941pub const SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT: *const ::core::ffi::c_char =
942 c"SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT".as_ptr();
943
944/// A variable that controls whether the device's built-in accelerometer and
945/// gyro should be used as sensors for gamepads.
946///
947/// The variable can be set to the following values:
948///
949/// - "0": Sensor fusion is disabled
950/// - "1": Sensor fusion is enabled for all controllers that lack sensors
951///
952/// Or the variable can be a comma separated list of USB VID/PID pairs in
953/// hexadecimal form, e.g.
954///
955/// 0xAAAA/0xBBBB,0xCCCC/0xDDDD
956///
957/// The variable can also take the form of "@file", in which case the named
958/// file will be loaded and interpreted as the value of the variable.
959///
960/// This hint should be set before a gamepad is opened.
961///
962/// ## Availability
963/// This hint is available since SDL 3.2.0.
964pub const SDL_HINT_GAMECONTROLLER_SENSOR_FUSION: *const ::core::ffi::c_char =
965 c"SDL_GAMECONTROLLER_SENSOR_FUSION".as_ptr();
966
967/// This variable sets the default text of the TextInput window on GDK
968/// platforms.
969///
970/// This hint is available only if SDL_GDK_TEXTINPUT defined.
971///
972/// This hint should be set before calling [`SDL_StartTextInput()`]
973///
974/// ## Availability
975/// This hint is available since SDL 3.2.0.
976pub const SDL_HINT_GDK_TEXTINPUT_DEFAULT_TEXT: *const ::core::ffi::c_char =
977 c"SDL_GDK_TEXTINPUT_DEFAULT_TEXT".as_ptr();
978
979/// This variable sets the description of the TextInput window on GDK
980/// platforms.
981///
982/// This hint is available only if SDL_GDK_TEXTINPUT defined.
983///
984/// This hint should be set before calling [`SDL_StartTextInput()`]
985///
986/// ## Availability
987/// This hint is available since SDL 3.2.0.
988pub const SDL_HINT_GDK_TEXTINPUT_DESCRIPTION: *const ::core::ffi::c_char =
989 c"SDL_GDK_TEXTINPUT_DESCRIPTION".as_ptr();
990
991/// This variable sets the maximum input length of the TextInput window on GDK
992/// platforms.
993///
994/// The value must be a stringified integer, for example "10" to allow for up
995/// to 10 characters of text input.
996///
997/// This hint is available only if SDL_GDK_TEXTINPUT defined.
998///
999/// This hint should be set before calling [`SDL_StartTextInput()`]
1000///
1001/// ## Availability
1002/// This hint is available since SDL 3.2.0.
1003pub const SDL_HINT_GDK_TEXTINPUT_MAX_LENGTH: *const ::core::ffi::c_char =
1004 c"SDL_GDK_TEXTINPUT_MAX_LENGTH".as_ptr();
1005
1006/// This variable sets the input scope of the TextInput window on GDK
1007/// platforms.
1008///
1009/// Set this hint to change the XGameUiTextEntryInputScope value that will be
1010/// passed to the window creation function. The value must be a stringified
1011/// integer, for example "0" for XGameUiTextEntryInputScope::Default.
1012///
1013/// This hint is available only if SDL_GDK_TEXTINPUT defined.
1014///
1015/// This hint should be set before calling [`SDL_StartTextInput()`]
1016///
1017/// ## Availability
1018/// This hint is available since SDL 3.2.0.
1019pub const SDL_HINT_GDK_TEXTINPUT_SCOPE: *const ::core::ffi::c_char =
1020 c"SDL_GDK_TEXTINPUT_SCOPE".as_ptr();
1021
1022/// This variable sets the title of the TextInput window on GDK platforms.
1023///
1024/// This hint is available only if SDL_GDK_TEXTINPUT defined.
1025///
1026/// This hint should be set before calling [`SDL_StartTextInput()`]
1027///
1028/// ## Availability
1029/// This hint is available since SDL 3.2.0.
1030pub const SDL_HINT_GDK_TEXTINPUT_TITLE: *const ::core::ffi::c_char =
1031 c"SDL_GDK_TEXTINPUT_TITLE".as_ptr();
1032
1033/// A variable to control whether HIDAPI uses libusb for device access.
1034///
1035/// By default libusb will only be used for a few devices that require direct
1036/// USB access, and this can be controlled with
1037/// [`SDL_HINT_HIDAPI_LIBUSB_WHITELIST`].
1038///
1039/// The variable can be set to the following values:
1040///
1041/// - "0": HIDAPI will not use libusb for device access.
1042/// - "1": HIDAPI will use libusb for device access if available. (default)
1043///
1044/// This hint should be set before SDL is initialized.
1045///
1046/// ## Availability
1047/// This hint is available since SDL 3.2.0.
1048pub const SDL_HINT_HIDAPI_LIBUSB: *const ::core::ffi::c_char = c"SDL_HIDAPI_LIBUSB".as_ptr();
1049
1050/// A variable to control whether HIDAPI uses libusb for GameCube adapters.
1051///
1052/// The variable can be set to the following values:
1053///
1054/// - "0": HIDAPI will not use libusb for GameCube adapters.
1055/// - "1": HIDAPI will use libusb for GameCube adapters if available. (default)
1056///
1057/// This hint should be set before SDL is initialized.
1058///
1059/// ## Availability
1060/// This hint is available since SDL 3.4.0.
1061pub const SDL_HINT_HIDAPI_LIBUSB_GAMECUBE: *const ::core::ffi::c_char =
1062 c"SDL_HIDAPI_LIBUSB_GAMECUBE".as_ptr();
1063
1064/// A variable to control whether HIDAPI uses libusb only for whitelisted
1065/// devices.
1066///
1067/// By default libusb will only be used for a few devices that require direct
1068/// USB access.
1069///
1070/// The variable can be set to the following values:
1071///
1072/// - "0": HIDAPI will use libusb for all device access.
1073/// - "1": HIDAPI will use libusb only for whitelisted devices. (default)
1074///
1075/// This hint should be set before SDL is initialized.
1076///
1077/// ## Availability
1078/// This hint is available since SDL 3.2.0.
1079pub const SDL_HINT_HIDAPI_LIBUSB_WHITELIST: *const ::core::ffi::c_char =
1080 c"SDL_HIDAPI_LIBUSB_WHITELIST".as_ptr();
1081
1082/// A variable to control whether HIDAPI uses udev for device detection.
1083///
1084/// The variable can be set to the following values:
1085///
1086/// - "0": HIDAPI will poll for device changes.
1087/// - "1": HIDAPI will use udev for device detection. (default)
1088///
1089/// This hint should be set before SDL is initialized.
1090///
1091/// ## Availability
1092/// This hint is available since SDL 3.2.0.
1093pub const SDL_HINT_HIDAPI_UDEV: *const ::core::ffi::c_char = c"SDL_HIDAPI_UDEV".as_ptr();
1094
1095/// A variable that specifies a GPU backend to use.
1096///
1097/// By default, SDL will try all available GPU backends in a reasonable order
1098/// until it finds one that can work, but this hint allows the app or user to
1099/// force a specific target, such as "direct3d12" if, say, your hardware
1100/// supports Vulkan but you want to try using D3D12 instead.
1101///
1102/// This hint should be set before any GPU functions are called.
1103///
1104/// ## Availability
1105/// This hint is available since SDL 3.2.0.
1106pub const SDL_HINT_GPU_DRIVER: *const ::core::ffi::c_char = c"SDL_GPU_DRIVER".as_ptr();
1107
1108/// A variable to control whether [`SDL_hid_enumerate()`] enumerates all HID
1109/// devices or only controllers.
1110///
1111/// The variable can be set to the following values:
1112///
1113/// - "0": [`SDL_hid_enumerate()`] will enumerate all HID devices.
1114/// - "1": [`SDL_hid_enumerate()`] will only enumerate controllers. (default)
1115///
1116/// By default SDL will only enumerate controllers, to reduce risk of hanging
1117/// or crashing on devices with bad drivers and avoiding macOS keyboard capture
1118/// permission prompts.
1119///
1120/// This hint can be set anytime.
1121///
1122/// ## Availability
1123/// This hint is available since SDL 3.2.0.
1124pub const SDL_HINT_HIDAPI_ENUMERATE_ONLY_CONTROLLERS: *const ::core::ffi::c_char =
1125 c"SDL_HIDAPI_ENUMERATE_ONLY_CONTROLLERS".as_ptr();
1126
1127/// A variable containing a list of devices to ignore in [`SDL_hid_enumerate()`].
1128///
1129/// The format of the string is a comma separated list of USB VID/PID pairs in
1130/// hexadecimal form, e.g.
1131///
1132/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1133///
1134/// For example, to ignore the Shanwan DS3 controller and any Valve controller,
1135/// you might use the string "0x2563/0x0523,0x28de/0x0000"
1136///
1137/// This hint can be set anytime.
1138///
1139/// ## Availability
1140/// This hint is available since SDL 3.2.0.
1141pub const SDL_HINT_HIDAPI_IGNORE_DEVICES: *const ::core::ffi::c_char =
1142 c"SDL_HIDAPI_IGNORE_DEVICES".as_ptr();
1143
1144/// A variable describing what IME UI elements the application can display.
1145///
1146/// By default IME UI is handled using native components by the OS where
1147/// possible, however this can interfere with or not be visible when exclusive
1148/// fullscreen mode is used.
1149///
1150/// The variable can be set to a comma separated list containing the following
1151/// items:
1152///
1153/// - "none" or "0": The application can't render any IME elements, and native
1154/// UI should be used. (default)
1155/// - "composition": The application handles [`SDL_EVENT_TEXT_EDITING`] events and
1156/// can render the composition text.
1157/// - "candidates": The application handles [`SDL_EVENT_TEXT_EDITING_CANDIDATES`]
1158/// and can render the candidate list.
1159///
1160/// This hint should be set before SDL is initialized.
1161///
1162/// ## Availability
1163/// This hint is available since SDL 3.2.0.
1164pub const SDL_HINT_IME_IMPLEMENTED_UI: *const ::core::ffi::c_char =
1165 c"SDL_IME_IMPLEMENTED_UI".as_ptr();
1166
1167/// A variable controlling whether the home indicator bar on iPhone X and later
1168/// should be hidden.
1169///
1170/// The variable can be set to the following values:
1171///
1172/// - "0": The indicator bar is not hidden. (default for windowed applications)
1173/// - "1": The indicator bar is hidden and is shown when the screen is touched
1174/// (useful for movie playback applications).
1175/// - "2": The indicator bar is dim and the first swipe makes it visible and
1176/// the second swipe performs the "home" action. (default for fullscreen
1177/// applications)
1178///
1179/// This hint can be set anytime.
1180///
1181/// ## Availability
1182/// This hint is available since SDL 3.2.0.
1183pub const SDL_HINT_IOS_HIDE_HOME_INDICATOR: *const ::core::ffi::c_char =
1184 c"SDL_IOS_HIDE_HOME_INDICATOR".as_ptr();
1185
1186/// A variable that lets you enable joystick (and gamecontroller) events even
1187/// when your app is in the background.
1188///
1189/// The variable can be set to the following values:
1190///
1191/// - "0": Disable joystick & gamecontroller input events when the application
1192/// is in the background. (default)
1193/// - "1": Enable joystick & gamecontroller input events when the application
1194/// is in the background.
1195///
1196/// This hint can be set anytime.
1197///
1198/// ## Availability
1199/// This hint is available since SDL 3.2.0.
1200pub const SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS: *const ::core::ffi::c_char =
1201 c"SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS".as_ptr();
1202
1203/// A variable containing a list of arcade stick style controllers.
1204///
1205/// The format of the string is a comma separated list of USB VID/PID pairs in
1206/// hexadecimal form, e.g.
1207///
1208/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1209///
1210/// The variable can also take the form of "@file", in which case the named
1211/// file will be loaded and interpreted as the value of the variable.
1212///
1213/// This hint can be set anytime.
1214///
1215/// ## Availability
1216/// This hint is available since SDL 3.2.0.
1217pub const SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES: *const ::core::ffi::c_char =
1218 c"SDL_JOYSTICK_ARCADESTICK_DEVICES".as_ptr();
1219
1220/// A variable containing a list of devices that are not arcade stick style
1221/// controllers.
1222///
1223/// This will override [`SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES`] and the built in
1224/// device list.
1225///
1226/// The format of the string is a comma separated list of USB VID/PID pairs in
1227/// hexadecimal form, e.g.
1228///
1229/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1230///
1231/// The variable can also take the form of "@file", in which case the named
1232/// file will be loaded and interpreted as the value of the variable.
1233///
1234/// This hint can be set anytime.
1235///
1236/// ## Availability
1237/// This hint is available since SDL 3.2.0.
1238pub const SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED: *const ::core::ffi::c_char =
1239 c"SDL_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED".as_ptr();
1240
1241/// A variable containing a list of devices that should not be considered
1242/// joysticks.
1243///
1244/// The format of the string is a comma separated list of USB VID/PID pairs in
1245/// hexadecimal form, e.g.
1246///
1247/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1248///
1249/// The variable can also take the form of "@file", in which case the named
1250/// file will be loaded and interpreted as the value of the variable.
1251///
1252/// This hint can be set anytime.
1253///
1254/// ## Availability
1255/// This hint is available since SDL 3.2.0.
1256pub const SDL_HINT_JOYSTICK_BLACKLIST_DEVICES: *const ::core::ffi::c_char =
1257 c"SDL_JOYSTICK_BLACKLIST_DEVICES".as_ptr();
1258
1259/// A variable containing a list of devices that should be considered
1260/// joysticks.
1261///
1262/// This will override [`SDL_HINT_JOYSTICK_BLACKLIST_DEVICES`] and the built in
1263/// device list.
1264///
1265/// The format of the string is a comma separated list of USB VID/PID pairs in
1266/// hexadecimal form, e.g.
1267///
1268/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1269///
1270/// The variable can also take the form of "@file", in which case the named
1271/// file will be loaded and interpreted as the value of the variable.
1272///
1273/// This hint can be set anytime.
1274///
1275/// ## Availability
1276/// This hint is available since SDL 3.2.0.
1277pub const SDL_HINT_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED: *const ::core::ffi::c_char =
1278 c"SDL_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED".as_ptr();
1279
1280/// A variable containing a comma separated list of devices to open as
1281/// joysticks.
1282///
1283/// This variable is currently only used by the Linux joystick driver.
1284///
1285/// ## Availability
1286/// This hint is available since SDL 3.2.0.
1287pub const SDL_HINT_JOYSTICK_DEVICE: *const ::core::ffi::c_char = c"SDL_JOYSTICK_DEVICE".as_ptr();
1288
1289/// A variable controlling whether enhanced reports should be used for
1290/// controllers when using the HIDAPI driver.
1291///
1292/// Enhanced reports allow rumble and effects on Bluetooth PlayStation
1293/// controllers and gyro on Nintendo Switch controllers, but break Windows
1294/// DirectInput for other applications that don't use SDL.
1295///
1296/// Once enhanced reports are enabled, they can't be disabled on PlayStation
1297/// controllers without power cycling the controller.
1298///
1299/// The variable can be set to the following values:
1300///
1301/// - "0": enhanced reports are not enabled.
1302/// - "1": enhanced reports are enabled. (default)
1303/// - "auto": enhanced features are advertised to the application, but SDL
1304/// doesn't change the controller report mode unless the application uses
1305/// them.
1306///
1307/// This hint can be enabled anytime.
1308///
1309/// ## Availability
1310/// This hint is available since SDL 3.2.0.
1311pub const SDL_HINT_JOYSTICK_ENHANCED_REPORTS: *const ::core::ffi::c_char =
1312 c"SDL_JOYSTICK_ENHANCED_REPORTS".as_ptr();
1313
1314/// A variable containing a list of flightstick style controllers.
1315///
1316/// The format of the string is a comma separated list of USB VID/PID pairs in
1317/// hexadecimal form, e.g.
1318///
1319/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1320///
1321/// The variable can also take the form of @file, in which case the named file
1322/// will be loaded and interpreted as the value of the variable.
1323///
1324/// This hint can be set anytime.
1325///
1326/// ## Availability
1327/// This hint is available since SDL 3.2.0.
1328pub const SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES: *const ::core::ffi::c_char =
1329 c"SDL_JOYSTICK_FLIGHTSTICK_DEVICES".as_ptr();
1330
1331/// A variable containing a list of devices that are not flightstick style
1332/// controllers.
1333///
1334/// This will override [`SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES`] and the built in
1335/// device list.
1336///
1337/// The format of the string is a comma separated list of USB VID/PID pairs in
1338/// hexadecimal form, e.g.
1339///
1340/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1341///
1342/// The variable can also take the form of "@file", in which case the named
1343/// file will be loaded and interpreted as the value of the variable.
1344///
1345/// This hint can be set anytime.
1346///
1347/// ## Availability
1348/// This hint is available since SDL 3.2.0.
1349pub const SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED: *const ::core::ffi::c_char =
1350 c"SDL_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED".as_ptr();
1351
1352/// A variable controlling whether GameInput should be used for controller
1353/// handling on Windows.
1354///
1355/// The variable can be set to the following values:
1356///
1357/// - "0": GameInput is not used.
1358/// - "1": GameInput is used.
1359///
1360/// The default is "1" on GDK platforms, and "0" otherwise.
1361///
1362/// This hint should be set before SDL is initialized.
1363///
1364/// ## Availability
1365/// This hint is available since SDL 3.2.0.
1366pub const SDL_HINT_JOYSTICK_GAMEINPUT: *const ::core::ffi::c_char =
1367 c"SDL_JOYSTICK_GAMEINPUT".as_ptr();
1368
1369/// A variable controlling whether GameInput should be used for handling
1370/// GIP devices that require raw report processing, but aren't supported
1371/// by HIDRAW, such as Xbox One Guitars.
1372///
1373/// Note that this is only supported with GameInput 3 or newer.
1374///
1375/// The variable can be set to the following values:
1376///
1377/// - "0": GameInput is not used to handle raw GIP devices.
1378/// - "1": GameInput is used.
1379///
1380/// The default is "1" when using GameInput 3 or newer, and is "0" otherwise.
1381///
1382/// This hint should be set before SDL is initialized.
1383///
1384/// ## Availability
1385/// This hint is available since SDL 3.4.4.
1386pub const SDL_HINT_JOYSTICK_GAMEINPUT_RAW: *const ::core::ffi::c_char =
1387 c"SDL_JOYSTICK_GAMEINPUT_RAW".as_ptr();
1388
1389/// A variable containing a list of devices known to have a GameCube form
1390/// factor.
1391///
1392/// The format of the string is a comma separated list of USB VID/PID pairs in
1393/// hexadecimal form, e.g.
1394///
1395/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1396///
1397/// The variable can also take the form of "@file", in which case the named
1398/// file will be loaded and interpreted as the value of the variable.
1399///
1400/// This hint can be set anytime.
1401///
1402/// ## Availability
1403/// This hint is available since SDL 3.2.0.
1404pub const SDL_HINT_JOYSTICK_GAMECUBE_DEVICES: *const ::core::ffi::c_char =
1405 c"SDL_JOYSTICK_GAMECUBE_DEVICES".as_ptr();
1406
1407/// A variable containing a list of devices known not to have a GameCube form
1408/// factor.
1409///
1410/// This will override [`SDL_HINT_JOYSTICK_GAMECUBE_DEVICES`] and the built in
1411/// device list.
1412///
1413/// The format of the string is a comma separated list of USB VID/PID pairs in
1414/// hexadecimal form, e.g.
1415///
1416/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
1417///
1418/// The variable can also take the form of "@file", in which case the named
1419/// file will be loaded and interpreted as the value of the variable.
1420///
1421/// This hint can be set anytime.
1422///
1423/// ## Availability
1424/// This hint is available since SDL 3.2.0.
1425pub const SDL_HINT_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED: *const ::core::ffi::c_char =
1426 c"SDL_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED".as_ptr();
1427
1428/// A variable controlling whether the HIDAPI joystick drivers should be used.
1429///
1430/// The variable can be set to the following values:
1431///
1432/// - "0": HIDAPI drivers are not used.
1433/// - "1": HIDAPI drivers are used. (default)
1434///
1435/// This variable is the default for all drivers, but can be overridden by the
1436/// hints for specific drivers below.
1437///
1438/// This hint should be set before initializing joysticks and gamepads.
1439///
1440/// ## Availability
1441/// This hint is available since SDL 3.2.0.
1442pub const SDL_HINT_JOYSTICK_HIDAPI: *const ::core::ffi::c_char = c"SDL_JOYSTICK_HIDAPI".as_ptr();
1443
1444/// A variable controlling whether Nintendo Switch Joy-Con controllers will be
1445/// combined into a single Pro-like controller when using the HIDAPI driver.
1446///
1447/// The variable can be set to the following values:
1448///
1449/// - "0": Left and right Joy-Con controllers will not be combined and each
1450/// will be a mini-gamepad.
1451/// - "1": Left and right Joy-Con controllers will be combined into a single
1452/// controller. (default)
1453///
1454/// This hint should be set before initializing joysticks and gamepads.
1455///
1456/// ## Availability
1457/// This hint is available since SDL 3.2.0.
1458pub const SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS: *const ::core::ffi::c_char =
1459 c"SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS".as_ptr();
1460
1461/// A variable controlling whether the HIDAPI driver for Nintendo GameCube
1462/// controllers should be used.
1463///
1464/// The variable can be set to the following values:
1465///
1466/// - "0": HIDAPI driver is not used.
1467/// - "1": HIDAPI driver is used.
1468///
1469/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`]
1470///
1471/// This hint should be set before initializing joysticks and gamepads.
1472///
1473/// ## Availability
1474/// This hint is available since SDL 3.2.0.
1475pub const SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE: *const ::core::ffi::c_char =
1476 c"SDL_JOYSTICK_HIDAPI_GAMECUBE".as_ptr();
1477
1478/// A variable controlling whether rumble is used to implement the GameCube
1479/// controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2).
1480///
1481/// This is useful for applications that need full compatibility for things
1482/// like ADSR envelopes. - Stop is implemented by setting low_frequency_rumble
1483/// to 0 and high_frequency_rumble >0 - Rumble is both at any arbitrary value -
1484/// StopHard is implemented by setting both low_frequency_rumble and
1485/// high_frequency_rumble to 0
1486///
1487/// The variable can be set to the following values:
1488///
1489/// - "0": Normal rumble behavior is behavior is used. (default)
1490/// - "1": Proper GameCube controller rumble behavior is used.
1491///
1492/// This hint can be set anytime.
1493///
1494/// ## Availability
1495/// This hint is available since SDL 3.2.0.
1496pub const SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE_RUMBLE_BRAKE: *const ::core::ffi::c_char =
1497 c"SDL_JOYSTICK_HIDAPI_GAMECUBE_RUMBLE_BRAKE".as_ptr();
1498
1499/// A variable controlling whether the HIDAPI driver for Nintendo Switch
1500/// Joy-Cons should be used.
1501///
1502/// The variable can be set to the following values:
1503///
1504/// - "0": HIDAPI driver is not used.
1505/// - "1": HIDAPI driver is used.
1506///
1507/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1508///
1509/// This hint should be set before initializing joysticks and gamepads.
1510///
1511/// ## Availability
1512/// This hint is available since SDL 3.2.0.
1513pub const SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS: *const ::core::ffi::c_char =
1514 c"SDL_JOYSTICK_HIDAPI_JOY_CONS".as_ptr();
1515
1516/// A variable controlling whether the Home button LED should be turned on when
1517/// a Nintendo Switch Joy-Con controller is opened.
1518///
1519/// The variable can be set to the following values:
1520///
1521/// - "0": home button LED is turned off
1522/// - "1": home button LED is turned on
1523///
1524/// By default the Home button LED state is not changed. This hint can also be
1525/// set to a floating point value between 0.0 and 1.0 which controls the
1526/// brightness of the Home button LED.
1527///
1528/// This hint can be set anytime.
1529///
1530/// ## Availability
1531/// This hint is available since SDL 3.2.0.
1532pub const SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED: *const ::core::ffi::c_char =
1533 c"SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED".as_ptr();
1534
1535/// A variable controlling whether the HIDAPI driver for Amazon Luna
1536/// controllers connected via Bluetooth should be used.
1537///
1538/// The variable can be set to the following values:
1539///
1540/// - "0": HIDAPI driver is not used.
1541/// - "1": HIDAPI driver is used.
1542///
1543/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1544///
1545/// This hint should be set before initializing joysticks and gamepads.
1546///
1547/// ## Availability
1548/// This hint is available since SDL 3.2.0.
1549pub const SDL_HINT_JOYSTICK_HIDAPI_LUNA: *const ::core::ffi::c_char =
1550 c"SDL_JOYSTICK_HIDAPI_LUNA".as_ptr();
1551
1552/// A variable controlling whether the HIDAPI driver for Nintendo Online
1553/// classic controllers should be used.
1554///
1555/// The variable can be set to the following values:
1556///
1557/// - "0": HIDAPI driver is not used.
1558/// - "1": HIDAPI driver is used.
1559///
1560/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1561///
1562/// This hint should be set before initializing joysticks and gamepads.
1563///
1564/// ## Availability
1565/// This hint is available since SDL 3.2.0.
1566pub const SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC: *const ::core::ffi::c_char =
1567 c"SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC".as_ptr();
1568
1569/// A variable controlling whether the HIDAPI driver for PS3 controllers should
1570/// be used.
1571///
1572/// The variable can be set to the following values:
1573///
1574/// - "0": HIDAPI driver is not used.
1575/// - "1": HIDAPI driver is used.
1576///
1577/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`] on macOS, and "0" on
1578/// other platforms.
1579///
1580/// For official Sony driver (sixaxis.sys) use
1581/// [`SDL_HINT_JOYSTICK_HIDAPI_PS3_SIXAXIS_DRIVER`]. See
1582/// <https://github.com/ViGEm/DsHidMini> for an alternative driver on Windows.
1583///
1584/// This hint should be set before initializing joysticks and gamepads.
1585///
1586/// ## Availability
1587/// This hint is available since SDL 3.2.0.
1588pub const SDL_HINT_JOYSTICK_HIDAPI_PS3: *const ::core::ffi::c_char =
1589 c"SDL_JOYSTICK_HIDAPI_PS3".as_ptr();
1590
1591/// A variable controlling whether the Sony driver (sixaxis.sys) for PS3
1592/// controllers (Sixaxis/DualShock 3) should be used.
1593///
1594/// The variable can be set to the following values:
1595///
1596/// - "0": Sony driver (sixaxis.sys) is not used.
1597/// - "1": Sony driver (sixaxis.sys) is used.
1598///
1599/// The default value is 0.
1600///
1601/// This hint should be set before initializing joysticks and gamepads.
1602///
1603/// ## Availability
1604/// This hint is available since SDL 3.2.0.
1605pub const SDL_HINT_JOYSTICK_HIDAPI_PS3_SIXAXIS_DRIVER: *const ::core::ffi::c_char =
1606 c"SDL_JOYSTICK_HIDAPI_PS3_SIXAXIS_DRIVER".as_ptr();
1607
1608/// A variable controlling whether the HIDAPI driver for PS4 controllers should
1609/// be used.
1610///
1611/// The variable can be set to the following values:
1612///
1613/// - "0": HIDAPI driver is not used.
1614/// - "1": HIDAPI driver is used.
1615///
1616/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1617///
1618/// This hint should be set before initializing joysticks and gamepads.
1619///
1620/// ## Availability
1621/// This hint is available since SDL 3.2.0.
1622pub const SDL_HINT_JOYSTICK_HIDAPI_PS4: *const ::core::ffi::c_char =
1623 c"SDL_JOYSTICK_HIDAPI_PS4".as_ptr();
1624
1625/// A variable controlling the update rate of the PS4 controller over Bluetooth
1626/// when using the HIDAPI driver.
1627///
1628/// This defaults to 4 ms, to match the behavior over USB, and to be more
1629/// friendly to other Bluetooth devices and older Bluetooth hardware on the
1630/// computer. It can be set to "1" (1000Hz), "2" (500Hz) and "4" (250Hz)
1631///
1632/// This hint can be set anytime, but only takes effect when extended input
1633/// reports are enabled.
1634///
1635/// ## Availability
1636/// This hint is available since SDL 3.2.0.
1637pub const SDL_HINT_JOYSTICK_HIDAPI_PS4_REPORT_INTERVAL: *const ::core::ffi::c_char =
1638 c"SDL_JOYSTICK_HIDAPI_PS4_REPORT_INTERVAL".as_ptr();
1639
1640/// A variable controlling whether the HIDAPI driver for PS5 controllers should
1641/// be used.
1642///
1643/// The variable can be set to the following values:
1644///
1645/// - "0": HIDAPI driver is not used.
1646/// - "1": HIDAPI driver is used.
1647///
1648/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1649///
1650/// This hint should be set before initializing joysticks and gamepads.
1651///
1652/// ## Availability
1653/// This hint is available since SDL 3.2.0.
1654pub const SDL_HINT_JOYSTICK_HIDAPI_PS5: *const ::core::ffi::c_char =
1655 c"SDL_JOYSTICK_HIDAPI_PS5".as_ptr();
1656
1657/// A variable controlling whether the player LEDs should be lit to indicate
1658/// which player is associated with a PS5 controller.
1659///
1660/// The variable can be set to the following values:
1661///
1662/// - "0": player LEDs are not enabled.
1663/// - "1": player LEDs are enabled. (default)
1664///
1665/// ## Availability
1666/// This hint is available since SDL 3.2.0.
1667pub const SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED: *const ::core::ffi::c_char =
1668 c"SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED".as_ptr();
1669
1670/// A variable controlling whether the HIDAPI driver for NVIDIA SHIELD
1671/// controllers should be used.
1672///
1673/// The variable can be set to the following values:
1674///
1675/// - "0": HIDAPI driver is not used.
1676/// - "1": HIDAPI driver is used.
1677///
1678/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1679///
1680/// This hint should be set before initializing joysticks and gamepads.
1681///
1682/// ## Availability
1683/// This hint is available since SDL 3.2.0.
1684pub const SDL_HINT_JOYSTICK_HIDAPI_SHIELD: *const ::core::ffi::c_char =
1685 c"SDL_JOYSTICK_HIDAPI_SHIELD".as_ptr();
1686
1687/// A variable controlling whether the HIDAPI driver for Google Stadia
1688/// controllers should be used.
1689///
1690/// The variable can be set to the following values:
1691///
1692/// - "0": HIDAPI driver is not used.
1693/// - "1": HIDAPI driver is used.
1694///
1695/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1696///
1697/// ## Availability
1698/// This hint is available since SDL 3.2.0.
1699pub const SDL_HINT_JOYSTICK_HIDAPI_STADIA: *const ::core::ffi::c_char =
1700 c"SDL_JOYSTICK_HIDAPI_STADIA".as_ptr();
1701
1702/// A variable controlling whether the HIDAPI driver for Bluetooth Steam
1703/// Controllers should be used.
1704///
1705/// The variable can be set to the following values:
1706///
1707/// - "0": HIDAPI driver is not used. (default)
1708/// - "1": HIDAPI driver is used for Steam Controllers, which requires
1709/// Bluetooth access and may prompt the user for permission on iOS and
1710/// Android.
1711///
1712/// This hint should be set before initializing joysticks and gamepads.
1713///
1714/// ## Availability
1715/// This hint is available since SDL 3.2.0.
1716pub const SDL_HINT_JOYSTICK_HIDAPI_STEAM: *const ::core::ffi::c_char =
1717 c"SDL_JOYSTICK_HIDAPI_STEAM".as_ptr();
1718
1719/// A variable controlling whether the Steam button LED should be turned on
1720/// when a Steam controller is opened.
1721///
1722/// The variable can be set to the following values:
1723///
1724/// - "0": Steam button LED is turned off.
1725/// - "1": Steam button LED is turned on.
1726///
1727/// By default the Steam button LED state is not changed. This hint can also be
1728/// set to a floating point value between 0.0 and 1.0 which controls the
1729/// brightness of the Steam button LED.
1730///
1731/// This hint can be set anytime.
1732///
1733/// ## Availability
1734/// This hint is available since SDL 3.2.0.
1735pub const SDL_HINT_JOYSTICK_HIDAPI_STEAM_HOME_LED: *const ::core::ffi::c_char =
1736 c"SDL_JOYSTICK_HIDAPI_STEAM_HOME_LED".as_ptr();
1737
1738/// A variable controlling whether the HIDAPI driver for the Steam Deck builtin
1739/// controller should be used.
1740///
1741/// The variable can be set to the following values:
1742///
1743/// - "0": HIDAPI driver is not used.
1744/// - "1": HIDAPI driver is used.
1745///
1746/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1747///
1748/// This hint should be set before initializing joysticks and gamepads.
1749///
1750/// ## Availability
1751/// This hint is available since SDL 3.2.0.
1752pub const SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK: *const ::core::ffi::c_char =
1753 c"SDL_JOYSTICK_HIDAPI_STEAMDECK".as_ptr();
1754
1755/// A variable controlling whether the HIDAPI driver for HORI licensed Steam
1756/// controllers should be used.
1757///
1758/// The variable can be set to the following values:
1759///
1760/// - "0": HIDAPI driver is not used.
1761/// - "1": HIDAPI driver is used.
1762///
1763/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1764///
1765/// This hint should be set before initializing joysticks and gamepads.
1766///
1767/// ## Availability
1768/// This hint is available since SDL 3.2.0.
1769pub const SDL_HINT_JOYSTICK_HIDAPI_STEAM_HORI: *const ::core::ffi::c_char =
1770 c"SDL_JOYSTICK_HIDAPI_STEAM_HORI".as_ptr();
1771
1772/// A variable controlling whether the HIDAPI driver for some Logitech wheels
1773/// should be used.
1774///
1775/// The variable can be set to the following values:
1776///
1777/// - "0": HIDAPI driver is not used.
1778/// - "1": HIDAPI driver is used.
1779///
1780/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1781///
1782/// This hint should be set before initializing joysticks and gamepads.
1783///
1784/// ## Availability
1785/// This hint is available since SDL 3.4.0.
1786pub const SDL_HINT_JOYSTICK_HIDAPI_LG4FF: *const ::core::ffi::c_char =
1787 c"SDL_JOYSTICK_HIDAPI_LG4FF".as_ptr();
1788
1789/// A variable controlling whether the HIDAPI driver for 8BitDo controllers
1790/// should be used.
1791///
1792/// The variable can be set to the following values:
1793///
1794/// - "0": HIDAPI driver is not used.
1795/// - "1": HIDAPI driver is used.
1796///
1797/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1798///
1799/// This hint should be set before initializing joysticks and gamepads.
1800///
1801/// ## Availability
1802/// This hint is available since SDL 3.4.0.
1803pub const SDL_HINT_JOYSTICK_HIDAPI_8BITDO: *const ::core::ffi::c_char =
1804 c"SDL_JOYSTICK_HIDAPI_8BITDO".as_ptr();
1805
1806/// A variable controlling whether the HIDAPI driver for SInput controllers
1807/// should be used.
1808///
1809/// More info - <https://github.com/HandHeldLegend/SInput-HID>
1810///
1811/// The variable can be set to the following values:
1812///
1813/// - "0": HIDAPI driver is not used.
1814/// - "1": HIDAPI driver is used.
1815///
1816/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1817///
1818/// This hint should be set before initializing joysticks and gamepads.
1819///
1820/// ## Availability
1821/// This hint is available since SDL 3.4.0.
1822pub const SDL_HINT_JOYSTICK_HIDAPI_SINPUT: *const ::core::ffi::c_char =
1823 c"SDL_JOYSTICK_HIDAPI_SINPUT".as_ptr();
1824
1825/// A variable controlling whether the HIDAPI driver for ZUIKI controllers
1826/// should be used.
1827///
1828/// The variable can be set to the following values:
1829///
1830/// - "0": HIDAPI driver is not used.
1831/// - "1": HIDAPI driver is used.
1832///
1833/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1834///
1835/// This hint should be set before initializing joysticks and gamepads.
1836///
1837/// ## Availability
1838/// This hint is available since SDL 3.4.0.
1839pub const SDL_HINT_JOYSTICK_HIDAPI_ZUIKI: *const ::core::ffi::c_char =
1840 c"SDL_JOYSTICK_HIDAPI_ZUIKI".as_ptr();
1841
1842/// A variable controlling whether the HIDAPI driver for Flydigi controllers
1843/// should be used.
1844///
1845/// The variable can be set to the following values:
1846///
1847/// - "0": HIDAPI driver is not used.
1848/// - "1": HIDAPI driver is used.
1849///
1850/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1851///
1852/// This hint should be set before initializing joysticks and gamepads.
1853///
1854/// ## Availability
1855/// This hint is available since SDL 3.4.0.
1856pub const SDL_HINT_JOYSTICK_HIDAPI_FLYDIGI: *const ::core::ffi::c_char =
1857 c"SDL_JOYSTICK_HIDAPI_FLYDIGI".as_ptr();
1858
1859/// A variable controlling whether the HIDAPI driver for Nintendo Switch
1860/// controllers should be used.
1861///
1862/// The variable can be set to the following values:
1863///
1864/// - "0": HIDAPI driver is not used.
1865/// - "1": HIDAPI driver is used.
1866///
1867/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1868///
1869/// This hint should be set before initializing joysticks and gamepads.
1870///
1871/// ## Availability
1872/// This hint is available since SDL 3.2.0.
1873pub const SDL_HINT_JOYSTICK_HIDAPI_SWITCH: *const ::core::ffi::c_char =
1874 c"SDL_JOYSTICK_HIDAPI_SWITCH".as_ptr();
1875
1876/// A variable controlling whether the Home button LED should be turned on when
1877/// a Nintendo Switch Pro controller is opened.
1878///
1879/// The variable can be set to the following values:
1880///
1881/// - "0": Home button LED is turned off.
1882/// - "1": Home button LED is turned on.
1883///
1884/// By default the Home button LED state is not changed. This hint can also be
1885/// set to a floating point value between 0.0 and 1.0 which controls the
1886/// brightness of the Home button LED.
1887///
1888/// This hint can be set anytime.
1889///
1890/// ## Availability
1891/// This hint is available since SDL 3.2.0.
1892pub const SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED: *const ::core::ffi::c_char =
1893 c"SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED".as_ptr();
1894
1895/// A variable controlling whether the player LEDs should be lit to indicate
1896/// which player is associated with a Nintendo Switch controller.
1897///
1898/// The variable can be set to the following values:
1899///
1900/// - "0": Player LEDs are not enabled.
1901/// - "1": Player LEDs are enabled. (default)
1902///
1903/// This hint can be set anytime.
1904///
1905/// ## Availability
1906/// This hint is available since SDL 3.2.0.
1907pub const SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED: *const ::core::ffi::c_char =
1908 c"SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED".as_ptr();
1909
1910/// A variable controlling whether the HIDAPI driver for Nintendo Switch 2
1911/// controllers should be used.
1912///
1913/// The variable can be set to the following values:
1914///
1915/// - "0": HIDAPI driver is not used.
1916/// - "1": HIDAPI driver is used.
1917///
1918/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI`].
1919///
1920/// This hint should be set before initializing joysticks and gamepads.
1921///
1922/// ## Availability
1923/// This hint is available since SDL 3.4.0.
1924pub const SDL_HINT_JOYSTICK_HIDAPI_SWITCH2: *const ::core::ffi::c_char =
1925 c"SDL_JOYSTICK_HIDAPI_SWITCH2".as_ptr();
1926
1927/// A variable controlling whether Nintendo Switch Joy-Con controllers will be
1928/// in vertical mode when using the HIDAPI driver.
1929///
1930/// The variable can be set to the following values:
1931///
1932/// - "0": Left and right Joy-Con controllers will not be in vertical mode.
1933/// (default)
1934/// - "1": Left and right Joy-Con controllers will be in vertical mode.
1935///
1936/// This hint should be set before opening a Joy-Con controller.
1937///
1938/// ## Availability
1939/// This hint is available since SDL 3.2.0.
1940pub const SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS: *const ::core::ffi::c_char =
1941 c"SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS".as_ptr();
1942
1943/// A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U
1944/// controllers should be used.
1945///
1946/// The variable can be set to the following values:
1947///
1948/// - "0": HIDAPI driver is not used.
1949/// - "1": HIDAPI driver is used.
1950///
1951/// This driver doesn't work with the dolphinbar, so the default is false for
1952/// now.
1953///
1954/// This hint should be set before initializing joysticks and gamepads.
1955///
1956/// ## Availability
1957/// This hint is available since SDL 3.2.0.
1958pub const SDL_HINT_JOYSTICK_HIDAPI_WII: *const ::core::ffi::c_char =
1959 c"SDL_JOYSTICK_HIDAPI_WII".as_ptr();
1960
1961/// A variable controlling whether the player LEDs should be lit to indicate
1962/// which player is associated with a Wii controller.
1963///
1964/// The variable can be set to the following values:
1965///
1966/// - "0": Player LEDs are not enabled.
1967/// - "1": Player LEDs are enabled. (default)
1968///
1969/// This hint can be set anytime.
1970///
1971/// ## Availability
1972/// This hint is available since SDL 3.2.0.
1973pub const SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED: *const ::core::ffi::c_char =
1974 c"SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED".as_ptr();
1975
1976/// A variable controlling whether the HIDAPI driver for XBox controllers
1977/// should be used.
1978///
1979/// The variable can be set to the following values:
1980///
1981/// - "0": HIDAPI driver is not used.
1982/// - "1": HIDAPI driver is used.
1983///
1984/// The default is "0" on Windows, otherwise the value of
1985/// [`SDL_HINT_JOYSTICK_HIDAPI`]
1986///
1987/// This hint should be set before initializing joysticks and gamepads.
1988///
1989/// ## Availability
1990/// This hint is available since SDL 3.2.0.
1991pub const SDL_HINT_JOYSTICK_HIDAPI_XBOX: *const ::core::ffi::c_char =
1992 c"SDL_JOYSTICK_HIDAPI_XBOX".as_ptr();
1993
1994/// A variable controlling whether the HIDAPI driver for XBox 360 controllers
1995/// should be used.
1996///
1997/// The variable can be set to the following values:
1998///
1999/// - "0": HIDAPI driver is not used.
2000/// - "1": HIDAPI driver is used.
2001///
2002/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI_XBOX`]
2003///
2004/// This hint should be set before initializing joysticks and gamepads.
2005///
2006/// ## Availability
2007/// This hint is available since SDL 3.2.0.
2008pub const SDL_HINT_JOYSTICK_HIDAPI_XBOX_360: *const ::core::ffi::c_char =
2009 c"SDL_JOYSTICK_HIDAPI_XBOX_360".as_ptr();
2010
2011/// A variable controlling whether the player LEDs should be lit to indicate
2012/// which player is associated with an Xbox 360 controller.
2013///
2014/// The variable can be set to the following values:
2015///
2016/// - "0": Player LEDs are not enabled.
2017/// - "1": Player LEDs are enabled. (default)
2018///
2019/// This hint can be set anytime.
2020///
2021/// ## Availability
2022/// This hint is available since SDL 3.2.0.
2023pub const SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED: *const ::core::ffi::c_char =
2024 c"SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED".as_ptr();
2025
2026/// A variable controlling whether the HIDAPI driver for XBox 360 wireless
2027/// controllers should be used.
2028///
2029/// The variable can be set to the following values:
2030///
2031/// - "0": HIDAPI driver is not used.
2032/// - "1": HIDAPI driver is used.
2033///
2034/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI_XBOX_360`]
2035///
2036/// This hint should be set before initializing joysticks and gamepads.
2037///
2038/// ## Availability
2039/// This hint is available since SDL 3.2.0.
2040pub const SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS: *const ::core::ffi::c_char =
2041 c"SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS".as_ptr();
2042
2043/// A variable controlling whether the HIDAPI driver for XBox One controllers
2044/// should be used.
2045///
2046/// The variable can be set to the following values:
2047///
2048/// - "0": HIDAPI driver is not used.
2049/// - "1": HIDAPI driver is used.
2050///
2051/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI_XBOX`].
2052///
2053/// This hint should be set before initializing joysticks and gamepads.
2054///
2055/// ## Availability
2056/// This hint is available since SDL 3.2.0.
2057pub const SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE: *const ::core::ffi::c_char =
2058 c"SDL_JOYSTICK_HIDAPI_XBOX_ONE".as_ptr();
2059
2060/// A variable controlling whether the Home button LED should be turned on when
2061/// an Xbox One controller is opened.
2062///
2063/// The variable can be set to the following values:
2064///
2065/// - "0": Home button LED is turned off.
2066/// - "1": Home button LED is turned on.
2067///
2068/// By default the Home button LED state is not changed. This hint can also be
2069/// set to a floating point value between 0.0 and 1.0 which controls the
2070/// brightness of the Home button LED. The default brightness is 0.4.
2071///
2072/// This hint can be set anytime.
2073///
2074/// ## Availability
2075/// This hint is available since SDL 3.2.0.
2076pub const SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED: *const ::core::ffi::c_char =
2077 c"SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED".as_ptr();
2078
2079/// A variable controlling whether the new HIDAPI driver for wired Xbox One
2080/// (GIP) controllers should be used.
2081///
2082/// The variable can be set to the following values:
2083///
2084/// - "0": HIDAPI driver is not used.
2085/// - "1": HIDAPI driver is used.
2086///
2087/// The default is the value of [`SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE`].
2088///
2089/// This hint should be set before initializing joysticks and gamepads.
2090///
2091/// ## Availability
2092/// This hint is available since SDL 3.4.0.
2093pub const SDL_HINT_JOYSTICK_HIDAPI_GIP: *const ::core::ffi::c_char =
2094 c"SDL_JOYSTICK_HIDAPI_GIP".as_ptr();
2095
2096/// A variable controlling whether the new HIDAPI driver for wired Xbox One
2097/// (GIP) controllers should reset the controller if it can't get the metadata
2098/// from the controller.
2099///
2100/// The variable can be set to the following values:
2101///
2102/// - "0": Assume this is a generic controller.
2103/// - "1": Reset the controller to get metadata.
2104///
2105/// By default the controller is not reset.
2106///
2107/// This hint should be set before initializing joysticks and gamepads.
2108///
2109/// ## Availability
2110/// This hint is available since SDL 3.4.0.
2111pub const SDL_HINT_JOYSTICK_HIDAPI_GIP_RESET_FOR_METADATA: *const ::core::ffi::c_char =
2112 c"SDL_JOYSTICK_HIDAPI_GIP_RESET_FOR_METADATA".as_ptr();
2113
2114/// A variable controlling whether IOKit should be used for controller
2115/// handling.
2116///
2117/// The variable can be set to the following values:
2118///
2119/// - "0": IOKit is not used.
2120/// - "1": IOKit is used. (default)
2121///
2122/// This hint should be set before SDL is initialized.
2123///
2124/// ## Availability
2125/// This hint is available since SDL 3.2.0.
2126pub const SDL_HINT_JOYSTICK_IOKIT: *const ::core::ffi::c_char = c"SDL_JOYSTICK_IOKIT".as_ptr();
2127
2128/// A variable controlling whether to use the classic /dev/input/js* joystick
2129/// interface or the newer /dev/input/event* joystick interface on Linux.
2130///
2131/// The variable can be set to the following values:
2132///
2133/// - "0": Use /dev/input/event* (default)
2134/// - "1": Use /dev/input/js*
2135///
2136/// This hint should be set before SDL is initialized.
2137///
2138/// ## Availability
2139/// This hint is available since SDL 3.2.0.
2140pub const SDL_HINT_JOYSTICK_LINUX_CLASSIC: *const ::core::ffi::c_char =
2141 c"SDL_JOYSTICK_LINUX_CLASSIC".as_ptr();
2142
2143/// A variable controlling whether joysticks on Linux adhere to their
2144/// HID-defined deadzones or return unfiltered values.
2145///
2146/// The variable can be set to the following values:
2147///
2148/// - "0": Return unfiltered joystick axis values. (default)
2149/// - "1": Return axis values with deadzones taken into account.
2150///
2151/// This hint should be set before a controller is opened.
2152///
2153/// ## Availability
2154/// This hint is available since SDL 3.2.0.
2155pub const SDL_HINT_JOYSTICK_LINUX_DEADZONES: *const ::core::ffi::c_char =
2156 c"SDL_JOYSTICK_LINUX_DEADZONES".as_ptr();
2157
2158/// A variable controlling whether joysticks on Linux will always treat 'hat'
2159/// axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking
2160/// whether they may be analog.
2161///
2162/// The variable can be set to the following values:
2163///
2164/// - "0": Only map hat axis inputs to digital hat outputs if the input axes
2165/// appear to actually be digital. (default)
2166/// - "1": Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as
2167/// digital hats.
2168///
2169/// This hint should be set before a controller is opened.
2170///
2171/// ## Availability
2172/// This hint is available since SDL 3.2.0.
2173pub const SDL_HINT_JOYSTICK_LINUX_DIGITAL_HATS: *const ::core::ffi::c_char =
2174 c"SDL_JOYSTICK_LINUX_DIGITAL_HATS".as_ptr();
2175
2176/// A variable controlling whether digital hats on Linux will apply deadzones
2177/// to their underlying input axes or use unfiltered values.
2178///
2179/// The variable can be set to the following values:
2180///
2181/// - "0": Return digital hat values based on unfiltered input axis values.
2182/// - "1": Return digital hat values with deadzones on the input axes taken
2183/// into account. (default)
2184///
2185/// This hint should be set before a controller is opened.
2186///
2187/// ## Availability
2188/// This hint is available since SDL 3.2.0.
2189pub const SDL_HINT_JOYSTICK_LINUX_HAT_DEADZONES: *const ::core::ffi::c_char =
2190 c"SDL_JOYSTICK_LINUX_HAT_DEADZONES".as_ptr();
2191
2192/// A variable controlling whether GCController should be used for controller
2193/// handling.
2194///
2195/// The variable can be set to the following values:
2196///
2197/// - "0": GCController is not used.
2198/// - "1": GCController is used. (default)
2199///
2200/// This hint should be set before SDL is initialized.
2201///
2202/// ## Availability
2203/// This hint is available since SDL 3.2.0.
2204pub const SDL_HINT_JOYSTICK_MFI: *const ::core::ffi::c_char = c"SDL_JOYSTICK_MFI".as_ptr();
2205
2206/// A variable controlling whether the RAWINPUT joystick drivers should be used
2207/// for better handling XInput-capable devices.
2208///
2209/// The variable can be set to the following values:
2210///
2211/// - "0": RAWINPUT drivers are not used. (default)
2212/// - "1": RAWINPUT drivers are used.
2213///
2214/// This hint should be set before SDL is initialized.
2215///
2216/// ## Availability
2217/// This hint is available since SDL 3.2.0.
2218pub const SDL_HINT_JOYSTICK_RAWINPUT: *const ::core::ffi::c_char =
2219 c"SDL_JOYSTICK_RAWINPUT".as_ptr();
2220
2221/// A variable controlling whether the RAWINPUT driver should pull correlated
2222/// data from XInput.
2223///
2224/// The variable can be set to the following values:
2225///
2226/// - "0": RAWINPUT driver will only use data from raw input APIs.
2227/// - "1": RAWINPUT driver will also pull data from XInput and
2228/// Windows.Gaming.Input, providing better trigger axes, guide button
2229/// presses, and rumble support for Xbox controllers. (default)
2230///
2231/// This hint should be set before a gamepad is opened.
2232///
2233/// ## Availability
2234/// This hint is available since SDL 3.2.0.
2235pub const SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT: *const ::core::ffi::c_char =
2236 c"SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT".as_ptr();
2237
2238/// A variable controlling whether the ROG Chakram mice should show up as
2239/// joysticks.
2240///
2241/// The variable can be set to the following values:
2242///
2243/// - "0": ROG Chakram mice do not show up as joysticks. (default)
2244/// - "1": ROG Chakram mice show up as joysticks.
2245///
2246/// This hint should be set before SDL is initialized.
2247///
2248/// ## Availability
2249/// This hint is available since SDL 3.2.0.
2250pub const SDL_HINT_JOYSTICK_ROG_CHAKRAM: *const ::core::ffi::c_char =
2251 c"SDL_JOYSTICK_ROG_CHAKRAM".as_ptr();
2252
2253/// A variable controlling whether a separate thread should be used for
2254/// handling joystick detection and raw input messages on Windows.
2255///
2256/// The variable can be set to the following values:
2257///
2258/// - "0": A separate thread is not used.
2259/// - "1": A separate thread is used for handling raw input messages. (default)
2260///
2261/// This hint should be set before SDL is initialized.
2262///
2263/// ## Availability
2264/// This hint is available since SDL 3.2.0.
2265pub const SDL_HINT_JOYSTICK_THREAD: *const ::core::ffi::c_char = c"SDL_JOYSTICK_THREAD".as_ptr();
2266
2267/// A variable containing a list of throttle style controllers.
2268///
2269/// The format of the string is a comma separated list of USB VID/PID pairs in
2270/// hexadecimal form, e.g.
2271///
2272/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
2273///
2274/// The variable can also take the form of "@file", in which case the named
2275/// file will be loaded and interpreted as the value of the variable.
2276///
2277/// This hint can be set anytime.
2278///
2279/// ## Availability
2280/// This hint is available since SDL 3.2.0.
2281pub const SDL_HINT_JOYSTICK_THROTTLE_DEVICES: *const ::core::ffi::c_char =
2282 c"SDL_JOYSTICK_THROTTLE_DEVICES".as_ptr();
2283
2284/// A variable containing a list of devices that are not throttle style
2285/// controllers.
2286///
2287/// This will override [`SDL_HINT_JOYSTICK_THROTTLE_DEVICES`] and the built in
2288/// device list.
2289///
2290/// The format of the string is a comma separated list of USB VID/PID pairs in
2291/// hexadecimal form, e.g.
2292///
2293/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
2294///
2295/// The variable can also take the form of "@file", in which case the named
2296/// file will be loaded and interpreted as the value of the variable.
2297///
2298/// This hint can be set anytime.
2299///
2300/// ## Availability
2301/// This hint is available since SDL 3.2.0.
2302pub const SDL_HINT_JOYSTICK_THROTTLE_DEVICES_EXCLUDED: *const ::core::ffi::c_char =
2303 c"SDL_JOYSTICK_THROTTLE_DEVICES_EXCLUDED".as_ptr();
2304
2305/// A variable controlling whether Windows.Gaming.Input should be used for
2306/// controller handling.
2307///
2308/// The variable can be set to the following values:
2309///
2310/// - "0": WGI is not used. (default)
2311/// - "1": WGI is used.
2312///
2313/// This hint should be set before SDL is initialized.
2314///
2315/// ## Availability
2316/// This hint is available since SDL 3.2.0.
2317pub const SDL_HINT_JOYSTICK_WGI: *const ::core::ffi::c_char = c"SDL_JOYSTICK_WGI".as_ptr();
2318
2319/// A variable containing a list of wheel style controllers.
2320///
2321/// The format of the string is a comma separated list of USB VID/PID pairs in
2322/// hexadecimal form, e.g.
2323///
2324/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
2325///
2326/// The variable can also take the form of "@file", in which case the named
2327/// file will be loaded and interpreted as the value of the variable.
2328///
2329/// This hint can be set anytime.
2330///
2331/// ## Availability
2332/// This hint is available since SDL 3.2.0.
2333pub const SDL_HINT_JOYSTICK_WHEEL_DEVICES: *const ::core::ffi::c_char =
2334 c"SDL_JOYSTICK_WHEEL_DEVICES".as_ptr();
2335
2336/// A variable containing a list of devices that are not wheel style
2337/// controllers.
2338///
2339/// This will override [`SDL_HINT_JOYSTICK_WHEEL_DEVICES`] and the built in device
2340/// list.
2341///
2342/// The format of the string is a comma separated list of USB VID/PID pairs in
2343/// hexadecimal form, e.g.
2344///
2345/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
2346///
2347/// The variable can also take the form of "@file", in which case the named
2348/// file will be loaded and interpreted as the value of the variable.
2349///
2350/// This hint can be set anytime.
2351///
2352/// ## Availability
2353/// This hint is available since SDL 3.2.0.
2354pub const SDL_HINT_JOYSTICK_WHEEL_DEVICES_EXCLUDED: *const ::core::ffi::c_char =
2355 c"SDL_JOYSTICK_WHEEL_DEVICES_EXCLUDED".as_ptr();
2356
2357/// A variable containing a list of devices known to have all axes centered at
2358/// zero.
2359///
2360/// The format of the string is a comma separated list of USB VID/PID pairs in
2361/// hexadecimal form, e.g.
2362///
2363/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
2364///
2365/// The variable can also take the form of "@file", in which case the named
2366/// file will be loaded and interpreted as the value of the variable.
2367///
2368/// This hint should be set before a controller is opened.
2369///
2370/// ## Availability
2371/// This hint is available since SDL 3.2.0.
2372pub const SDL_HINT_JOYSTICK_ZERO_CENTERED_DEVICES: *const ::core::ffi::c_char =
2373 c"SDL_JOYSTICK_ZERO_CENTERED_DEVICES".as_ptr();
2374
2375/// A variable containing a list of devices and their desired number of haptic
2376/// (force feedback) enabled axis.
2377///
2378/// The format of the string is a comma separated list of USB VID/PID pairs in
2379/// hexadecimal form plus the number of desired axes, e.g.
2380///
2381/// `0xAAAA/0xBBBB/1,0xCCCC/0xDDDD/3`
2382///
2383/// This hint supports a "wildcard" device that will set the number of haptic
2384/// axes on all initialized haptic devices which were not defined explicitly in
2385/// this hint.
2386///
2387/// `0xFFFF/0xFFFF/1`
2388///
2389/// This hint should be set before a controller is opened. The number of haptic
2390/// axes won't exceed the number of real axes found on the device.
2391///
2392/// ## Availability
2393/// This hint is available since SDL 3.2.5.
2394pub const SDL_HINT_JOYSTICK_HAPTIC_AXES: *const ::core::ffi::c_char =
2395 c"SDL_JOYSTICK_HAPTIC_AXES".as_ptr();
2396
2397/// A variable that controls keycode representation in keyboard events.
2398///
2399/// This variable is a comma separated set of options for translating keycodes
2400/// in events:
2401///
2402/// - "none": Keycode options are cleared, this overrides other options.
2403/// - "hide_numpad": The numpad keysyms will be translated into their
2404/// non-numpad versions based on the current NumLock state. For example,
2405/// SDLK_KP_4 would become SDLK_4 if [`SDL_KMOD_NUM`] is set in the event
2406/// modifiers, and SDLK_LEFT if it is unset.
2407/// - "french_numbers": The number row on French keyboards is inverted, so
2408/// pressing the 1 key would yield the keycode SDLK_1, or '1', instead of
2409/// SDLK_AMPERSAND, or '&'
2410/// - "latin_letters": For keyboards using non-Latin letters, such as Russian
2411/// or Thai, the letter keys generate keycodes as though it had an English
2412/// QWERTY layout. e.g. pressing the key associated with [`SDL_SCANCODE_A`] on a
2413/// Russian keyboard would yield 'a' instead of a Cyrillic letter.
2414///
2415/// The default value for this hint is "french_numbers,latin_letters"
2416///
2417/// Some platforms like Emscripten only provide modified keycodes and the
2418/// options are not used.
2419///
2420/// These options do not affect the return value of [`SDL_GetKeyFromScancode()`] or
2421/// [`SDL_GetScancodeFromKey()`], they just apply to the keycode included in key
2422/// events.
2423///
2424/// This hint can be set anytime.
2425///
2426/// ## Availability
2427/// This hint is available since SDL 3.2.0.
2428pub const SDL_HINT_KEYCODE_OPTIONS: *const ::core::ffi::c_char = c"SDL_KEYCODE_OPTIONS".as_ptr();
2429
2430/// A variable that controls what KMSDRM device to use.
2431///
2432/// SDL might open something like "/dev/dri/cardNN" to access KMSDRM
2433/// functionality, where "NN" is a device index number. SDL makes a guess at
2434/// the best index to use (usually zero), but the app or user can set this hint
2435/// to a number between 0 and 99 to force selection.
2436///
2437/// This hint should be set before SDL is initialized.
2438///
2439/// ## Availability
2440/// This hint is available since SDL 3.2.0.
2441pub const SDL_HINT_KMSDRM_DEVICE_INDEX: *const ::core::ffi::c_char =
2442 c"SDL_KMSDRM_DEVICE_INDEX".as_ptr();
2443
2444/// A variable that controls whether SDL requires DRM master access in order to
2445/// initialize the KMSDRM video backend.
2446///
2447/// The DRM subsystem has a concept of a "DRM master" which is a DRM client
2448/// that has the ability to set planes, set cursor, etc. When SDL is DRM
2449/// master, it can draw to the screen using the SDL rendering APIs. Without DRM
2450/// master, SDL is still able to process input and query attributes of attached
2451/// displays, but it cannot change display state or draw to the screen
2452/// directly.
2453///
2454/// In some cases, it can be useful to have the KMSDRM backend even if it
2455/// cannot be used for rendering. An app may want to use SDL for input
2456/// processing while using another rendering API (such as an MMAL overlay on
2457/// Raspberry Pi) or using its own code to render to DRM overlays that SDL
2458/// doesn't support.
2459///
2460/// The variable can be set to the following values:
2461///
2462/// - "0": SDL will allow usage of the KMSDRM backend without DRM master.
2463/// - "1": SDL Will require DRM master to use the KMSDRM backend. (default)
2464///
2465/// This hint should be set before SDL is initialized.
2466///
2467/// ## Availability
2468/// This hint is available since SDL 3.2.0.
2469pub const SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER: *const ::core::ffi::c_char =
2470 c"SDL_KMSDRM_REQUIRE_DRM_MASTER".as_ptr();
2471
2472/// A variable that controls whether KMSDRM will use "atomic" functionality.
2473///
2474/// The KMSDRM backend can use atomic commits, if both DRM_CLIENT_CAP_ATOMIC
2475/// and DRM_CLIENT_CAP_UNIVERSAL_PLANES is supported by the system. As of SDL
2476/// 3.4.0, it will favor this functionality, but in case this doesn't work well
2477/// on a given system or other surprises, this hint can be used to disable it.
2478///
2479/// This hint can not enable the functionality if it isn't available.
2480///
2481/// The variable can be set to the following values:
2482///
2483/// - "0": SDL will not use the KMSDRM "atomic" functionality.
2484/// - "1": SDL will allow usage of the KMSDRM "atomic" functionality. (default)
2485///
2486/// This hint should be set before SDL is initialized.
2487///
2488/// ## Availability
2489/// This hint is available since SDL 3.4.0.
2490pub const SDL_HINT_KMSDRM_ATOMIC: *const ::core::ffi::c_char = c"SDL_KMSDRM_ATOMIC".as_ptr();
2491
2492/// A variable controlling the default SDL log levels.
2493///
2494/// This variable is a comma separated set of category=level tokens that define
2495/// the default logging levels for SDL applications.
2496///
2497/// The category can be a numeric category, one of "app", "error", "assert",
2498/// "system", "audio", "video", "render", "input", "test", or `*` for any
2499/// unspecified category.
2500///
2501/// The level can be a numeric level, one of "verbose", "debug", "info",
2502/// "warn", "error", "critical", or "quiet" to disable that category.
2503///
2504/// You can omit the category if you want to set the logging level for all
2505/// categories.
2506///
2507/// If this hint isn't set, the default log levels are equivalent to:
2508///
2509/// `app=info,assert=warn,test=verbose,*=error`
2510///
2511/// If the `DEBUG_INVOCATION` environment variable is set to "1", the default
2512/// log levels are equivalent to:
2513///
2514/// `assert=warn,test=verbose,*=debug`
2515///
2516/// This hint can be set anytime.
2517///
2518/// ## Availability
2519/// This hint is available since SDL 3.2.0.
2520pub const SDL_HINT_LOGGING: *const ::core::ffi::c_char = c"SDL_LOGGING".as_ptr();
2521
2522/// A variable controlling whether to force the application to become the
2523/// foreground process when launched on macOS.
2524///
2525/// The variable can be set to the following values:
2526///
2527/// - "0": The application is brought to the foreground when launched.
2528/// (default)
2529/// - "1": The application may remain in the background when launched.
2530///
2531/// This hint needs to be set before [`SDL_Init()`].
2532///
2533/// ## Availability
2534/// This hint is available since SDL 3.2.0.
2535pub const SDL_HINT_MAC_BACKGROUND_APP: *const ::core::ffi::c_char =
2536 c"SDL_MAC_BACKGROUND_APP".as_ptr();
2537
2538/// A variable that determines whether Ctrl+Click should generate a right-click
2539/// event on macOS.
2540///
2541/// The variable can be set to the following values:
2542///
2543/// - "0": Ctrl+Click does not generate a right mouse button click event.
2544/// (default)
2545/// - "1": Ctrl+Click generated a right mouse button click event.
2546///
2547/// This hint can be set anytime.
2548///
2549/// ## Availability
2550/// This hint is available since SDL 3.2.0.
2551pub const SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK: *const ::core::ffi::c_char =
2552 c"SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK".as_ptr();
2553
2554/// A variable controlling whether dispatching OpenGL context updates should
2555/// block the dispatching thread until the main thread finishes processing on
2556/// macOS.
2557///
2558/// The variable can be set to the following values:
2559///
2560/// - "0": Dispatching OpenGL context updates will block the dispatching thread
2561/// until the main thread finishes processing. (default)
2562/// - "1": Dispatching OpenGL context updates will allow the dispatching thread
2563/// to continue execution.
2564///
2565/// Generally you want the default, but if you have OpenGL code in a background
2566/// thread on a Mac, and the main thread hangs because it's waiting for that
2567/// background thread, but that background thread is also hanging because it's
2568/// waiting for the main thread to do an update, this might fix your issue.
2569///
2570/// This hint can be set anytime.
2571///
2572/// ## Availability
2573/// This hint is available since SDL 3.2.0.
2574pub const SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH: *const ::core::ffi::c_char =
2575 c"SDL_MAC_OPENGL_ASYNC_DISPATCH".as_ptr();
2576
2577/// A variable controlling whether the Option key on macOS should be remapped
2578/// to act as the Alt key.
2579///
2580/// The variable can be set to the following values:
2581///
2582/// - "none": The Option key is not remapped to Alt. (default)
2583/// - "only_left": Only the left Option key is remapped to Alt.
2584/// - "only_right": Only the right Option key is remapped to Alt.
2585/// - "both": Both Option keys are remapped to Alt.
2586///
2587/// This will prevent the triggering of key compositions that rely on the
2588/// Option key, but will still send the Alt modifier for keyboard events. In
2589/// the case that both Alt and Option are pressed, the Option key will be
2590/// ignored. This is particularly useful for applications like terminal
2591/// emulators and graphical user interfaces (GUIs) that rely on Alt key
2592/// functionality for shortcuts or navigation. This does not apply to
2593/// [`SDL_GetKeyFromScancode`] and only has an effect if IME is enabled.
2594///
2595/// This hint can be set anytime.
2596///
2597/// ## Availability
2598/// This hint is available since SDL 3.2.0.
2599pub const SDL_HINT_MAC_OPTION_AS_ALT: *const ::core::ffi::c_char =
2600 c"SDL_MAC_OPTION_AS_ALT".as_ptr();
2601
2602/// A variable controlling whether [`SDL_EVENT_MOUSE_WHEEL`] event values will have
2603/// momentum on macOS.
2604///
2605/// The variable can be set to the following values:
2606///
2607/// - "0": The mouse wheel events will have no momentum. (default)
2608/// - "1": The mouse wheel events will have momentum.
2609///
2610/// This hint needs to be set before [`SDL_Init()`].
2611///
2612/// ## Availability
2613/// This hint is available since SDL 3.2.0.
2614pub const SDL_HINT_MAC_SCROLL_MOMENTUM: *const ::core::ffi::c_char =
2615 c"SDL_MAC_SCROLL_MOMENTUM".as_ptr();
2616
2617/// A variable controlling whether holding down a key will repeat the pressed
2618/// key or open the accents menu on macOS.
2619///
2620/// The variable can be set to the following values:
2621///
2622/// - "0": Holding a key will repeat the pressed key.
2623/// - "1": Holding a key will open the accents menu for that key. (default)
2624///
2625/// This hint needs to be set before [`SDL_Init()`].
2626///
2627/// ## Availability
2628/// This hint is available since SDL 3.4.0.
2629pub const SDL_HINT_MAC_PRESS_AND_HOLD: *const ::core::ffi::c_char =
2630 c"SDL_MAC_PRESS_AND_HOLD".as_ptr();
2631
2632/// Request [`SDL_AppIterate()`] be called at a specific rate.
2633///
2634/// If this is set to a number, it represents Hz, so "60" means try to iterate
2635/// 60 times per second. "0" means to iterate as fast as possible. Negative
2636/// values are illegal, but reserved, in case they are useful in a future
2637/// revision of SDL.
2638///
2639/// There are other strings that have special meaning. If set to "waitevent",
2640/// [`SDL_AppIterate`] will not be called until new event(s) have arrived (and been
2641/// processed by [`SDL_AppEvent`]). This can be useful for apps that are completely
2642/// idle except in response to input.
2643///
2644/// On some platforms, or if you are using [`SDL_main`] instead of [`SDL_AppIterate`],
2645/// this hint is ignored. When the hint can be used, it is allowed to be
2646/// changed at any time.
2647///
2648/// This defaults to 0, and specifying NULL for the hint's value will restore
2649/// the default.
2650///
2651/// This doesn't have to be an integer value. For example, "59.94" won't be
2652/// rounded to an integer rate; the digits after the decimal are actually
2653/// respected.
2654///
2655/// This hint can be set anytime.
2656///
2657/// ## Availability
2658/// This hint is available since SDL 3.2.0.
2659pub const SDL_HINT_MAIN_CALLBACK_RATE: *const ::core::ffi::c_char =
2660 c"SDL_MAIN_CALLBACK_RATE".as_ptr();
2661
2662/// A variable controlling whether the mouse is captured while mouse buttons
2663/// are pressed.
2664///
2665/// The variable can be set to the following values:
2666///
2667/// - "0": The mouse is not captured while mouse buttons are pressed.
2668/// - "1": The mouse is captured while mouse buttons are pressed.
2669///
2670/// By default the mouse is captured while mouse buttons are pressed so if the
2671/// mouse is dragged outside the window, the application continues to receive
2672/// mouse events until the button is released.
2673///
2674/// This hint can be set anytime.
2675///
2676/// ## Availability
2677/// This hint is available since SDL 3.2.0.
2678pub const SDL_HINT_MOUSE_AUTO_CAPTURE: *const ::core::ffi::c_char =
2679 c"SDL_MOUSE_AUTO_CAPTURE".as_ptr();
2680
2681/// A variable setting the double click radius, in pixels.
2682///
2683/// This hint can be set anytime.
2684///
2685/// ## Availability
2686/// This hint is available since SDL 3.2.0.
2687pub const SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS: *const ::core::ffi::c_char =
2688 c"SDL_MOUSE_DOUBLE_CLICK_RADIUS".as_ptr();
2689
2690/// A variable setting the double click time, in milliseconds.
2691///
2692/// This hint can be set anytime.
2693///
2694/// ## Availability
2695/// This hint is available since SDL 3.2.0.
2696pub const SDL_HINT_MOUSE_DOUBLE_CLICK_TIME: *const ::core::ffi::c_char =
2697 c"SDL_MOUSE_DOUBLE_CLICK_TIME".as_ptr();
2698
2699/// A variable setting which system cursor to use as the default cursor.
2700///
2701/// This should be an integer corresponding to the [`SDL_SystemCursor`] enum. The
2702/// default value is zero ([`SDL_SYSTEM_CURSOR_DEFAULT`]).
2703///
2704/// This hint needs to be set before [`SDL_Init()`].
2705///
2706/// ## Availability
2707/// This hint is available since SDL 3.2.0.
2708pub const SDL_HINT_MOUSE_DEFAULT_SYSTEM_CURSOR: *const ::core::ffi::c_char =
2709 c"SDL_MOUSE_DEFAULT_SYSTEM_CURSOR".as_ptr();
2710
2711/// A variable setting whether we should scale cursors by the current display
2712/// scale.
2713///
2714/// The variable can be set to the following values:
2715///
2716/// - "0": Cursors will not change size based on the display content scale.
2717/// (default)
2718/// - "1": Cursors will automatically match the display content scale (e.g. a
2719/// 2x sized cursor will be used when the window is on a monitor with 200%
2720/// scale). This is currently implemented on Windows and Wayland.
2721///
2722/// This hint needs to be set before creating cursors.
2723///
2724/// ## Availability
2725/// This hint is available since SDL 3.4.0.
2726pub const SDL_HINT_MOUSE_DPI_SCALE_CURSORS: *const ::core::ffi::c_char =
2727 c"SDL_MOUSE_DPI_SCALE_CURSORS".as_ptr();
2728
2729/// A variable controlling whether warping a hidden mouse cursor will activate
2730/// relative mouse mode.
2731///
2732/// When this hint is set, the mouse cursor is hidden, and multiple warps to
2733/// the window center occur within a short time period, SDL will emulate mouse
2734/// warps using relative mouse mode. This can provide smoother and more
2735/// reliable mouse motion for some older games, which continuously calculate
2736/// the distance traveled by the mouse pointer and warp it back to the center
2737/// of the window, rather than using relative mouse motion.
2738///
2739/// Note that relative mouse mode may have different mouse acceleration
2740/// behavior than pointer warps.
2741///
2742/// If your application needs to repeatedly warp the hidden mouse cursor at a
2743/// high-frequency for other purposes, it should disable this hint.
2744///
2745/// The variable can be set to the following values:
2746///
2747/// - "0": Attempts to warp the mouse will always be made.
2748/// - "1": Some mouse warps will be emulated by forcing relative mouse mode.
2749/// (default)
2750///
2751/// If not set, this is automatically enabled unless an application uses
2752/// relative mouse mode directly.
2753///
2754/// This hint can be set anytime.
2755///
2756/// ## Availability
2757/// This hint is available since SDL 3.2.0.
2758pub const SDL_HINT_MOUSE_EMULATE_WARP_WITH_RELATIVE: *const ::core::ffi::c_char =
2759 c"SDL_MOUSE_EMULATE_WARP_WITH_RELATIVE".as_ptr();
2760
2761/// Allow mouse click events when clicking to focus an SDL window.
2762///
2763/// The variable can be set to the following values:
2764///
2765/// - "0": Ignore mouse clicks that activate a window. (default)
2766/// - "1": Generate events for mouse clicks that activate a window.
2767///
2768/// This hint can be set anytime.
2769///
2770/// ## Availability
2771/// This hint is available since SDL 3.2.0.
2772pub const SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH: *const ::core::ffi::c_char =
2773 c"SDL_MOUSE_FOCUS_CLICKTHROUGH".as_ptr();
2774
2775/// A variable setting the speed scale for mouse motion, in floating point,
2776/// when the mouse is not in relative mode.
2777///
2778/// This hint can be set anytime.
2779///
2780/// ## Availability
2781/// This hint is available since SDL 3.2.0.
2782pub const SDL_HINT_MOUSE_NORMAL_SPEED_SCALE: *const ::core::ffi::c_char =
2783 c"SDL_MOUSE_NORMAL_SPEED_SCALE".as_ptr();
2784
2785/// A variable controlling whether relative mouse mode constrains the mouse to
2786/// the center of the window.
2787///
2788/// Constraining to the center of the window works better for FPS games and
2789/// when the application is running over RDP. Constraining to the whole window
2790/// works better for 2D games and increases the chance that the mouse will be
2791/// in the correct position when using high DPI mice.
2792///
2793/// The variable can be set to the following values:
2794///
2795/// - "0": Relative mouse mode constrains the mouse to the window.
2796/// - "1": Relative mouse mode constrains the mouse to the center of the
2797/// window. (default)
2798///
2799/// This hint can be set anytime.
2800///
2801/// ## Availability
2802/// This hint is available since SDL 3.2.0.
2803pub const SDL_HINT_MOUSE_RELATIVE_MODE_CENTER: *const ::core::ffi::c_char =
2804 c"SDL_MOUSE_RELATIVE_MODE_CENTER".as_ptr();
2805
2806/// A variable setting the scale for mouse motion, in floating point, when the
2807/// mouse is in relative mode.
2808///
2809/// This hint can be set anytime.
2810///
2811/// ## Availability
2812/// This hint is available since SDL 3.2.0.
2813pub const SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE: *const ::core::ffi::c_char =
2814 c"SDL_MOUSE_RELATIVE_SPEED_SCALE".as_ptr();
2815
2816/// A variable controlling whether the system mouse acceleration curve is used
2817/// for relative mouse motion.
2818///
2819/// The variable can be set to the following values:
2820///
2821/// - "0": Relative mouse motion will be unscaled. (default)
2822/// - "1": Relative mouse motion will be scaled using the system mouse
2823/// acceleration curve.
2824///
2825/// If [`SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE`] is set, that will be applied after
2826/// system speed scale.
2827///
2828/// This hint can be set anytime.
2829///
2830/// ## Availability
2831/// This hint is available since SDL 3.2.0.
2832pub const SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE: *const ::core::ffi::c_char =
2833 c"SDL_MOUSE_RELATIVE_SYSTEM_SCALE".as_ptr();
2834
2835/// A variable controlling whether a motion event should be generated for mouse
2836/// warping in relative mode.
2837///
2838/// The variable can be set to the following values:
2839///
2840/// - "0": Warping the mouse will not generate a motion event in relative mode
2841/// - "1": Warping the mouse will generate a motion event in relative mode
2842///
2843/// By default warping the mouse will not generate motion events in relative
2844/// mode. This avoids the application having to filter out large relative
2845/// motion due to warping.
2846///
2847/// This hint can be set anytime.
2848///
2849/// ## Availability
2850/// This hint is available since SDL 3.2.0.
2851pub const SDL_HINT_MOUSE_RELATIVE_WARP_MOTION: *const ::core::ffi::c_char =
2852 c"SDL_MOUSE_RELATIVE_WARP_MOTION".as_ptr();
2853
2854/// A variable controlling whether the hardware cursor stays visible when
2855/// relative mode is active.
2856///
2857/// This variable can be set to the following values:
2858///
2859/// - "0": The cursor will be hidden while relative mode is active (default)
2860/// - "1": The cursor will remain visible while relative mode is active
2861///
2862/// Note that for systems without raw hardware inputs, relative mode is
2863/// implemented using warping, so the hardware cursor will visibly warp between
2864/// frames if this is enabled on those systems.
2865///
2866/// This hint can be set anytime.
2867///
2868/// ## Availability
2869/// This hint is available since SDL 3.2.0.
2870pub const SDL_HINT_MOUSE_RELATIVE_CURSOR_VISIBLE: *const ::core::ffi::c_char =
2871 c"SDL_MOUSE_RELATIVE_CURSOR_VISIBLE".as_ptr();
2872
2873/// A variable controlling whether mouse events should generate synthetic touch
2874/// events.
2875///
2876/// The variable can be set to the following values:
2877///
2878/// - "0": Mouse events will not generate touch events. (default for desktop
2879/// platforms)
2880/// - "1": Mouse events will generate touch events. (default for mobile
2881/// platforms, such as Android and iOS)
2882///
2883/// This hint can be set anytime.
2884///
2885/// ## Availability
2886/// This hint is available since SDL 3.2.0.
2887pub const SDL_HINT_MOUSE_TOUCH_EVENTS: *const ::core::ffi::c_char =
2888 c"SDL_MOUSE_TOUCH_EVENTS".as_ptr();
2889
2890/// A variable controlling whether the keyboard should be muted on the console.
2891///
2892/// Normally the keyboard is muted while SDL applications are running so that
2893/// keyboard input doesn't show up as key strokes on the console. This hint
2894/// allows you to turn that off for debugging purposes.
2895///
2896/// The variable can be set to the following values:
2897///
2898/// - "0": Allow keystrokes to go through to the console.
2899/// - "1": Mute keyboard input so it doesn't show up on the console. (default)
2900///
2901/// This hint should be set before SDL is initialized.
2902///
2903/// ## Availability
2904/// This hint is available since SDL 3.2.0.
2905pub const SDL_HINT_MUTE_CONSOLE_KEYBOARD: *const ::core::ffi::c_char =
2906 c"SDL_MUTE_CONSOLE_KEYBOARD".as_ptr();
2907
2908/// Tell SDL not to catch the SIGINT or SIGTERM signals on POSIX platforms.
2909///
2910/// The variable can be set to the following values:
2911///
2912/// - "0": SDL will install a SIGINT and SIGTERM handler, and when it catches a
2913/// signal, convert it into an [`SDL_EVENT_QUIT`] event. (default)
2914/// - "1": SDL will not install a signal handler at all.
2915///
2916/// This hint should be set before SDL is initialized.
2917///
2918/// ## Availability
2919/// This hint is available since SDL 3.2.0.
2920pub const SDL_HINT_NO_SIGNAL_HANDLERS: *const ::core::ffi::c_char =
2921 c"SDL_NO_SIGNAL_HANDLERS".as_ptr();
2922
2923/// Specify the OpenGL library to load.
2924///
2925/// This hint should be set before creating an OpenGL window or creating an
2926/// OpenGL context. If this hint isn't set, SDL will choose a reasonable
2927/// default.
2928///
2929/// ## Availability
2930/// This hint is available since SDL 3.2.0.
2931pub const SDL_HINT_OPENGL_LIBRARY: *const ::core::ffi::c_char = c"SDL_OPENGL_LIBRARY".as_ptr();
2932
2933/// Specify the EGL library to load.
2934///
2935/// This hint should be set before creating an OpenGL window or creating an
2936/// OpenGL context. This hint is only considered if SDL is using EGL to manage
2937/// OpenGL contexts. If this hint isn't set, SDL will choose a reasonable
2938/// default.
2939///
2940/// ## Availability
2941/// This hint is available since SDL 3.2.0.
2942pub const SDL_HINT_EGL_LIBRARY: *const ::core::ffi::c_char = c"SDL_EGL_LIBRARY".as_ptr();
2943
2944/// A variable controlling what driver to use for OpenGL ES contexts.
2945///
2946/// On some platforms, currently Windows and X11, OpenGL drivers may support
2947/// creating contexts with an OpenGL ES profile. By default SDL uses these
2948/// profiles, when available, otherwise it attempts to load an OpenGL ES
2949/// library, e.g. that provided by the ANGLE project. This variable controls
2950/// whether SDL follows this default behaviour or will always load an OpenGL ES
2951/// library.
2952///
2953/// Circumstances where this is useful include - Testing an app with a
2954/// particular OpenGL ES implementation, e.g ANGLE, or emulator, e.g. those
2955/// from ARM, Imagination or Qualcomm. - Resolving OpenGL ES function addresses
2956/// at link time by linking with the OpenGL ES library instead of querying them
2957/// at run time with [`SDL_GL_GetProcAddress()`].
2958///
2959/// Caution: for an application to work with the default behaviour across
2960/// different OpenGL drivers it must query the OpenGL ES function addresses at
2961/// run time using [`SDL_GL_GetProcAddress()`].
2962///
2963/// This variable is ignored on most platforms because OpenGL ES is native or
2964/// not supported.
2965///
2966/// The variable can be set to the following values:
2967///
2968/// - "0": Use ES profile of OpenGL, if available. (default)
2969/// - "1": Load OpenGL ES library using the default library names.
2970///
2971/// This hint should be set before SDL is initialized.
2972///
2973/// ## Availability
2974/// This hint is available since SDL 3.2.0.
2975pub const SDL_HINT_OPENGL_ES_DRIVER: *const ::core::ffi::c_char = c"SDL_OPENGL_ES_DRIVER".as_ptr();
2976
2977/// A variable controlling whether to force an sRGB-capable OpenGL context.
2978///
2979/// At OpenGL context creation time, some platforms can request an sRGB-capable
2980/// context. However, sometimes any form of the request can cause surprising
2981/// results on some drivers, platforms, and hardware. Usually the surprise is
2982/// in the form of rendering that is either a little darker or a little
2983/// brighter than intended.
2984///
2985/// This hint allows the user to override the app's sRGB requests and either
2986/// force a specific value, or avoid requesting anything at all, depending on
2987/// what makes things work correctly for their system.
2988///
2989/// This is meant as a fail-safe; apps should probably not explicitly set this,
2990/// and most users should not, either.
2991///
2992/// Note that some platforms cannot make this request at all, and on all
2993/// platforms this request can be denied by the operating system.
2994///
2995/// In addition to attempting to obtain the type of sRGB-capable OpenGL context
2996/// requested by this hint, SDL will try to force the state of
2997/// GL_FRAMEBUFFER_SRGB on the new context, if appropriate.
2998///
2999/// The variable can be set to the following values:
3000///
3001/// - "0": Force a request for an OpenGL context that is _not_ sRGB-capable.
3002/// - "1": Force a request for an OpenGL context that _is_ sRGB-capable.
3003/// - "skip": Don't make any request for an sRGB-capable context (don't specify
3004/// the attribute at all during context creation time).
3005/// - any other string is undefined behavior.
3006///
3007/// If unset, or set to an empty string, SDL will make a request using the
3008/// value the app specified with the [`SDL_GL_FRAMEBUFFER_SRGB_CAPABLE`] attribute.
3009///
3010/// This hint should be set before an OpenGL context is created.
3011///
3012/// ## Availability
3013/// This hint is available since SDL 3.4.2.
3014pub const SDL_HINT_OPENGL_FORCE_SRGB_FRAMEBUFFER: *const ::core::ffi::c_char =
3015 c"SDL_OPENGL_FORCE_SRGB_FRAMEBUFFER".as_ptr();
3016
3017/// Mechanism to specify openvr_api library location
3018///
3019/// By default, when using the OpenVR driver, it will search for the API
3020/// library in the current folder. But, if you wish to use a system API you can
3021/// specify that by using this hint. This should be the full or relative path
3022/// to a .dll on Windows or .so on Linux.
3023///
3024/// ## Availability
3025/// This hint is available since SDL 3.2.0.
3026pub const SDL_HINT_OPENVR_LIBRARY: *const ::core::ffi::c_char = c"SDL_OPENVR_LIBRARY".as_ptr();
3027
3028/// A variable controlling which orientations are allowed on iOS/Android.
3029///
3030/// In some circumstances it is necessary to be able to explicitly control
3031/// which UI orientations are allowed.
3032///
3033/// This variable is a space delimited list of the following values:
3034///
3035/// - "LandscapeLeft"
3036/// - "LandscapeRight"
3037/// - "Portrait"
3038/// - "PortraitUpsideDown"
3039///
3040/// This hint should be set before SDL is initialized.
3041///
3042/// ## Availability
3043/// This hint is available since SDL 3.2.0.
3044pub const SDL_HINT_ORIENTATIONS: *const ::core::ffi::c_char = c"SDL_ORIENTATIONS".as_ptr();
3045
3046/// A variable controlling the use of a sentinel event when polling the event
3047/// queue.
3048///
3049/// When polling for events, [`SDL_PumpEvents`] is used to gather new events from
3050/// devices. If a device keeps producing new events between calls to
3051/// [`SDL_PumpEvents`], a poll loop will become stuck until the new events stop.
3052/// This is most noticeable when moving a high frequency mouse.
3053///
3054/// The variable can be set to the following values:
3055///
3056/// - "0": Disable poll sentinels.
3057/// - "1": Enable poll sentinels. (default)
3058///
3059/// This hint can be set anytime.
3060///
3061/// ## Availability
3062/// This hint is available since SDL 3.2.0.
3063pub const SDL_HINT_POLL_SENTINEL: *const ::core::ffi::c_char = c"SDL_POLL_SENTINEL".as_ptr();
3064
3065/// Override for [`SDL_GetPreferredLocales()`].
3066///
3067/// If set, this will be favored over anything the OS might report for the
3068/// user's preferred locales. Changing this hint at runtime will not generate a
3069/// [`SDL_EVENT_LOCALE_CHANGED`] event (but if you can change the hint, you can
3070/// push your own event, if you want).
3071///
3072/// The format of this hint is a comma-separated list of language and locale,
3073/// combined with an underscore, as is a common format: "en_GB". Locale is
3074/// optional: "en". So you might have a list like this: "en_GB,jp,es_PT"
3075///
3076/// This hint can be set anytime.
3077///
3078/// ## Availability
3079/// This hint is available since SDL 3.2.0.
3080pub const SDL_HINT_PREFERRED_LOCALES: *const ::core::ffi::c_char =
3081 c"SDL_PREFERRED_LOCALES".as_ptr();
3082
3083/// A variable that decides whether to send [`SDL_EVENT_QUIT`] when closing the
3084/// last window.
3085///
3086/// The variable can be set to the following values:
3087///
3088/// - "0": SDL will not send an [`SDL_EVENT_QUIT`] event when the last window is
3089/// requesting to close. Note that in this case, there are still other
3090/// legitimate reasons one might get an [`SDL_EVENT_QUIT`] event: choosing "Quit"
3091/// from the macOS menu bar, sending a SIGINT (ctrl-c) on Unix, etc.
3092/// - "1": SDL will send a quit event when the last window is requesting to
3093/// close. (default)
3094///
3095/// If there is at least one active system tray icon, [`SDL_EVENT_QUIT`] will
3096/// instead be sent when both the last window will be closed and the last tray
3097/// icon will be destroyed.
3098///
3099/// This hint can be set anytime.
3100///
3101/// ## Availability
3102/// This hint is available since SDL 3.2.0.
3103pub const SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE: *const ::core::ffi::c_char =
3104 c"SDL_QUIT_ON_LAST_WINDOW_CLOSE".as_ptr();
3105
3106/// A variable controlling whether the Direct3D device is initialized for
3107/// thread-safe operations.
3108///
3109/// The variable can be set to the following values:
3110///
3111/// - "0": Thread-safety is not enabled. (default)
3112/// - "1": Thread-safety is enabled.
3113///
3114/// This hint should be set before creating a renderer.
3115///
3116/// ## Availability
3117/// This hint is available since SDL 3.2.0.
3118pub const SDL_HINT_RENDER_DIRECT3D_THREADSAFE: *const ::core::ffi::c_char =
3119 c"SDL_RENDER_DIRECT3D_THREADSAFE".as_ptr();
3120
3121/// A variable controlling whether to enable Direct3D 11+'s Debug Layer.
3122///
3123/// This variable does not have any effect on the Direct3D 9 based renderer.
3124///
3125/// The variable can be set to the following values:
3126///
3127/// - "0": Disable Debug Layer use. (default)
3128/// - "1": Enable Debug Layer use.
3129///
3130/// This hint should be set before creating a renderer.
3131///
3132/// ## Availability
3133/// This hint is available since SDL 3.2.0.
3134pub const SDL_HINT_RENDER_DIRECT3D11_DEBUG: *const ::core::ffi::c_char =
3135 c"SDL_RENDER_DIRECT3D11_DEBUG".as_ptr();
3136
3137/// A variable controlling whether to use the Direct3D 11 WARP software
3138/// rasterizer.
3139///
3140/// For more information, see:
3141/// <https://learn.microsoft.com/en-us/windows/win32/direct3darticles/directx-warp>
3142///
3143/// The variable can be set to the following values:
3144///
3145/// - "0": Disable WARP rasterizer. (default)
3146/// - "1": Enable WARP rasterizer.
3147///
3148/// This hint should be set before creating a renderer.
3149///
3150/// ## Availability
3151/// This hint is available since SDL 3.4.0.
3152pub const SDL_HINT_RENDER_DIRECT3D11_WARP: *const ::core::ffi::c_char =
3153 c"SDL_RENDER_DIRECT3D11_WARP".as_ptr();
3154
3155/// A variable controlling whether to enable Vulkan Validation Layers.
3156///
3157/// This variable can be set to the following values:
3158///
3159/// - "0": Disable Validation Layer use
3160/// - "1": Enable Validation Layer use
3161///
3162/// By default, SDL does not use Vulkan Validation Layers.
3163///
3164/// ## Availability
3165/// This hint is available since SDL 3.2.0.
3166pub const SDL_HINT_RENDER_VULKAN_DEBUG: *const ::core::ffi::c_char =
3167 c"SDL_RENDER_VULKAN_DEBUG".as_ptr();
3168
3169/// A variable controlling whether to create the GPU device in debug mode.
3170///
3171/// This variable can be set to the following values:
3172///
3173/// - "0": Disable debug mode use (default)
3174/// - "1": Enable debug mode use
3175///
3176/// This hint should be set before creating a renderer.
3177///
3178/// ## Availability
3179/// This hint is available since SDL 3.2.0.
3180pub const SDL_HINT_RENDER_GPU_DEBUG: *const ::core::ffi::c_char = c"SDL_RENDER_GPU_DEBUG".as_ptr();
3181
3182/// A variable controlling whether to prefer a low-power GPU on multi-GPU
3183/// systems.
3184///
3185/// This variable can be set to the following values:
3186///
3187/// - "0": Prefer high-performance GPU (default)
3188/// - "1": Prefer low-power GPU
3189///
3190/// This hint should be set before creating a renderer.
3191///
3192/// ## Availability
3193/// This hint is available since SDL 3.2.0.
3194pub const SDL_HINT_RENDER_GPU_LOW_POWER: *const ::core::ffi::c_char =
3195 c"SDL_RENDER_GPU_LOW_POWER".as_ptr();
3196
3197/// A variable specifying which render driver to use.
3198///
3199/// If the application doesn't pick a specific renderer to use, this variable
3200/// specifies the name of the preferred renderer. If the preferred renderer
3201/// can't be initialized, creating a renderer will fail.
3202///
3203/// This variable is case insensitive and can be set to the following values:
3204///
3205/// - "direct3d"
3206/// - "direct3d11"
3207/// - "direct3d12"
3208/// - "opengl"
3209/// - "opengles2"
3210/// - "opengles"
3211/// - "metal"
3212/// - "vulkan"
3213/// - "gpu"
3214/// - "software"
3215///
3216/// This hint accepts a comma-separated list of driver names, and each will be
3217/// tried in the order listed when creating a renderer until one succeeds or
3218/// all of them fail.
3219///
3220/// The default varies by platform, but it's the first one in the list that is
3221/// available on the current platform.
3222///
3223/// This hint should be set before creating a renderer.
3224///
3225/// ## Availability
3226/// This hint is available since SDL 3.2.0.
3227pub const SDL_HINT_RENDER_DRIVER: *const ::core::ffi::c_char = c"SDL_RENDER_DRIVER".as_ptr();
3228
3229/// A variable controlling how the 2D render API renders lines.
3230///
3231/// The variable can be set to the following values:
3232///
3233/// - "0": Use the default line drawing method (Bresenham's line algorithm)
3234/// - "1": Use the driver point API using Bresenham's line algorithm (correct,
3235/// draws many points)
3236/// - "2": Use the driver line API (occasionally misses line endpoints based on
3237/// hardware driver quirks
3238/// - "3": Use the driver geometry API (correct, draws thicker diagonal lines)
3239///
3240/// This hint should be set before creating a renderer.
3241///
3242/// ## Availability
3243/// This hint is available since SDL 3.2.0.
3244pub const SDL_HINT_RENDER_LINE_METHOD: *const ::core::ffi::c_char =
3245 c"SDL_RENDER_LINE_METHOD".as_ptr();
3246
3247/// A variable controlling whether the Metal render driver select low power
3248/// device over default one.
3249///
3250/// The variable can be set to the following values:
3251///
3252/// - "0": Use the preferred OS device. (default)
3253/// - "1": Select a low power device.
3254///
3255/// This hint should be set before creating a renderer.
3256///
3257/// ## Availability
3258/// This hint is available since SDL 3.2.0.
3259pub const SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE: *const ::core::ffi::c_char =
3260 c"SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE".as_ptr();
3261
3262/// A variable controlling whether updates to the SDL screen surface should be
3263/// synchronized with the vertical refresh, to avoid tearing.
3264///
3265/// This hint overrides the application preference when creating a renderer.
3266///
3267/// The variable can be set to the following values:
3268///
3269/// - "0": Disable vsync. (default)
3270/// - "1": Enable vsync.
3271///
3272/// This hint should be set before creating a renderer.
3273///
3274/// ## Availability
3275/// This hint is available since SDL 3.2.0.
3276pub const SDL_HINT_RENDER_VSYNC: *const ::core::ffi::c_char = c"SDL_RENDER_VSYNC".as_ptr();
3277
3278/// A variable to control whether the return key on the soft keyboard should
3279/// hide the soft keyboard on Android and iOS.
3280///
3281/// This hint sets the default value of [`SDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN`].
3282///
3283/// The variable can be set to the following values:
3284///
3285/// - "0": The return key will be handled as a key event. (default)
3286/// - "1": The return key will hide the keyboard.
3287///
3288/// This hint can be set anytime.
3289///
3290/// ## Availability
3291/// This hint is available since SDL 3.2.0.
3292pub const SDL_HINT_RETURN_KEY_HIDES_IME: *const ::core::ffi::c_char =
3293 c"SDL_RETURN_KEY_HIDES_IME".as_ptr();
3294
3295/// A variable containing a list of ROG gamepad capable mice.
3296///
3297/// The format of the string is a comma separated list of USB VID/PID pairs in
3298/// hexadecimal form, e.g.
3299///
3300/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
3301///
3302/// The variable can also take the form of "@file", in which case the named
3303/// file will be loaded and interpreted as the value of the variable.
3304///
3305/// This hint should be set before SDL is initialized.
3306///
3307/// ## Availability
3308/// This hint is available since SDL 3.2.0.
3309///
3310/// ## See also
3311/// - [`SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED`]
3312pub const SDL_HINT_ROG_GAMEPAD_MICE: *const ::core::ffi::c_char = c"SDL_ROG_GAMEPAD_MICE".as_ptr();
3313
3314/// A variable containing a list of devices that are not ROG gamepad capable
3315/// mice.
3316///
3317/// This will override [`SDL_HINT_ROG_GAMEPAD_MICE`] and the built in device list.
3318///
3319/// The format of the string is a comma separated list of USB VID/PID pairs in
3320/// hexadecimal form, e.g.
3321///
3322/// `0xAAAA/0xBBBB,0xCCCC/0xDDDD`
3323///
3324/// The variable can also take the form of "@file", in which case the named
3325/// file will be loaded and interpreted as the value of the variable.
3326///
3327/// This hint should be set before SDL is initialized.
3328///
3329/// ## Availability
3330/// This hint is available since SDL 3.2.0.
3331pub const SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED: *const ::core::ffi::c_char =
3332 c"SDL_ROG_GAMEPAD_MICE_EXCLUDED".as_ptr();
3333
3334/// A variable controlling the width of the PS2's framebuffer in pixels.
3335///
3336/// By default, the variable is "640".
3337///
3338/// ## Availability
3339/// This hint is available since SDL 3.4.0.
3340pub const SDL_HINT_PS2_GS_WIDTH: *const ::core::ffi::c_char = c"SDL_PS2_GS_WIDTH".as_ptr();
3341
3342/// A variable controlling the height of the PS2's framebuffer in pixels.
3343///
3344/// By default, the variable is "448".
3345///
3346/// ## Availability
3347/// This hint is available since SDL 3.4.0.
3348pub const SDL_HINT_PS2_GS_HEIGHT: *const ::core::ffi::c_char = c"SDL_PS2_GS_HEIGHT".as_ptr();
3349
3350/// A variable controlling whether the signal is interlaced or progressive.
3351///
3352/// The variable can be set to the following values:
3353///
3354/// - "0": Image is interlaced. (default)
3355/// - "1": Image is progressive.
3356///
3357/// ## Availability
3358/// This hint is available since SDL 3.4.0.
3359pub const SDL_HINT_PS2_GS_PROGRESSIVE: *const ::core::ffi::c_char =
3360 c"SDL_PS2_GS_PROGRESSIVE".as_ptr();
3361
3362/// A variable controlling the video mode of the console.
3363///
3364/// The variable can be set to the following values:
3365///
3366/// - "": Console-native. (default)
3367/// - "NTSC": 60hz region.
3368/// - "PAL": 50hz region.
3369///
3370/// ## Availability
3371/// This hint is available since SDL 3.4.0.
3372pub const SDL_HINT_PS2_GS_MODE: *const ::core::ffi::c_char = c"SDL_PS2_GS_MODE".as_ptr();
3373
3374/// A variable controlling which Dispmanx layer to use on a Raspberry PI.
3375///
3376/// Also known as Z-order. The variable can take a negative or positive value.
3377/// The default is 10000.
3378///
3379/// This hint should be set before SDL is initialized.
3380///
3381/// ## Availability
3382/// This hint is available since SDL 3.2.0.
3383pub const SDL_HINT_RPI_VIDEO_LAYER: *const ::core::ffi::c_char = c"SDL_RPI_VIDEO_LAYER".as_ptr();
3384
3385/// Specify an "activity name" for screensaver inhibition.
3386///
3387/// Some platforms, notably Linux desktops, list the applications which are
3388/// inhibiting the screensaver or other power-saving features.
3389///
3390/// This hint lets you specify the "activity name" sent to the OS when
3391/// [`SDL_DisableScreenSaver()`] is used (or the screensaver is automatically
3392/// disabled). The contents of this hint are used when the screensaver is
3393/// disabled. You should use a string that describes what your program is doing
3394/// (and, therefore, why the screensaver is disabled). For example, "Playing a
3395/// game" or "Watching a video".
3396///
3397/// Setting this to "" or leaving it unset will have SDL use a reasonable
3398/// default: "Playing a game" or something similar.
3399///
3400/// This hint should be set before calling [`SDL_DisableScreenSaver()`]
3401///
3402/// ## Availability
3403/// This hint is available since SDL 3.2.0.
3404pub const SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME: *const ::core::ffi::c_char =
3405 c"SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME".as_ptr();
3406
3407/// A variable controlling whether SDL calls dbus_shutdown() on quit.
3408///
3409/// This is useful as a debug tool to validate memory leaks, but shouldn't ever
3410/// be set in production applications, as other libraries used by the
3411/// application might use dbus under the hood and this can cause crashes if
3412/// they continue after [`SDL_Quit()`].
3413///
3414/// The variable can be set to the following values:
3415///
3416/// - "0": SDL will not call dbus_shutdown() on quit. (default)
3417/// - "1": SDL will call dbus_shutdown() on quit.
3418///
3419/// This hint can be set anytime.
3420///
3421/// ## Availability
3422/// This hint is available since SDL 3.2.0.
3423pub const SDL_HINT_SHUTDOWN_DBUS_ON_QUIT: *const ::core::ffi::c_char =
3424 c"SDL_SHUTDOWN_DBUS_ON_QUIT".as_ptr();
3425
3426/// A variable that specifies a backend to use for title storage.
3427///
3428/// By default, SDL will try all available storage backends in a reasonable
3429/// order until it finds one that can work, but this hint allows the app or
3430/// user to force a specific target, such as "pc" if, say, you are on Steam but
3431/// want to avoid SteamRemoteStorage for title data.
3432///
3433/// This hint should be set before SDL is initialized.
3434///
3435/// ## Availability
3436/// This hint is available since SDL 3.2.0.
3437pub const SDL_HINT_STORAGE_TITLE_DRIVER: *const ::core::ffi::c_char =
3438 c"SDL_STORAGE_TITLE_DRIVER".as_ptr();
3439
3440/// A variable that specifies a backend to use for user storage.
3441///
3442/// By default, SDL will try all available storage backends in a reasonable
3443/// order until it finds one that can work, but this hint allows the app or
3444/// user to force a specific target, such as "pc" if, say, you are on Steam but
3445/// want to avoid SteamRemoteStorage for user data.
3446///
3447/// This hint should be set before SDL is initialized.
3448///
3449/// ## Availability
3450/// This hint is available since SDL 3.2.0.
3451pub const SDL_HINT_STORAGE_USER_DRIVER: *const ::core::ffi::c_char =
3452 c"SDL_STORAGE_USER_DRIVER".as_ptr();
3453
3454/// Specifies whether [`SDL_THREAD_PRIORITY_TIME_CRITICAL`] should be treated as
3455/// realtime.
3456///
3457/// On some platforms, like Linux, a realtime priority thread may be subject to
3458/// restrictions that require special handling by the application. This hint
3459/// exists to let SDL know that the app is prepared to handle said
3460/// restrictions.
3461///
3462/// On Linux, SDL will apply the following configuration to any thread that
3463/// becomes realtime:
3464///
3465/// - The SCHED_RESET_ON_FORK bit will be set on the scheduling policy,
3466/// - An RLIMIT_RTTIME budget will be configured to the rtkit specified limit.
3467/// - Exceeding this limit will result in the kernel sending SIGKILL to the
3468/// app, refer to the man pages for more information.
3469///
3470/// The variable can be set to the following values:
3471///
3472/// - "0": default platform specific behaviour
3473/// - "1": Force [`SDL_THREAD_PRIORITY_TIME_CRITICAL`] to a realtime scheduling
3474/// policy
3475///
3476/// This hint should be set before calling [`SDL_SetCurrentThreadPriority()`]
3477///
3478/// ## Availability
3479/// This hint is available since SDL 3.2.0.
3480pub const SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL: *const ::core::ffi::c_char =
3481 c"SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL".as_ptr();
3482
3483/// A string specifying additional information to use with
3484/// [`SDL_SetCurrentThreadPriority`].
3485///
3486/// By default [`SDL_SetCurrentThreadPriority`] will make appropriate system
3487/// changes in order to apply a thread priority. For example on systems using
3488/// pthreads the scheduler policy is changed automatically to a policy that
3489/// works well with a given priority. Code which has specific requirements can
3490/// override SDL's default behavior with this hint.
3491///
3492/// pthread hint values are "current", "other", "fifo" and "rr". Currently no
3493/// other platform hint values are defined but may be in the future.
3494///
3495/// On Linux, the kernel may send SIGKILL to realtime tasks which exceed the
3496/// distro configured execution budget for rtkit. This budget can be queried
3497/// through RLIMIT_RTTIME after calling [`SDL_SetCurrentThreadPriority()`].
3498///
3499/// This hint should be set before calling [`SDL_SetCurrentThreadPriority()`]
3500///
3501/// ## Availability
3502/// This hint is available since SDL 3.2.0.
3503pub const SDL_HINT_THREAD_PRIORITY_POLICY: *const ::core::ffi::c_char =
3504 c"SDL_THREAD_PRIORITY_POLICY".as_ptr();
3505
3506/// A variable that controls the timer resolution, in milliseconds.
3507///
3508/// The higher resolution the timer, the more frequently the CPU services timer
3509/// interrupts, and the more precise delays are, but this takes up power and
3510/// CPU time. This hint is only used on Windows.
3511///
3512/// See this blog post for more information:
3513/// <http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/>
3514///
3515/// The default value is "1".
3516///
3517/// If this variable is set to "0", the system timer resolution is not set.
3518///
3519/// This hint can be set anytime.
3520///
3521/// ## Availability
3522/// This hint is available since SDL 3.2.0.
3523pub const SDL_HINT_TIMER_RESOLUTION: *const ::core::ffi::c_char = c"SDL_TIMER_RESOLUTION".as_ptr();
3524
3525/// A variable controlling whether touch events should generate synthetic mouse
3526/// events.
3527///
3528/// The variable can be set to the following values:
3529///
3530/// - "0": Touch events will not generate mouse events.
3531/// - "1": Touch events will generate mouse events. (default)
3532///
3533/// This hint can be set anytime.
3534///
3535/// ## Availability
3536/// This hint is available since SDL 3.2.0.
3537pub const SDL_HINT_TOUCH_MOUSE_EVENTS: *const ::core::ffi::c_char =
3538 c"SDL_TOUCH_MOUSE_EVENTS".as_ptr();
3539
3540/// A variable controlling whether trackpads should be treated as touch
3541/// devices.
3542///
3543/// On macOS (and possibly other platforms in the future), SDL will report
3544/// touches on a trackpad as mouse input, which is generally what users expect
3545/// from this device; however, these are often actually full multitouch-capable
3546/// touch devices, so it might be preferable to some apps to treat them as
3547/// such.
3548///
3549/// The variable can be set to the following values:
3550///
3551/// - "0": Trackpad will send mouse events. (default)
3552/// - "1": Trackpad will send touch events.
3553///
3554/// This hint should be set before SDL is initialized.
3555///
3556/// ## Availability
3557/// This hint is available since SDL 3.2.0.
3558pub const SDL_HINT_TRACKPAD_IS_TOUCH_ONLY: *const ::core::ffi::c_char =
3559 c"SDL_TRACKPAD_IS_TOUCH_ONLY".as_ptr();
3560
3561/// A variable controlling whether the Android / tvOS remotes should be listed
3562/// as joystick devices, instead of sending keyboard events.
3563///
3564/// The variable can be set to the following values:
3565///
3566/// - "0": Remotes send enter/escape/arrow key events.
3567/// - "1": Remotes are available as 2 axis, 2 button joysticks. (default)
3568///
3569/// This hint should be set before SDL is initialized.
3570///
3571/// ## Availability
3572/// This hint is available since SDL 3.2.0.
3573pub const SDL_HINT_TV_REMOTE_AS_JOYSTICK: *const ::core::ffi::c_char =
3574 c"SDL_TV_REMOTE_AS_JOYSTICK".as_ptr();
3575
3576/// A variable controlling whether the screensaver is enabled.
3577///
3578/// The variable can be set to the following values:
3579///
3580/// - "0": Disable screensaver. (default)
3581/// - "1": Enable screensaver.
3582///
3583/// This hint should be set before SDL is initialized.
3584///
3585/// ## Availability
3586/// This hint is available since SDL 3.2.0.
3587pub const SDL_HINT_VIDEO_ALLOW_SCREENSAVER: *const ::core::ffi::c_char =
3588 c"SDL_VIDEO_ALLOW_SCREENSAVER".as_ptr();
3589
3590/// A comma separated list containing the names of the displays that SDL should
3591/// sort to the front of the display list.
3592///
3593/// When this hint is set, displays with matching name strings will be
3594/// prioritized in the list of displays, as exposed by calling
3595/// [`SDL_GetDisplays()`], with the first listed becoming the primary display. The
3596/// naming convention can vary depending on the environment, but it is usually
3597/// a connector name (e.g. 'DP-1', 'DP-2', 'HDMI-A-1', etc...).
3598///
3599/// On Wayland desktops, the connector names associated with displays can be
3600/// found in the `name` property of the info output from `wayland-info -i
3601/// wl_output`. On X11 desktops, the `xrandr` utility can be used to retrieve
3602/// the connector names associated with displays.
3603///
3604/// This hint is currently supported on the following drivers:
3605///
3606/// - KMSDRM (kmsdrm)
3607/// - Wayland (wayland)
3608/// - X11 (x11)
3609///
3610/// This hint should be set before SDL is initialized.
3611///
3612/// ## Availability
3613/// This hint is available since SDL 3.2.0.
3614pub const SDL_HINT_VIDEO_DISPLAY_PRIORITY: *const ::core::ffi::c_char =
3615 c"SDL_VIDEO_DISPLAY_PRIORITY".as_ptr();
3616
3617/// Tell the video driver that we only want a double buffer.
3618///
3619/// By default, most lowlevel 2D APIs will use a triple buffer scheme that
3620/// wastes no CPU time on waiting for vsync after issuing a flip, but
3621/// introduces a frame of latency. On the other hand, using a double buffer
3622/// scheme instead is recommended for cases where low latency is an important
3623/// factor because we save a whole frame of latency.
3624///
3625/// We do so by waiting for vsync immediately after issuing a flip, usually
3626/// just after eglSwapBuffers call in the backend's *_SwapWindow function.
3627///
3628/// This hint is currently supported on the following drivers:
3629///
3630/// - Raspberry Pi (raspberrypi)
3631/// - Wayland (wayland)
3632///
3633/// This hint should be set before SDL is initialized.
3634///
3635/// ## Availability
3636/// This hint is available since SDL 3.2.0.
3637pub const SDL_HINT_VIDEO_DOUBLE_BUFFER: *const ::core::ffi::c_char =
3638 c"SDL_VIDEO_DOUBLE_BUFFER".as_ptr();
3639
3640/// A variable that specifies a video backend to use.
3641///
3642/// By default, SDL will try all available video backends in a reasonable order
3643/// until it finds one that can work, but this hint allows the app or user to
3644/// force a specific target, such as "x11" if, say, you are on Wayland but want
3645/// to try talking to the X server instead.
3646///
3647/// This hint accepts a comma-separated list of driver names, and each will be
3648/// tried in the order listed during init, until one succeeds or all of them
3649/// fail.
3650///
3651/// This hint should be set before SDL is initialized.
3652///
3653/// ## Availability
3654/// This hint is available since SDL 3.2.0.
3655pub const SDL_HINT_VIDEO_DRIVER: *const ::core::ffi::c_char = c"SDL_VIDEO_DRIVER".as_ptr();
3656
3657/// A variable controlling whether the dummy video driver saves output frames.
3658///
3659/// - "0": Video frames are not saved to disk. (default)
3660/// - "1": Video frames are saved to files in the format "SDL_windowX-Y.bmp",
3661/// where X is the window ID, and Y is the frame number.
3662///
3663/// This hint can be set anytime.
3664///
3665/// ## Availability
3666/// This hint is available since SDL 3.2.0.
3667pub const SDL_HINT_VIDEO_DUMMY_SAVE_FRAMES: *const ::core::ffi::c_char =
3668 c"SDL_VIDEO_DUMMY_SAVE_FRAMES".as_ptr();
3669
3670/// If eglGetPlatformDisplay fails, fall back to calling eglGetDisplay.
3671///
3672/// The variable can be set to one of the following values:
3673///
3674/// - "0": Do not fall back to eglGetDisplay.
3675/// - "1": Fall back to eglGetDisplay if eglGetPlatformDisplay fails. (default)
3676///
3677/// This hint should be set before SDL is initialized.
3678///
3679/// ## Availability
3680/// This hint is available since SDL 3.2.0.
3681pub const SDL_HINT_VIDEO_EGL_ALLOW_GETDISPLAY_FALLBACK: *const ::core::ffi::c_char =
3682 c"SDL_VIDEO_EGL_ALLOW_GETDISPLAY_FALLBACK".as_ptr();
3683
3684/// A variable controlling whether the OpenGL context should be created with
3685/// EGL.
3686///
3687/// The variable can be set to the following values:
3688///
3689/// - "0": Use platform-specific GL context creation API (GLX, WGL, CGL, etc).
3690/// (default)
3691/// - "1": Use EGL
3692///
3693/// This hint should be set before SDL is initialized.
3694///
3695/// ## Availability
3696/// This hint is available since SDL 3.2.0.
3697pub const SDL_HINT_VIDEO_FORCE_EGL: *const ::core::ffi::c_char = c"SDL_VIDEO_FORCE_EGL".as_ptr();
3698
3699/// A variable that specifies the policy for fullscreen Spaces on macOS.
3700///
3701/// The variable can be set to the following values:
3702///
3703/// - "0": Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
3704/// [`SDL_WINDOW_RESIZABLE`] windows won't offer the "fullscreen" button on their
3705/// titlebars).
3706/// - "1": Enable Spaces support (FULLSCREEN_DESKTOP will use them and
3707/// [`SDL_WINDOW_RESIZABLE`] windows will offer the "fullscreen" button on their
3708/// titlebars). (default)
3709///
3710/// This hint should be set before creating a window.
3711///
3712/// ## Availability
3713/// This hint is available since SDL 3.2.0.
3714pub const SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES: *const ::core::ffi::c_char =
3715 c"SDL_VIDEO_MAC_FULLSCREEN_SPACES".as_ptr();
3716
3717/// A variable that specifies the menu visibility when a window is fullscreen
3718/// in Spaces on macOS.
3719///
3720/// The variable can be set to the following values:
3721///
3722/// - "0": The menu will be hidden when the window is in a fullscreen space,
3723/// and not accessible by moving the mouse to the top of the screen.
3724/// - "1": The menu will be accessible when the window is in a fullscreen
3725/// space.
3726/// - "auto": The menu will be hidden if fullscreen mode was toggled on
3727/// programmatically via `SDL_SetWindowFullscreen()`, and accessible if
3728/// fullscreen was entered via the "fullscreen" button on the window title
3729/// bar. (default)
3730///
3731/// This hint can be set anytime.
3732///
3733/// ## Availability
3734/// This hint is available since SDL 3.2.0.
3735pub const SDL_HINT_VIDEO_MAC_FULLSCREEN_MENU_VISIBILITY: *const ::core::ffi::c_char =
3736 c"SDL_VIDEO_MAC_FULLSCREEN_MENU_VISIBILITY".as_ptr();
3737
3738/// A variable indicating whether the metal layer drawable size should be
3739/// updated for the [`SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED`] event on macOS.
3740///
3741/// The variable can be set to the following values:
3742///
3743/// - "0": the metal layer drawable size will not be updated on the
3744/// [`SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED`] event.
3745/// - "1": the metal layer drawable size will be updated on the
3746/// [`SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED`] event. (default)
3747///
3748/// This hint should be set before [`SDL_Metal_CreateView`] called.
3749///
3750/// ## Availability
3751/// This hint is available since SDL 3.4.0.
3752pub const SDL_HINT_VIDEO_METAL_AUTO_RESIZE_DRAWABLE: *const ::core::ffi::c_char =
3753 c"SDL_VIDEO_METAL_AUTO_RESIZE_DRAWABLE".as_ptr();
3754
3755/// A variable controlling whether SDL will attempt to automatically set the
3756/// destination display to a mode most closely matching that of the previous
3757/// display if an exclusive fullscreen window is moved onto it.
3758///
3759/// The variable can be set to the following values:
3760///
3761/// - "0": SDL will not attempt to automatically set a matching mode on the
3762/// destination display. If an exclusive fullscreen window is moved to a new
3763/// display, the window will become fullscreen desktop.
3764/// - "1": SDL will attempt to automatically set a mode on the destination
3765/// display that most closely matches the mode of the display that the
3766/// exclusive fullscreen window was previously on. (default)
3767///
3768/// This hint can be set anytime.
3769///
3770/// ## Availability
3771/// This hint is available since SDL 3.4.0.
3772pub const SDL_HINT_VIDEO_MATCH_EXCLUSIVE_MODE_ON_MOVE: *const ::core::ffi::c_char =
3773 c"SDL_VIDEO_MATCH_EXCLUSIVE_MODE_ON_MOVE".as_ptr();
3774
3775/// A variable controlling whether fullscreen windows are minimized when they
3776/// lose focus.
3777///
3778/// The variable can be set to the following values:
3779///
3780/// - "0": Fullscreen windows will not be minimized when they lose focus.
3781/// - "1": Fullscreen windows are minimized when they lose focus.
3782/// - "auto": Fullscreen windows are minimized when they lose focus if they use
3783/// exclusive fullscreen modes, so the desktop video mode is restored.
3784/// (default)
3785///
3786/// This hint can be set anytime.
3787///
3788/// ## Availability
3789/// This hint is available since SDL 3.2.0.
3790pub const SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS: *const ::core::ffi::c_char =
3791 c"SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS".as_ptr();
3792
3793/// A variable controlling whether the offscreen video driver saves output
3794/// frames.
3795///
3796/// This only saves frames that are generated using software rendering, not
3797/// accelerated OpenGL rendering.
3798///
3799/// - "0": Video frames are not saved to disk. (default)
3800/// - "1": Video frames are saved to files in the format "SDL_windowX-Y.bmp",
3801/// where X is the window ID, and Y is the frame number.
3802///
3803/// This hint can be set anytime.
3804///
3805/// ## Availability
3806/// This hint is available since SDL 3.2.0.
3807pub const SDL_HINT_VIDEO_OFFSCREEN_SAVE_FRAMES: *const ::core::ffi::c_char =
3808 c"SDL_VIDEO_OFFSCREEN_SAVE_FRAMES".as_ptr();
3809
3810/// A variable controlling whether all window operations will block until
3811/// complete.
3812///
3813/// Window systems that run asynchronously may not have the results of window
3814/// operations that resize or move the window applied immediately upon the
3815/// return of the requesting function. Setting this hint will cause such
3816/// operations to block after every call until the pending operation has
3817/// completed. Setting this to '1' is the equivalent of calling
3818/// [`SDL_SyncWindow()`] after every function call.
3819///
3820/// Be aware that amount of time spent blocking while waiting for window
3821/// operations to complete can be quite lengthy, as animations may have to
3822/// complete, which can take upwards of multiple seconds in some cases.
3823///
3824/// The variable can be set to the following values:
3825///
3826/// - "0": Window operations are non-blocking. (default)
3827/// - "1": Window operations will block until completed.
3828///
3829/// This hint can be set anytime.
3830///
3831/// ## Availability
3832/// This hint is available since SDL 3.2.0.
3833pub const SDL_HINT_VIDEO_SYNC_WINDOW_OPERATIONS: *const ::core::ffi::c_char =
3834 c"SDL_VIDEO_SYNC_WINDOW_OPERATIONS".as_ptr();
3835
3836/// A variable controlling whether the libdecor Wayland backend is allowed to
3837/// be used.
3838///
3839/// libdecor is used over xdg-shell when xdg-decoration protocol is
3840/// unavailable.
3841///
3842/// The variable can be set to the following values:
3843///
3844/// - "0": libdecor use is disabled.
3845/// - "1": libdecor use is enabled. (default)
3846///
3847/// This hint should be set before SDL is initialized.
3848///
3849/// ## Availability
3850/// This hint is available since SDL 3.2.0.
3851pub const SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR: *const ::core::ffi::c_char =
3852 c"SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR".as_ptr();
3853
3854/// A variable controlling whether video mode emulation is enabled under
3855/// Wayland.
3856///
3857/// When this hint is set, a standard set of emulated CVT video modes will be
3858/// exposed for use by the application. If it is disabled, the only modes
3859/// exposed will be the logical desktop size and, in the case of a scaled
3860/// desktop, the native display resolution.
3861///
3862/// The variable can be set to the following values:
3863///
3864/// - "0": Video mode emulation is disabled.
3865/// - "1": Video mode emulation is enabled. (default)
3866///
3867/// This hint should be set before SDL is initialized.
3868///
3869/// ## Availability
3870/// This hint is available since SDL 3.2.0.
3871pub const SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION: *const ::core::ffi::c_char =
3872 c"SDL_VIDEO_WAYLAND_MODE_EMULATION".as_ptr();
3873
3874/// A variable controlling how modes with a non-native aspect ratio are
3875/// displayed under Wayland.
3876///
3877/// When this hint is set, the requested scaling will be used when displaying
3878/// fullscreen video modes that don't match the display's native aspect ratio.
3879/// This is contingent on compositor viewport support.
3880///
3881/// The variable can be set to the following values:
3882///
3883/// - "aspect" - Video modes will be displayed scaled, in their proper aspect
3884/// ratio, with black bars.
3885/// - "stretch" - Video modes will be scaled to fill the entire display.
3886/// (default)
3887/// - "none" - Video modes will be displayed as 1:1 with no scaling.
3888///
3889/// This hint should be set before creating a window.
3890///
3891/// ## Availability
3892/// This hint is available since SDL 3.2.0.
3893pub const SDL_HINT_VIDEO_WAYLAND_MODE_SCALING: *const ::core::ffi::c_char =
3894 c"SDL_VIDEO_WAYLAND_MODE_SCALING".as_ptr();
3895
3896/// A variable controlling whether the libdecor Wayland backend is preferred
3897/// over native decorations.
3898///
3899/// When this hint is set, libdecor will be used to provide window decorations,
3900/// even if xdg-decoration is available. (Note that, by default, libdecor will
3901/// use xdg-decoration itself if available).
3902///
3903/// The variable can be set to the following values:
3904///
3905/// - "0": libdecor is enabled only if server-side decorations are unavailable.
3906/// (default)
3907/// - "1": libdecor is always enabled if available.
3908///
3909/// This hint should be set before SDL is initialized.
3910///
3911/// ## Availability
3912/// This hint is available since SDL 3.2.0.
3913pub const SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR: *const ::core::ffi::c_char =
3914 c"SDL_VIDEO_WAYLAND_PREFER_LIBDECOR".as_ptr();
3915
3916/// A variable forcing non-DPI-aware Wayland windows to output at 1:1 scaling.
3917///
3918/// This must be set before initializing the video subsystem.
3919///
3920/// When this hint is set, Wayland windows that are not flagged as being
3921/// DPI-aware will be output with scaling designed to force 1:1 pixel mapping.
3922///
3923/// This is intended to allow legacy applications to be displayed without
3924/// desktop scaling being applied, and has issues with certain display
3925/// configurations, as this forces the window to behave in a way that Wayland
3926/// desktops were not designed to accommodate:
3927///
3928/// - Rounding errors can result with odd window sizes and/or desktop scales,
3929/// which can cause the window contents to appear slightly blurry.
3930/// - Positioning the window may be imprecise due to unit conversions and
3931/// rounding.
3932/// - The window may be unusably small on scaled desktops.
3933/// - The window may jump in size when moving between displays of different
3934/// scale factors.
3935/// - Displays may appear to overlap when using a multi-monitor setup with
3936/// scaling enabled.
3937/// - Possible loss of cursor precision due to the logical size of the window
3938/// being reduced.
3939///
3940/// New applications should be designed with proper DPI awareness handling
3941/// instead of enabling this.
3942///
3943/// The variable can be set to the following values:
3944///
3945/// - "0": Windows will be scaled normally.
3946/// - "1": Windows will be forced to scale to achieve 1:1 output.
3947///
3948/// This hint should be set before creating a window.
3949///
3950/// ## Availability
3951/// This hint is available since SDL 3.2.0.
3952pub const SDL_HINT_VIDEO_WAYLAND_SCALE_TO_DISPLAY: *const ::core::ffi::c_char =
3953 c"SDL_VIDEO_WAYLAND_SCALE_TO_DISPLAY".as_ptr();
3954
3955/// A variable specifying which shader compiler to preload when using the
3956/// Chrome ANGLE binaries.
3957///
3958/// SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It can
3959/// use two different sets of binaries, those compiled by the user from source
3960/// or those provided by the Chrome browser. In the later case, these binaries
3961/// require that SDL loads a DLL providing the shader compiler.
3962///
3963/// The variable can be set to the following values:
3964///
3965/// - "d3dcompiler_46.dll" - best for Vista or later. (default)
3966/// - "d3dcompiler_43.dll" - for XP support.
3967/// - "none" - do not load any library, useful if you compiled ANGLE from
3968/// source and included the compiler in your binaries.
3969///
3970/// This hint should be set before SDL is initialized.
3971///
3972/// ## Availability
3973/// This hint is available since SDL 3.2.0.
3974pub const SDL_HINT_VIDEO_WIN_D3DCOMPILER: *const ::core::ffi::c_char =
3975 c"SDL_VIDEO_WIN_D3DCOMPILER".as_ptr();
3976
3977/// A variable controlling whether SDL should call XSelectInput() to enable
3978/// input events on X11 windows wrapped by SDL windows.
3979///
3980/// The variable can be set to the following values:
3981///
3982/// - "0": Don't call XSelectInput(), assuming the native window code has done
3983/// it already.
3984/// - "1": Call XSelectInput() to enable input events. (default)
3985///
3986/// This hint should be set before creating a window.
3987///
3988/// ## Availability
3989/// This hint is available since SDL 3.2.10.
3990pub const SDL_HINT_VIDEO_X11_EXTERNAL_WINDOW_INPUT: *const ::core::ffi::c_char =
3991 c"SDL_VIDEO_X11_EXTERNAL_WINDOW_INPUT".as_ptr();
3992
3993/// A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint
3994/// should be used.
3995///
3996/// The variable can be set to the following values:
3997///
3998/// - "0": Disable _NET_WM_BYPASS_COMPOSITOR.
3999/// - "1": Enable _NET_WM_BYPASS_COMPOSITOR. (default)
4000///
4001/// This hint should be set before creating a window.
4002///
4003/// ## Availability
4004/// This hint is available since SDL 3.2.0.
4005pub const SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR: *const ::core::ffi::c_char =
4006 c"SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR".as_ptr();
4007
4008/// A variable controlling whether the X11 _NET_WM_PING protocol should be
4009/// supported.
4010///
4011/// By default SDL will use _NET_WM_PING, but for applications that know they
4012/// will not always be able to respond to ping requests in a timely manner they
4013/// can turn it off to avoid the window manager thinking the app is hung.
4014///
4015/// The variable can be set to the following values:
4016///
4017/// - "0": Disable _NET_WM_PING.
4018/// - "1": Enable _NET_WM_PING. (default)
4019///
4020/// This hint should be set before creating a window.
4021///
4022/// ## Availability
4023/// This hint is available since SDL 3.2.0.
4024pub const SDL_HINT_VIDEO_X11_NET_WM_PING: *const ::core::ffi::c_char =
4025 c"SDL_VIDEO_X11_NET_WM_PING".as_ptr();
4026
4027/// A variable controlling whether SDL uses DirectColor visuals.
4028///
4029/// The variable can be set to the following values:
4030///
4031/// - "0": Disable DirectColor visuals.
4032/// - "1": Enable DirectColor visuals. (default)
4033///
4034/// This hint should be set before initializing the video subsystem.
4035///
4036/// ## Availability
4037/// This hint is available since SDL 3.2.0.
4038pub const SDL_HINT_VIDEO_X11_NODIRECTCOLOR: *const ::core::ffi::c_char =
4039 c"SDL_VIDEO_X11_NODIRECTCOLOR".as_ptr();
4040
4041/// A variable forcing the content scaling factor for X11 displays.
4042///
4043/// The variable can be set to a floating point value in the range 1.0-10.0f
4044///
4045/// This hint should be set before SDL is initialized.
4046///
4047/// ## Availability
4048/// This hint is available since SDL 3.2.0.
4049pub const SDL_HINT_VIDEO_X11_SCALING_FACTOR: *const ::core::ffi::c_char =
4050 c"SDL_VIDEO_X11_SCALING_FACTOR".as_ptr();
4051
4052/// A variable forcing the visual ID used for X11 display modes.
4053///
4054/// This hint should be set before initializing the video subsystem.
4055///
4056/// ## Availability
4057/// This hint is available since SDL 3.2.0.
4058pub const SDL_HINT_VIDEO_X11_VISUALID: *const ::core::ffi::c_char =
4059 c"SDL_VIDEO_X11_VISUALID".as_ptr();
4060
4061/// A variable forcing the visual ID chosen for new X11 windows.
4062///
4063/// This hint should be set before creating a window.
4064///
4065/// ## Availability
4066/// This hint is available since SDL 3.2.0.
4067pub const SDL_HINT_VIDEO_X11_WINDOW_VISUALID: *const ::core::ffi::c_char =
4068 c"SDL_VIDEO_X11_WINDOW_VISUALID".as_ptr();
4069
4070/// A variable controlling whether the X11 XRandR extension should be used.
4071///
4072/// The variable can be set to the following values:
4073///
4074/// - "0": Disable XRandR.
4075/// - "1": Enable XRandR. (default)
4076///
4077/// This hint should be set before SDL is initialized.
4078///
4079/// ## Availability
4080/// This hint is available since SDL 3.2.0.
4081pub const SDL_HINT_VIDEO_X11_XRANDR: *const ::core::ffi::c_char = c"SDL_VIDEO_X11_XRANDR".as_ptr();
4082
4083/// A variable controlling whether touch should be enabled on the back panel of
4084/// the PlayStation Vita.
4085///
4086/// The variable can be set to the following values:
4087///
4088/// - "0": Disable touch on the back panel.
4089/// - "1": Enable touch on the back panel. (default)
4090///
4091/// This hint should be set before SDL is initialized.
4092///
4093/// ## Availability
4094/// This hint is available since SDL 3.2.0.
4095pub const SDL_HINT_VITA_ENABLE_BACK_TOUCH: *const ::core::ffi::c_char =
4096 c"SDL_VITA_ENABLE_BACK_TOUCH".as_ptr();
4097
4098/// A variable controlling whether touch should be enabled on the front panel
4099/// of the PlayStation Vita.
4100///
4101/// The variable can be set to the following values:
4102///
4103/// - "0": Disable touch on the front panel.
4104/// - "1": Enable touch on the front panel. (default)
4105///
4106/// This hint should be set before SDL is initialized.
4107///
4108/// ## Availability
4109/// This hint is available since SDL 3.2.0.
4110pub const SDL_HINT_VITA_ENABLE_FRONT_TOUCH: *const ::core::ffi::c_char =
4111 c"SDL_VITA_ENABLE_FRONT_TOUCH".as_ptr();
4112
4113/// A variable controlling the module path on the PlayStation Vita.
4114///
4115/// This hint defaults to "app0:module"
4116///
4117/// This hint should be set before SDL is initialized.
4118///
4119/// ## Availability
4120/// This hint is available since SDL 3.2.0.
4121pub const SDL_HINT_VITA_MODULE_PATH: *const ::core::ffi::c_char = c"SDL_VITA_MODULE_PATH".as_ptr();
4122
4123/// A variable controlling whether to perform PVR initialization on the
4124/// PlayStation Vita.
4125///
4126/// - "0": Skip PVR initialization.
4127/// - "1": Perform the normal PVR initialization. (default)
4128///
4129/// This hint should be set before SDL is initialized.
4130///
4131/// ## Availability
4132/// This hint is available since SDL 3.2.0.
4133pub const SDL_HINT_VITA_PVR_INIT: *const ::core::ffi::c_char = c"SDL_VITA_PVR_INIT".as_ptr();
4134
4135/// A variable overriding the resolution reported on the PlayStation Vita.
4136///
4137/// The variable can be set to the following values:
4138///
4139/// - "544": 544p (default)
4140/// - "720": 725p for PSTV
4141/// - "1080": 1088i for PSTV
4142///
4143/// This hint should be set before SDL is initialized.
4144///
4145/// ## Availability
4146/// This hint is available since SDL 3.2.0.
4147pub const SDL_HINT_VITA_RESOLUTION: *const ::core::ffi::c_char = c"SDL_VITA_RESOLUTION".as_ptr();
4148
4149/// A variable controlling whether OpenGL should be used instead of OpenGL ES
4150/// on the PlayStation Vita.
4151///
4152/// The variable can be set to the following values:
4153///
4154/// - "0": Use OpenGL ES. (default)
4155/// - "1": Use OpenGL.
4156///
4157/// This hint should be set before SDL is initialized.
4158///
4159/// ## Availability
4160/// This hint is available since SDL 3.2.0.
4161pub const SDL_HINT_VITA_PVR_OPENGL: *const ::core::ffi::c_char = c"SDL_VITA_PVR_OPENGL".as_ptr();
4162
4163/// A variable controlling which touchpad should generate synthetic mouse
4164/// events.
4165///
4166/// The variable can be set to the following values:
4167///
4168/// - "0": Only front touchpad should generate mouse events. (default)
4169/// - "1": Only back touchpad should generate mouse events.
4170/// - "2": Both touchpads should generate mouse events.
4171///
4172/// This hint can be set anytime.
4173///
4174/// ## Availability
4175/// This hint is available since SDL 3.2.0.
4176pub const SDL_HINT_VITA_TOUCH_MOUSE_DEVICE: *const ::core::ffi::c_char =
4177 c"SDL_VITA_TOUCH_MOUSE_DEVICE".as_ptr();
4178
4179/// A variable overriding the display index used in [`SDL_Vulkan_CreateSurface()`]
4180///
4181/// The display index starts at 0, which is the default.
4182///
4183/// This hint should be set before calling [`SDL_Vulkan_CreateSurface()`]
4184///
4185/// ## Availability
4186/// This hint is available since SDL 3.2.0.
4187pub const SDL_HINT_VULKAN_DISPLAY: *const ::core::ffi::c_char = c"SDL_VULKAN_DISPLAY".as_ptr();
4188
4189/// Specify the Vulkan library to load.
4190///
4191/// This hint should be set before creating a Vulkan window or calling
4192/// [`SDL_Vulkan_LoadLibrary()`].
4193///
4194/// ## Availability
4195/// This hint is available since SDL 3.2.0.
4196pub const SDL_HINT_VULKAN_LIBRARY: *const ::core::ffi::c_char = c"SDL_VULKAN_LIBRARY".as_ptr();
4197
4198/// A variable controlling how the fact chunk affects the loading of a WAVE
4199/// file.
4200///
4201/// The fact chunk stores information about the number of samples of a WAVE
4202/// file. The Standards Update from Microsoft notes that this value can be used
4203/// to 'determine the length of the data in seconds'. This is especially useful
4204/// for compressed formats (for which this is a mandatory chunk) if they
4205/// produce multiple sample frames per block and truncating the block is not
4206/// allowed. The fact chunk can exactly specify how many sample frames there
4207/// should be in this case.
4208///
4209/// Unfortunately, most application seem to ignore the fact chunk and so SDL
4210/// ignores it by default as well.
4211///
4212/// The variable can be set to the following values:
4213///
4214/// - "truncate" - Use the number of samples to truncate the wave data if the
4215/// fact chunk is present and valid.
4216/// - "strict" - Like "truncate", but raise an error if the fact chunk is
4217/// invalid, not present for non-PCM formats, or if the data chunk doesn't
4218/// have that many samples.
4219/// - "ignorezero" - Like "truncate", but ignore fact chunk if the number of
4220/// samples is zero.
4221/// - "ignore" - Ignore fact chunk entirely. (default)
4222///
4223/// This hint should be set before calling [`SDL_LoadWAV()`] or [`SDL_LoadWAV_IO()`]
4224///
4225/// ## Availability
4226/// This hint is available since SDL 3.2.0.
4227pub const SDL_HINT_WAVE_FACT_CHUNK: *const ::core::ffi::c_char = c"SDL_WAVE_FACT_CHUNK".as_ptr();
4228
4229/// A variable controlling the maximum number of chunks in a WAVE file.
4230///
4231/// This sets an upper bound on the number of chunks in a WAVE file to avoid
4232/// wasting time on malformed or corrupt WAVE files. This defaults to "10000".
4233///
4234/// This hint should be set before calling [`SDL_LoadWAV()`] or [`SDL_LoadWAV_IO()`]
4235///
4236/// ## Availability
4237/// This hint is available since SDL 3.2.0.
4238pub const SDL_HINT_WAVE_CHUNK_LIMIT: *const ::core::ffi::c_char = c"SDL_WAVE_CHUNK_LIMIT".as_ptr();
4239
4240/// A variable controlling how the size of the RIFF chunk affects the loading
4241/// of a WAVE file.
4242///
4243/// The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
4244/// file) is not always reliable. In case the size is wrong, it's possible to
4245/// just ignore it and step through the chunks until a fixed limit is reached.
4246///
4247/// Note that files that have trailing data unrelated to the WAVE file or
4248/// corrupt files may slow down the loading process without a reliable
4249/// boundary. By default, SDL stops after 10000 chunks to prevent wasting time.
4250/// Use [`SDL_HINT_WAVE_CHUNK_LIMIT`] to adjust this value.
4251///
4252/// The variable can be set to the following values:
4253///
4254/// - "force" - Always use the RIFF chunk size as a boundary for the chunk
4255/// search.
4256/// - "ignorezero" - Like "force", but a zero size searches up to 4 GiB.
4257/// (default)
4258/// - "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB.
4259/// - "maximum" - Search for chunks until the end of file. (not recommended)
4260///
4261/// This hint should be set before calling [`SDL_LoadWAV()`] or [`SDL_LoadWAV_IO()`]
4262///
4263/// ## Availability
4264/// This hint is available since SDL 3.2.0.
4265pub const SDL_HINT_WAVE_RIFF_CHUNK_SIZE: *const ::core::ffi::c_char =
4266 c"SDL_WAVE_RIFF_CHUNK_SIZE".as_ptr();
4267
4268/// A variable controlling how a truncated WAVE file is handled.
4269///
4270/// A WAVE file is considered truncated if any of the chunks are incomplete or
4271/// the data chunk size is not a multiple of the block size. By default, SDL
4272/// decodes until the first incomplete block, as most applications seem to do.
4273///
4274/// The variable can be set to the following values:
4275///
4276/// - "verystrict" - Raise an error if the file is truncated.
4277/// - "strict" - Like "verystrict", but the size of the RIFF chunk is ignored.
4278/// - "dropframe" - Decode until the first incomplete sample frame.
4279/// - "dropblock" - Decode until the first incomplete block. (default)
4280///
4281/// This hint should be set before calling [`SDL_LoadWAV()`] or [`SDL_LoadWAV_IO()`]
4282///
4283/// ## Availability
4284/// This hint is available since SDL 3.2.0.
4285pub const SDL_HINT_WAVE_TRUNCATION: *const ::core::ffi::c_char = c"SDL_WAVE_TRUNCATION".as_ptr();
4286
4287/// A variable controlling whether the window is activated when the
4288/// [`SDL_RaiseWindow`] function is called.
4289///
4290/// The variable can be set to the following values:
4291///
4292/// - "0": The window is not activated when the [`SDL_RaiseWindow`] function is
4293/// called.
4294/// - "1": The window is activated when the [`SDL_RaiseWindow`] function is called.
4295/// (default)
4296///
4297/// This hint can be set anytime.
4298///
4299/// ## Availability
4300/// This hint is available since SDL 3.2.0.
4301pub const SDL_HINT_WINDOW_ACTIVATE_WHEN_RAISED: *const ::core::ffi::c_char =
4302 c"SDL_WINDOW_ACTIVATE_WHEN_RAISED".as_ptr();
4303
4304/// A variable controlling whether the window is activated when the
4305/// [`SDL_ShowWindow`] function is called.
4306///
4307/// The variable can be set to the following values:
4308///
4309/// - "0": The window is not activated when the [`SDL_ShowWindow`] function is
4310/// called.
4311/// - "1": The window is activated when the [`SDL_ShowWindow`] function is called.
4312/// (default)
4313///
4314/// This hint can be set anytime.
4315///
4316/// ## Availability
4317/// This hint is available since SDL 3.2.0.
4318pub const SDL_HINT_WINDOW_ACTIVATE_WHEN_SHOWN: *const ::core::ffi::c_char =
4319 c"SDL_WINDOW_ACTIVATE_WHEN_SHOWN".as_ptr();
4320
4321/// If set to "0" then never set the top-most flag on an SDL Window even if the
4322/// application requests it.
4323///
4324/// This is a debugging aid for developers and not expected to be used by end
4325/// users.
4326///
4327/// The variable can be set to the following values:
4328///
4329/// - "0": don't allow topmost
4330/// - "1": allow topmost (default)
4331///
4332/// This hint can be set anytime.
4333///
4334/// ## Availability
4335/// This hint is available since SDL 3.2.0.
4336pub const SDL_HINT_WINDOW_ALLOW_TOPMOST: *const ::core::ffi::c_char =
4337 c"SDL_WINDOW_ALLOW_TOPMOST".as_ptr();
4338
4339/// A variable controlling whether the window frame and title bar are
4340/// interactive when the cursor is hidden.
4341///
4342/// The variable can be set to the following values:
4343///
4344/// - "0": The window frame is not interactive when the cursor is hidden (no
4345/// move, resize, etc).
4346/// - "1": The window frame is interactive when the cursor is hidden. (default)
4347///
4348/// This hint can be set anytime.
4349///
4350/// ## Availability
4351/// This hint is available since SDL 3.2.0.
4352pub const SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN: *const ::core::ffi::c_char =
4353 c"SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN".as_ptr();
4354
4355/// A variable controlling whether SDL generates window-close events for Alt+F4
4356/// on Windows.
4357///
4358/// The variable can be set to the following values:
4359///
4360/// - "0": SDL will only do normal key handling for Alt+F4.
4361/// - "1": SDL will generate a window-close event when it sees Alt+F4.
4362/// (default)
4363///
4364/// This hint can be set anytime.
4365///
4366/// ## Availability
4367/// This hint is available since SDL 3.2.0.
4368pub const SDL_HINT_WINDOWS_CLOSE_ON_ALT_F4: *const ::core::ffi::c_char =
4369 c"SDL_WINDOWS_CLOSE_ON_ALT_F4".as_ptr();
4370
4371/// A variable controlling whether menus can be opened with their keyboard
4372/// shortcut (Alt+mnemonic).
4373///
4374/// If the mnemonics are enabled, then menus can be opened by pressing the Alt
4375/// key and the corresponding mnemonic (for example, Alt+F opens the File
4376/// menu). However, in case an invalid mnemonic is pressed, Windows makes an
4377/// audible beep to convey that nothing happened. This is true even if the
4378/// window has no menu at all!
4379///
4380/// Because most SDL applications don't have menus, and some want to use the
4381/// Alt key for other purposes, SDL disables mnemonics (and the beeping) by
4382/// default.
4383///
4384/// Note: This also affects keyboard events: with mnemonics enabled, when a
4385/// menu is opened from the keyboard, you will not receive a KEYUP event for
4386/// the mnemonic key, and *might* not receive one for Alt.
4387///
4388/// The variable can be set to the following values:
4389///
4390/// - "0": Alt+mnemonic does nothing, no beeping. (default)
4391/// - "1": Alt+mnemonic opens menus, invalid mnemonics produce a beep.
4392///
4393/// This hint can be set anytime.
4394///
4395/// ## Availability
4396/// This hint is available since SDL 3.2.0.
4397pub const SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS: *const ::core::ffi::c_char =
4398 c"SDL_WINDOWS_ENABLE_MENU_MNEMONICS".as_ptr();
4399
4400/// A variable controlling whether the windows message loop is processed by
4401/// SDL.
4402///
4403/// The variable can be set to the following values:
4404///
4405/// - "0": The window message loop is not run.
4406/// - "1": The window message loop is processed in [`SDL_PumpEvents()`]. (default)
4407///
4408/// This hint can be set anytime.
4409///
4410/// ## Availability
4411/// This hint is available since SDL 3.2.0.
4412pub const SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP: *const ::core::ffi::c_char =
4413 c"SDL_WINDOWS_ENABLE_MESSAGELOOP".as_ptr();
4414
4415/// A variable controlling whether GameInput is used for raw keyboard and mouse
4416/// on Windows.
4417///
4418/// The variable can be set to the following values:
4419///
4420/// - "0": GameInput is not used for raw keyboard and mouse events. (default)
4421/// - "1": GameInput is used for raw keyboard and mouse events, if available.
4422///
4423/// This hint should be set before SDL is initialized.
4424///
4425/// ## Availability
4426/// This hint is available since SDL 3.2.0.
4427pub const SDL_HINT_WINDOWS_GAMEINPUT: *const ::core::ffi::c_char =
4428 c"SDL_WINDOWS_GAMEINPUT".as_ptr();
4429
4430/// A variable controlling whether raw keyboard events are used on Windows.
4431///
4432/// The variable can be set to the following values:
4433///
4434/// - "0": The Windows message loop is used for keyboard events. (default)
4435/// - "1": Low latency raw keyboard events are used.
4436///
4437/// This hint can be set anytime.
4438///
4439/// ## Availability
4440/// This hint is available since SDL 3.2.0.
4441pub const SDL_HINT_WINDOWS_RAW_KEYBOARD: *const ::core::ffi::c_char =
4442 c"SDL_WINDOWS_RAW_KEYBOARD".as_ptr();
4443
4444/// A variable controlling whether or not the RIDEV_NOHOTKEYS flag is set when
4445/// enabling Windows raw keyboard events.
4446///
4447/// This blocks any hotkeys that have been registered by applications from
4448/// having any effect beyond generating raw WM_INPUT events.
4449///
4450/// This flag does not affect system-hotkeys like ALT-TAB or CTRL-ALT-DEL, but
4451/// does affect the Windows Logo key since it is a userland hotkey registered
4452/// by explorer.exe.
4453///
4454/// The variable can be set to the following values:
4455///
4456/// - "0": Hotkeys are not excluded. (default)
4457/// - "1": Hotkeys are excluded.
4458///
4459/// This hint can be set anytime.
4460///
4461/// ## Availability
4462/// This hint is available since SDL 3.4.0.
4463pub const SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYS: *const ::core::ffi::c_char =
4464 c"SDL_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYS".as_ptr();
4465
4466/// A variable controlling whether the RIDEV_INPUTSINK flag is set when
4467/// enabling Windows raw keyboard events.
4468///
4469/// This enables the window to still receive input even if not in foreground.
4470///
4471/// Focused windows that receive text input will still prevent input events from triggering.
4472///
4473/// - "0": Input is not received when not in focus or foreground. (default)
4474/// - "1": Input will be received even when not in focus or foreground.
4475///
4476/// This hint can be set anytime.
4477///
4478/// ## Availability
4479/// This hint is available since SDL 3.4.4.
4480pub const SDL_HINT_WINDOWS_RAW_KEYBOARD_INPUTSINK: *const ::core::ffi::c_char =
4481 c"SDL_WINDOWS_RAW_KEYBOARD_INPUTSINK".as_ptr();
4482
4483/// A variable controlling whether SDL uses Kernel Semaphores on Windows.
4484///
4485/// Kernel Semaphores are inter-process and require a context switch on every
4486/// interaction. On Windows 8 and newer, the WaitOnAddress API is available.
4487/// Using that and atomics to implement semaphores increases performance. SDL
4488/// will fall back to Kernel Objects on older OS versions or if forced to by
4489/// this hint.
4490///
4491/// The variable can be set to the following values:
4492///
4493/// - "0": Use Atomics and WaitOnAddress API when available, otherwise fall
4494/// back to Kernel Objects. (default)
4495/// - "1": Force the use of Kernel Objects in all cases.
4496///
4497/// This hint should be set before SDL is initialized.
4498///
4499/// ## Availability
4500/// This hint is available since SDL 3.2.0.
4501pub const SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL: *const ::core::ffi::c_char =
4502 c"SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL".as_ptr();
4503
4504/// A variable to specify custom icon resource id from RC file on Windows
4505/// platform.
4506///
4507/// This hint should be set before SDL is initialized.
4508///
4509/// ## Availability
4510/// This hint is available since SDL 3.2.0.
4511pub const SDL_HINT_WINDOWS_INTRESOURCE_ICON: *const ::core::ffi::c_char =
4512 c"SDL_WINDOWS_INTRESOURCE_ICON".as_ptr();
4513
4514/// A variable to specify custom icon resource id from RC file on Windows
4515/// platform.
4516///
4517/// This hint should be set before SDL is initialized.
4518///
4519/// ## Availability
4520/// This hint is available since SDL 3.2.0.
4521pub const SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL: *const ::core::ffi::c_char =
4522 c"SDL_WINDOWS_INTRESOURCE_ICON_SMALL".as_ptr();
4523
4524/// A variable controlling whether SDL uses the D3D9Ex API introduced in
4525/// Windows Vista, instead of normal D3D9.
4526///
4527/// Direct3D 9Ex contains changes to state management that can eliminate device
4528/// loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may
4529/// require some changes to your application to cope with the new behavior, so
4530/// this is disabled by default.
4531///
4532/// For more information on Direct3D 9Ex, see:
4533///
4534/// - <https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex>
4535/// - <https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements>
4536///
4537/// The variable can be set to the following values:
4538///
4539/// - "0": Use the original Direct3D 9 API. (default)
4540/// - "1": Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex
4541/// is unavailable)
4542///
4543/// This hint should be set before SDL is initialized.
4544///
4545/// ## Availability
4546/// This hint is available since SDL 3.2.0.
4547pub const SDL_HINT_WINDOWS_USE_D3D9EX: *const ::core::ffi::c_char =
4548 c"SDL_WINDOWS_USE_D3D9EX".as_ptr();
4549
4550/// A variable controlling whether SDL will clear the window contents when the
4551/// WM_ERASEBKGND message is received.
4552///
4553/// The variable can be set to the following values:
4554///
4555/// - "0"/"never": Never clear the window.
4556/// - "1"/"initial": Clear the window when the first WM_ERASEBKGND event fires.
4557/// (default)
4558/// - "2"/"always": Clear the window on every WM_ERASEBKGND event.
4559///
4560/// This hint should be set before creating a window.
4561///
4562/// ## Availability
4563/// This hint is available since SDL 3.2.0.
4564pub const SDL_HINT_WINDOWS_ERASE_BACKGROUND_MODE: *const ::core::ffi::c_char =
4565 c"SDL_WINDOWS_ERASE_BACKGROUND_MODE".as_ptr();
4566
4567/// A variable controlling whether X11 windows are marked as override-redirect.
4568///
4569/// If set, this _might_ increase framerate at the expense of the desktop not
4570/// working as expected. Override-redirect windows aren't noticed by the window
4571/// manager at all.
4572///
4573/// You should probably only use this for fullscreen windows, and you probably
4574/// shouldn't even use it for that. But it's here if you want to try!
4575///
4576/// The variable can be set to the following values:
4577///
4578/// - "0": Do not mark the window as override-redirect. (default)
4579/// - "1": Mark the window as override-redirect.
4580///
4581/// This hint should be set before creating a window.
4582///
4583/// ## Availability
4584/// This hint is available since SDL 3.2.0.
4585pub const SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT: *const ::core::ffi::c_char =
4586 c"SDL_X11_FORCE_OVERRIDE_REDIRECT".as_ptr();
4587
4588/// A variable specifying the type of an X11 window.
4589///
4590/// During [`SDL_CreateWindow`], SDL uses the _NET_WM_WINDOW_TYPE X11 property to
4591/// report to the window manager the type of window it wants to create. This
4592/// might be set to various things if [`SDL_WINDOW_TOOLTIP`] or
4593/// [`SDL_WINDOW_POPUP_MENU`], etc, were specified. For "normal" windows that
4594/// haven't set a specific type, this hint can be used to specify a custom
4595/// type. For example, a dock window might set this to
4596/// "_NET_WM_WINDOW_TYPE_DOCK".
4597///
4598/// This hint should be set before creating a window.
4599///
4600/// ## Availability
4601/// This hint is available since SDL 3.2.0.
4602pub const SDL_HINT_X11_WINDOW_TYPE: *const ::core::ffi::c_char = c"SDL_X11_WINDOW_TYPE".as_ptr();
4603
4604/// Specify the XCB library to load for the X11 driver.
4605///
4606/// The default is platform-specific, often "libX11-xcb.so.1".
4607///
4608/// This hint should be set before initializing the video subsystem.
4609///
4610/// ## Availability
4611/// This hint is available since SDL 3.2.0.
4612pub const SDL_HINT_X11_XCB_LIBRARY: *const ::core::ffi::c_char = c"SDL_X11_XCB_LIBRARY".as_ptr();
4613
4614/// A variable controlling whether XInput should be used for controller
4615/// handling.
4616///
4617/// The variable can be set to the following values:
4618///
4619/// - "0": XInput is not enabled.
4620/// - "1": XInput is enabled. (default)
4621///
4622/// This hint should be set before SDL is initialized.
4623///
4624/// ## Availability
4625/// This hint is available since SDL 3.2.0.
4626pub const SDL_HINT_XINPUT_ENABLED: *const ::core::ffi::c_char = c"SDL_XINPUT_ENABLED".as_ptr();
4627
4628/// A variable controlling response to [`SDL_assert`] failures.
4629///
4630/// The variable can be set to the following case-sensitive values:
4631///
4632/// - "abort": Program terminates immediately.
4633/// - "break": Program triggers a debugger breakpoint.
4634/// - "retry": Program reruns the SDL_assert's test again.
4635/// - "ignore": Program continues on, ignoring this assertion failure this
4636/// time.
4637/// - "always_ignore": Program continues on, ignoring this assertion failure
4638/// for the rest of the run.
4639///
4640/// Note that [`SDL_SetAssertionHandler`] offers a programmatic means to deal with
4641/// assertion failures through a callback, and this hint is largely intended to
4642/// be used via environment variables by end users and automated tools.
4643///
4644/// This hint should be set before an assertion failure is triggered and can be
4645/// changed at any time.
4646///
4647/// ## Availability
4648/// This hint is available since SDL 3.2.0.
4649pub const SDL_HINT_ASSERT: *const ::core::ffi::c_char = c"SDL_ASSERT".as_ptr();
4650
4651/// A variable controlling whether pen events should generate synthetic mouse
4652/// events.
4653///
4654/// The variable can be set to the following values:
4655///
4656/// - "0": Pen events will not generate mouse events.
4657/// - "1": Pen events will generate mouse events. (default)
4658///
4659/// This hint can be set anytime.
4660///
4661/// ## Availability
4662/// This hint is available since SDL 3.2.0.
4663pub const SDL_HINT_PEN_MOUSE_EVENTS: *const ::core::ffi::c_char = c"SDL_PEN_MOUSE_EVENTS".as_ptr();
4664
4665/// A variable controlling whether pen events should generate synthetic touch
4666/// events.
4667///
4668/// The variable can be set to the following values:
4669///
4670/// - "0": Pen events will not generate touch events.
4671/// - "1": Pen events will generate touch events. (default)
4672///
4673/// This hint can be set anytime.
4674///
4675/// ## Availability
4676/// This hint is available since SDL 3.2.0.
4677pub const SDL_HINT_PEN_TOUCH_EVENTS: *const ::core::ffi::c_char = c"SDL_PEN_TOUCH_EVENTS".as_ptr();
4678
4679/// An enumeration of hint priorities.
4680///
4681/// ## Availability
4682/// This enum is available since SDL 3.2.0.
4683///
4684/// ## Known values (`sdl3-sys`)
4685/// | Associated constant | Global constant | Description |
4686/// | ------------------- | --------------- | ----------- |
4687/// | [`DEFAULT`](SDL_HintPriority::DEFAULT) | [`SDL_HINT_DEFAULT`] | |
4688/// | [`NORMAL`](SDL_HintPriority::NORMAL) | [`SDL_HINT_NORMAL`] | |
4689/// | [`OVERRIDE`](SDL_HintPriority::OVERRIDE) | [`SDL_HINT_OVERRIDE`] | |
4690#[repr(transparent)]
4691#[derive(Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
4692pub struct SDL_HintPriority(pub ::core::ffi::c_int);
4693
4694impl ::core::cmp::PartialEq<::core::ffi::c_int> for SDL_HintPriority {
4695 #[inline(always)]
4696 fn eq(&self, other: &::core::ffi::c_int) -> bool {
4697 &self.0 == other
4698 }
4699}
4700
4701impl ::core::cmp::PartialEq<SDL_HintPriority> for ::core::ffi::c_int {
4702 #[inline(always)]
4703 fn eq(&self, other: &SDL_HintPriority) -> bool {
4704 self == &other.0
4705 }
4706}
4707
4708impl From<SDL_HintPriority> for ::core::ffi::c_int {
4709 #[inline(always)]
4710 fn from(value: SDL_HintPriority) -> Self {
4711 value.0
4712 }
4713}
4714
4715#[cfg(feature = "debug-impls")]
4716impl ::core::fmt::Debug for SDL_HintPriority {
4717 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4718 #[allow(unreachable_patterns)]
4719 f.write_str(match *self {
4720 Self::DEFAULT => "SDL_HINT_DEFAULT",
4721 Self::NORMAL => "SDL_HINT_NORMAL",
4722 Self::OVERRIDE => "SDL_HINT_OVERRIDE",
4723
4724 _ => return write!(f, "SDL_HintPriority({})", self.0),
4725 })
4726 }
4727}
4728
4729impl SDL_HintPriority {
4730 pub const DEFAULT: Self = Self((0 as ::core::ffi::c_int));
4731 pub const NORMAL: Self = Self((1 as ::core::ffi::c_int));
4732 pub const OVERRIDE: Self = Self((2 as ::core::ffi::c_int));
4733}
4734
4735pub const SDL_HINT_DEFAULT: SDL_HintPriority = SDL_HintPriority::DEFAULT;
4736pub const SDL_HINT_NORMAL: SDL_HintPriority = SDL_HintPriority::NORMAL;
4737pub const SDL_HINT_OVERRIDE: SDL_HintPriority = SDL_HintPriority::OVERRIDE;
4738
4739impl SDL_HintPriority {
4740 /// Initialize a `SDL_HintPriority` from a raw value.
4741 #[inline(always)]
4742 pub const fn new(value: ::core::ffi::c_int) -> Self {
4743 Self(value)
4744 }
4745}
4746
4747impl SDL_HintPriority {
4748 /// Get a copy of the inner raw value.
4749 #[inline(always)]
4750 pub const fn value(&self) -> ::core::ffi::c_int {
4751 self.0
4752 }
4753}
4754
4755#[cfg(feature = "metadata")]
4756impl sdl3_sys::metadata::GroupMetadata for SDL_HintPriority {
4757 const GROUP_METADATA: &'static sdl3_sys::metadata::Group =
4758 &crate::metadata::hints::METADATA_SDL_HintPriority;
4759}
4760
4761unsafe extern "C" {
4762 /// Set a hint with a specific priority.
4763 ///
4764 /// The priority controls the behavior when setting a hint that already has a
4765 /// value. Hints will replace existing hints of their priority and lower.
4766 /// Environment variables are considered to have override priority.
4767 ///
4768 /// ## Parameters
4769 /// - `name`: the hint to set.
4770 /// - `value`: the value of the hint variable.
4771 /// - `priority`: the [`SDL_HintPriority`] level for the hint.
4772 ///
4773 /// ## Return value
4774 /// Returns true on success or false on failure; call [`SDL_GetError()`] for more
4775 /// information.
4776 ///
4777 /// ## Thread safety
4778 /// It is safe to call this function from any thread.
4779 ///
4780 /// ## Availability
4781 /// This function is available since SDL 3.2.0.
4782 ///
4783 /// ## See also
4784 /// - [`SDL_GetHint`]
4785 /// - [`SDL_ResetHint`]
4786 /// - [`SDL_SetHint`]
4787 pub fn SDL_SetHintWithPriority(
4788 name: *const ::core::ffi::c_char,
4789 value: *const ::core::ffi::c_char,
4790 priority: SDL_HintPriority,
4791 ) -> ::core::primitive::bool;
4792}
4793
4794unsafe extern "C" {
4795 /// Set a hint with normal priority.
4796 ///
4797 /// Hints will not be set if there is an existing override hint or environment
4798 /// variable that takes precedence. You can use [`SDL_SetHintWithPriority()`] to
4799 /// set the hint with override priority instead.
4800 ///
4801 /// ## Parameters
4802 /// - `name`: the hint to set.
4803 /// - `value`: the value of the hint variable.
4804 ///
4805 /// ## Return value
4806 /// Returns true on success or false on failure; call [`SDL_GetError()`] for more
4807 /// information.
4808 ///
4809 /// ## Thread safety
4810 /// It is safe to call this function from any thread.
4811 ///
4812 /// ## Availability
4813 /// This function is available since SDL 3.2.0.
4814 ///
4815 /// ## See also
4816 /// - [`SDL_GetHint`]
4817 /// - [`SDL_ResetHint`]
4818 /// - [`SDL_SetHintWithPriority`]
4819 pub fn SDL_SetHint(
4820 name: *const ::core::ffi::c_char,
4821 value: *const ::core::ffi::c_char,
4822 ) -> ::core::primitive::bool;
4823}
4824
4825unsafe extern "C" {
4826 /// Reset a hint to the default value.
4827 ///
4828 /// This will reset a hint to the value of the environment variable, or NULL if
4829 /// the environment isn't set. Callbacks will be called normally with this
4830 /// change.
4831 ///
4832 /// ## Parameters
4833 /// - `name`: the hint to set.
4834 ///
4835 /// ## Return value
4836 /// Returns true on success or false on failure; call [`SDL_GetError()`] for more
4837 /// information.
4838 ///
4839 /// ## Thread safety
4840 /// It is safe to call this function from any thread.
4841 ///
4842 /// ## Availability
4843 /// This function is available since SDL 3.2.0.
4844 ///
4845 /// ## See also
4846 /// - [`SDL_SetHint`]
4847 /// - [`SDL_ResetHints`]
4848 pub fn SDL_ResetHint(name: *const ::core::ffi::c_char) -> ::core::primitive::bool;
4849}
4850
4851unsafe extern "C" {
4852 /// Reset all hints to the default values.
4853 ///
4854 /// This will reset all hints to the value of the associated environment
4855 /// variable, or NULL if the environment isn't set. Callbacks will be called
4856 /// normally with this change.
4857 ///
4858 /// ## Thread safety
4859 /// It is safe to call this function from any thread.
4860 ///
4861 /// ## Availability
4862 /// This function is available since SDL 3.2.0.
4863 ///
4864 /// ## See also
4865 /// - [`SDL_ResetHint`]
4866 pub fn SDL_ResetHints();
4867}
4868
4869unsafe extern "C" {
4870 /// Get the value of a hint.
4871 ///
4872 /// ## Parameters
4873 /// - `name`: the hint to query.
4874 ///
4875 /// ## Return value
4876 /// Returns the string value of a hint or NULL if the hint isn't set.
4877 ///
4878 /// ## Thread safety
4879 /// It is safe to call this function from any thread.
4880 ///
4881 /// ## Availability
4882 /// This function is available since SDL 3.2.0.
4883 ///
4884 /// ## See also
4885 /// - [`SDL_SetHint`]
4886 /// - [`SDL_SetHintWithPriority`]
4887 pub fn SDL_GetHint(name: *const ::core::ffi::c_char) -> *const ::core::ffi::c_char;
4888}
4889
4890unsafe extern "C" {
4891 /// Get the boolean value of a hint variable.
4892 ///
4893 /// ## Parameters
4894 /// - `name`: the name of the hint to get the boolean value from.
4895 /// - `default_value`: the value to return if the hint does not exist.
4896 ///
4897 /// ## Return value
4898 /// Returns the boolean value of a hint or the provided default value if the
4899 /// hint does not exist.
4900 ///
4901 /// ## Thread safety
4902 /// It is safe to call this function from any thread.
4903 ///
4904 /// ## Availability
4905 /// This function is available since SDL 3.2.0.
4906 ///
4907 /// ## See also
4908 /// - [`SDL_GetHint`]
4909 /// - [`SDL_SetHint`]
4910 pub fn SDL_GetHintBoolean(
4911 name: *const ::core::ffi::c_char,
4912 default_value: ::core::primitive::bool,
4913 ) -> ::core::primitive::bool;
4914}
4915
4916/// A callback used to send notifications of hint value changes.
4917///
4918/// This is called an initial time during [`SDL_AddHintCallback`] with the hint's
4919/// current value, and then again each time the hint's value changes. In the
4920/// initial call, the current value is in both `oldValue` and `newValue`.
4921///
4922/// ## Parameters
4923/// - `userdata`: what was passed as `userdata` to [`SDL_AddHintCallback()`].
4924/// - `name`: what was passed as `name` to [`SDL_AddHintCallback()`].
4925/// - `oldValue`: the previous hint value.
4926/// - `newValue`: the new value hint is to be set to.
4927///
4928/// ## Thread safety
4929/// This callback is fired from whatever thread is setting a new
4930/// hint value. SDL holds a lock on the hint subsystem when
4931/// calling this callback.
4932///
4933/// ## Availability
4934/// This datatype is available since SDL 3.2.0.
4935///
4936/// ## See also
4937/// - [`SDL_AddHintCallback`]
4938pub type SDL_HintCallback = ::core::option::Option<
4939 unsafe extern "C" fn(
4940 userdata: *mut ::core::ffi::c_void,
4941 name: *const ::core::ffi::c_char,
4942 oldValue: *const ::core::ffi::c_char,
4943 newValue: *const ::core::ffi::c_char,
4944 ),
4945>;
4946
4947unsafe extern "C" {
4948 /// Add a function to watch a particular hint.
4949 ///
4950 /// The callback function is called _during_ this function, to provide it an
4951 /// initial value, and again each time the hint's value changes.
4952 ///
4953 /// ## Parameters
4954 /// - `name`: the hint to watch.
4955 /// - `callback`: An [`SDL_HintCallback`] function that will be called when the
4956 /// hint value changes.
4957 /// - `userdata`: a pointer to pass to the callback function.
4958 ///
4959 /// ## Return value
4960 /// Returns true on success or false on failure; call [`SDL_GetError()`] for more
4961 /// information.
4962 ///
4963 /// ## Thread safety
4964 /// It is safe to call this function from any thread.
4965 ///
4966 /// ## Availability
4967 /// This function is available since SDL 3.2.0.
4968 ///
4969 /// ## See also
4970 /// - [`SDL_RemoveHintCallback`]
4971 pub fn SDL_AddHintCallback(
4972 name: *const ::core::ffi::c_char,
4973 callback: SDL_HintCallback,
4974 userdata: *mut ::core::ffi::c_void,
4975 ) -> ::core::primitive::bool;
4976}
4977
4978unsafe extern "C" {
4979 /// Remove a function watching a particular hint.
4980 ///
4981 /// ## Parameters
4982 /// - `name`: the hint being watched.
4983 /// - `callback`: an [`SDL_HintCallback`] function that will be called when the
4984 /// hint value changes.
4985 /// - `userdata`: a pointer being passed to the callback function.
4986 ///
4987 /// ## Thread safety
4988 /// It is safe to call this function from any thread.
4989 ///
4990 /// ## Availability
4991 /// This function is available since SDL 3.2.0.
4992 ///
4993 /// ## See also
4994 /// - [`SDL_AddHintCallback`]
4995 pub fn SDL_RemoveHintCallback(
4996 name: *const ::core::ffi::c_char,
4997 callback: SDL_HintCallback,
4998 userdata: *mut ::core::ffi::c_void,
4999 );
5000}
5001
5002#[cfg(doc)]
5003use crate::everything::*;