+// values for window scaling
+#define WINDOW_SCALING_NOT_AVAILABLE FALSE
+#define WINDOW_SCALING_AVAILABLE TRUE
+
+#define MIN_WINDOW_SCALING_PERCENT 30
+#define STD_WINDOW_SCALING_PERCENT 100
+#define MAX_WINDOW_SCALING_PERCENT 400
+#define STEP_WINDOW_SCALING_PERCENT 10
+
+// values for window scaling quality
+#define SCALING_QUALITY_NEAREST "nearest"
+#define SCALING_QUALITY_LINEAR "linear"
+#define SCALING_QUALITY_BEST "best"
+
+#define SCALING_QUALITY_DEFAULT SCALING_QUALITY_LINEAR
+
+// values for screen rendering mode
+#define STR_SPECIAL_RENDERING_OFF "stream_texture_only"
+#define STR_SPECIAL_RENDERING_BITMAP "bitmap_and_stream_texture"
+#define STR_SPECIAL_RENDERING_TARGET "target_texture_only"
+#define STR_SPECIAL_RENDERING_DOUBLE "stream_and_target_texture"
+
+#if defined(PLATFORM_EMSCRIPTEN)
+#define STR_SPECIAL_RENDERING_DEFAULT STR_SPECIAL_RENDERING_BITMAP
+#else
+#define STR_SPECIAL_RENDERING_DEFAULT STR_SPECIAL_RENDERING_DOUBLE
+#endif
+
+#define SPECIAL_RENDERING_OFF 0
+#define SPECIAL_RENDERING_BITMAP 1
+#define SPECIAL_RENDERING_TARGET 2
+#define SPECIAL_RENDERING_DOUBLE 3
+
+// values for vertical screen retrace synchronization (vsync)
+#define STR_VSYNC_MODE_OFF "off"
+#define STR_VSYNC_MODE_NORMAL "normal"
+#define STR_VSYNC_MODE_ADAPTIVE "adaptive"
+
+#define STR_VSYNC_MODE_DEFAULT STR_VSYNC_MODE_OFF
+
+#define VSYNC_MODE_OFF 0
+#define VSYNC_MODE_NORMAL 1
+#define VSYNC_MODE_ADAPTIVE -1
+
+#define VSYNC_MODE_DEFAULT VSYNC_MODE_OFF
+
+#define VSYNC_MODE_STR_TO_INT(s) \
+ (strEqual((s), STR_VSYNC_MODE_NORMAL) ? VSYNC_MODE_NORMAL : \
+ strEqual((s), STR_VSYNC_MODE_ADAPTIVE) ? VSYNC_MODE_ADAPTIVE : \
+ VSYNC_MODE_OFF)
+
+#define VSYNC_MODE_INT_TO_STR(i) \
+ ((i) == VSYNC_MODE_NORMAL ? STR_VSYNC_MODE_NORMAL : \
+ (i) == VSYNC_MODE_ADAPTIVE ? STR_VSYNC_MODE_ADAPTIVE : \
+ STR_VSYNC_MODE_OFF)
+
+// values for network server settings
+#define STR_NETWORK_AUTO_DETECT "auto_detect_network_server"
+#define STR_NETWORK_AUTO_DETECT_SETUP "(auto detect network server)"
+
+// values for touch control
+#define TOUCH_CONTROL_OFF "off"
+#define TOUCH_CONTROL_VIRTUAL_BUTTONS "virtual_buttons"
+#define TOUCH_CONTROL_WIPE_GESTURES "wipe_gestures"
+#define TOUCH_CONTROL_FOLLOW_FINGER "follow_finger"
+
+#if defined(PLATFORM_ANDROID)
+#define TOUCH_CONTROL_DEFAULT TOUCH_CONTROL_VIRTUAL_BUTTONS
+#else
+#define TOUCH_CONTROL_DEFAULT TOUCH_CONTROL_OFF
+#endif
+
+#define TOUCH_MOVE_DISTANCE_DEFAULT 2
+#define TOUCH_DROP_DISTANCE_DEFAULT 5
+#define TOUCH_TRANSPARENCY_DEFAULT 50
+
+#define ALPHA_FROM_TRANSPARENCY(x) ((100 - x) * SDL_ALPHA_OPAQUE / 100)
+#define ALPHA_FADING_STEPSIZE(x) ((x) / 25)
+
+// values for special settings for mobile devices
+#if defined(PLATFORM_ANDROID)
+#define HAS_TOUCH_DEVICE
+#define USE_TOUCH_INPUT_OVERLAY
+#define USE_COMPLETE_DISPLAY
+#define HAS_SCREEN_KEYBOARD
+#define SCREEN_KEYBOARD_POS(h) ((h) / 2)
+#endif
+
+// values for drag-and-drop support (some parts not added before SDL 2.0.5)
+#if !SDL_VERSION_ATLEAST(2,0,5)
+#define SDL_DROPTEXT (SDL_DROPFILE + 1)
+#define SDL_DROPBEGIN (SDL_DROPFILE + 2)
+#define SDL_DROPCOMPLETE (SDL_DROPFILE + 3)
+#endif
+
+// default input keys