From 30f41c02aec763d32e62351452da9ef582bc3472 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Fri, 6 Mar 2026 13:30:59 -0800 Subject: Move contrib libraries to contrib repo --- contrib/SDL-3.2.8/include/SDL3/SDL_keyboard.h | 609 -------------------------- 1 file changed, 609 deletions(-) delete mode 100644 contrib/SDL-3.2.8/include/SDL3/SDL_keyboard.h (limited to 'contrib/SDL-3.2.8/include/SDL3/SDL_keyboard.h') diff --git a/contrib/SDL-3.2.8/include/SDL3/SDL_keyboard.h b/contrib/SDL-3.2.8/include/SDL3/SDL_keyboard.h deleted file mode 100644 index afa77b6..0000000 --- a/contrib/SDL-3.2.8/include/SDL3/SDL_keyboard.h +++ /dev/null @@ -1,609 +0,0 @@ -/* - Simple DirectMedia Layer - Copyright (C) 1997-2025 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - -/** - * # CategoryKeyboard - * - * SDL keyboard management. - * - * Please refer to the Best Keyboard Practices document for details on how - * best to accept keyboard input in various types of programs: - * - * https://wiki.libsdl.org/SDL3/BestKeyboardPractices - */ - -#ifndef SDL_keyboard_h_ -#define SDL_keyboard_h_ - -#include -#include -#include -#include -#include -#include -#include - -#include -/* Set up for C function definitions, even when using C++ */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * This is a unique ID for a keyboard for the time it is connected to the - * system, and is never reused for the lifetime of the application. - * - * If the keyboard is disconnected and reconnected, it will get a new ID. - * - * The value 0 is an invalid ID. - * - * \since This datatype is available since SDL 3.2.0. - */ -typedef Uint32 SDL_KeyboardID; - -/* Function prototypes */ - -/** - * Return whether a keyboard is currently connected. - * - * \returns true if a keyboard is connected, false otherwise. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyboards - */ -extern SDL_DECLSPEC bool SDLCALL SDL_HasKeyboard(void); - -/** - * Get a list of currently connected keyboards. - * - * Note that this will include any device or virtual driver that includes - * keyboard functionality, including some mice, KVM switches, motherboard - * power buttons, etc. You should wait for input from a device before you - * consider it actively in use. - * - * \param count a pointer filled in with the number of keyboards returned, may - * be NULL. - * \returns a 0 terminated array of keyboards instance IDs or NULL on failure; - * call SDL_GetError() for more information. This should be freed - * with SDL_free() when it is no longer needed. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyboardNameForID - * \sa SDL_HasKeyboard - */ -extern SDL_DECLSPEC SDL_KeyboardID * SDLCALL SDL_GetKeyboards(int *count); - -/** - * Get the name of a keyboard. - * - * This function returns "" if the keyboard doesn't have a name. - * - * \param instance_id the keyboard instance ID. - * \returns the name of the selected keyboard or NULL on failure; call - * SDL_GetError() for more information. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyboards - */ -extern SDL_DECLSPEC const char * SDLCALL SDL_GetKeyboardNameForID(SDL_KeyboardID instance_id); - -/** - * Query the window which currently has keyboard focus. - * - * \returns the window with keyboard focus. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - */ -extern SDL_DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); - -/** - * Get a snapshot of the current state of the keyboard. - * - * The pointer returned is a pointer to an internal SDL array. It will be - * valid for the whole lifetime of the application and should not be freed by - * the caller. - * - * A array element with a value of true means that the key is pressed and a - * value of false means that it is not. Indexes into this array are obtained - * by using SDL_Scancode values. - * - * Use SDL_PumpEvents() to update the state array. - * - * This function gives you the current state after all events have been - * processed, so if a key or button has been pressed and released before you - * process events, then the pressed state will never show up in the - * SDL_GetKeyboardState() calls. - * - * Note: This function doesn't take into account whether shift has been - * pressed or not. - * - * \param numkeys if non-NULL, receives the length of the returned array. - * \returns a pointer to an array of key states. - * - * \threadsafety It is safe to call this function from any thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_PumpEvents - * \sa SDL_ResetKeyboard - */ -extern SDL_DECLSPEC const bool * SDLCALL SDL_GetKeyboardState(int *numkeys); - -/** - * Clear the state of the keyboard. - * - * This function will generate key up events for all pressed keys. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyboardState - */ -extern SDL_DECLSPEC void SDLCALL SDL_ResetKeyboard(void); - -/** - * Get the current key modifier state for the keyboard. - * - * \returns an OR'd combination of the modifier keys for the keyboard. See - * SDL_Keymod for details. - * - * \threadsafety It is safe to call this function from any thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyboardState - * \sa SDL_SetModState - */ -extern SDL_DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); - -/** - * Set the current key modifier state for the keyboard. - * - * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose - * modifier key states on your application. Simply pass your desired modifier - * states into `modstate`. This value may be a bitwise, OR'd combination of - * SDL_Keymod values. - * - * This does not change the keyboard state, only the key modifier flags that - * SDL reports. - * - * \param modstate the desired SDL_Keymod for the keyboard. - * - * \threadsafety It is safe to call this function from any thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetModState - */ -extern SDL_DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); - -/** - * Get the key code corresponding to the given scancode according to the - * current keyboard layout. - * - * If you want to get the keycode as it would be delivered in key events, - * including options specified in SDL_HINT_KEYCODE_OPTIONS, then you should - * pass `key_event` as true. Otherwise this function simply translates the - * scancode based on the given modifier state. - * - * \param scancode the desired SDL_Scancode to query. - * \param modstate the modifier state to use when translating the scancode to - * a keycode. - * \param key_event true if the keycode will be used in key events. - * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. - * - * \threadsafety This function is not thread safe. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyName - * \sa SDL_GetScancodeFromKey - */ -extern SDL_DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode, SDL_Keymod modstate, bool key_event); - -/** - * Get the scancode corresponding to the given key code according to the - * current keyboard layout. - * - * Note that there may be multiple scancode+modifier states that can generate - * this keycode, this will just return the first one found. - * - * \param key the desired SDL_Keycode to query. - * \param modstate a pointer to the modifier state that would be used when the - * scancode generates this key, may be NULL. - * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. - * - * \threadsafety This function is not thread safe. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyFromScancode - * \sa SDL_GetScancodeName - */ -extern SDL_DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key, SDL_Keymod *modstate); - -/** - * Set a human-readable name for a scancode. - * - * \param scancode the desired SDL_Scancode. - * \param name the name to use for the scancode, encoded as UTF-8. The string - * is not copied, so the pointer given to this function must stay - * valid while SDL is being used. - * \returns true on success or false on failure; call SDL_GetError() for more - * information. - * - * \threadsafety This function is not thread safe. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetScancodeName - */ -extern SDL_DECLSPEC bool SDLCALL SDL_SetScancodeName(SDL_Scancode scancode, const char *name); - -/** - * Get a human-readable name for a scancode. - * - * **Warning**: The returned name is by design not stable across platforms, - * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left - * Windows" under Microsoft Windows, and some scancodes like - * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even - * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and - * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore - * unsuitable for creating a stable cross-platform two-way mapping between - * strings and scancodes. - * - * \param scancode the desired SDL_Scancode to query. - * \returns a pointer to the name for the scancode. If the scancode doesn't - * have a name this function returns an empty string (""). - * - * \threadsafety This function is not thread safe. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetScancodeFromKey - * \sa SDL_GetScancodeFromName - * \sa SDL_SetScancodeName - */ -extern SDL_DECLSPEC const char * SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); - -/** - * Get a scancode from a human-readable name. - * - * \param name the human-readable scancode name. - * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't - * recognized; call SDL_GetError() for more information. - * - * \threadsafety This function is not thread safe. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyFromName - * \sa SDL_GetScancodeFromKey - * \sa SDL_GetScancodeName - */ -extern SDL_DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); - -/** - * Get a human-readable name for a key. - * - * If the key doesn't have a name, this function returns an empty string (""). - * - * Letters will be presented in their uppercase form, if applicable. - * - * \param key the desired SDL_Keycode to query. - * \returns a UTF-8 encoded string of the key name. - * - * \threadsafety This function is not thread safe. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyFromName - * \sa SDL_GetKeyFromScancode - * \sa SDL_GetScancodeFromKey - */ -extern SDL_DECLSPEC const char * SDLCALL SDL_GetKeyName(SDL_Keycode key); - -/** - * Get a key code from a human-readable name. - * - * \param name the human-readable key name. - * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call - * SDL_GetError() for more information. - * - * \threadsafety This function is not thread safe. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetKeyFromScancode - * \sa SDL_GetKeyName - * \sa SDL_GetScancodeFromName - */ -extern SDL_DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); - -/** - * Start accepting Unicode text input events in a window. - * - * This function will enable text input (SDL_EVENT_TEXT_INPUT and - * SDL_EVENT_TEXT_EDITING events) in the specified window. Please use this - * function paired with SDL_StopTextInput(). - * - * Text input events are not received by default. - * - * On some platforms using this function shows the screen keyboard and/or - * activates an IME, which can prevent some key press events from being passed - * through. - * - * \param window the window to enable text input. - * \returns true on success or false on failure; call SDL_GetError() for more - * information. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_SetTextInputArea - * \sa SDL_StartTextInputWithProperties - * \sa SDL_StopTextInput - * \sa SDL_TextInputActive - */ -extern SDL_DECLSPEC bool SDLCALL SDL_StartTextInput(SDL_Window *window); - -/** - * Text input type. - * - * These are the valid values for SDL_PROP_TEXTINPUT_TYPE_NUMBER. Not every - * value is valid on every platform, but where a value isn't supported, a - * reasonable fallback will be used. - * - * \since This enum is available since SDL 3.2.0. - * - * \sa SDL_StartTextInputWithProperties - */ -typedef enum SDL_TextInputType -{ - SDL_TEXTINPUT_TYPE_TEXT, /**< The input is text */ - SDL_TEXTINPUT_TYPE_TEXT_NAME, /**< The input is a person's name */ - SDL_TEXTINPUT_TYPE_TEXT_EMAIL, /**< The input is an e-mail address */ - SDL_TEXTINPUT_TYPE_TEXT_USERNAME, /**< The input is a username */ - SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN, /**< The input is a secure password that is hidden */ - SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE, /**< The input is a secure password that is visible */ - SDL_TEXTINPUT_TYPE_NUMBER, /**< The input is a number */ - SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN, /**< The input is a secure PIN that is hidden */ - SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE /**< The input is a secure PIN that is visible */ -} SDL_TextInputType; - -/** - * Auto capitalization type. - * - * These are the valid values for SDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER. - * Not every value is valid on every platform, but where a value isn't - * supported, a reasonable fallback will be used. - * - * \since This enum is available since SDL 3.2.0. - * - * \sa SDL_StartTextInputWithProperties - */ -typedef enum SDL_Capitalization -{ - SDL_CAPITALIZE_NONE, /**< No auto-capitalization will be done */ - SDL_CAPITALIZE_SENTENCES, /**< The first letter of sentences will be capitalized */ - SDL_CAPITALIZE_WORDS, /**< The first letter of words will be capitalized */ - SDL_CAPITALIZE_LETTERS /**< All letters will be capitalized */ -} SDL_Capitalization; - -/** - * Start accepting Unicode text input events in a window, with properties - * describing the input. - * - * This function will enable text input (SDL_EVENT_TEXT_INPUT and - * SDL_EVENT_TEXT_EDITING events) in the specified window. Please use this - * function paired with SDL_StopTextInput(). - * - * Text input events are not received by default. - * - * On some platforms using this function shows the screen keyboard and/or - * activates an IME, which can prevent some key press events from being passed - * through. - * - * These are the supported properties: - * - * - `SDL_PROP_TEXTINPUT_TYPE_NUMBER` - an SDL_TextInputType value that - * describes text being input, defaults to SDL_TEXTINPUT_TYPE_TEXT. - * - `SDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER` - an SDL_Capitalization value - * that describes how text should be capitalized, defaults to - * SDL_CAPITALIZE_SENTENCES for normal text entry, SDL_CAPITALIZE_WORDS for - * SDL_TEXTINPUT_TYPE_TEXT_NAME, and SDL_CAPITALIZE_NONE for e-mail - * addresses, usernames, and passwords. - * - `SDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN` - true to enable auto completion - * and auto correction, defaults to true. - * - `SDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN` - true if multiple lines of text - * are allowed. This defaults to true if SDL_HINT_RETURN_KEY_HIDES_IME is - * "0" or is not set, and defaults to false if SDL_HINT_RETURN_KEY_HIDES_IME - * is "1". - * - * On Android you can directly specify the input type: - * - * - `SDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER` - the text input type to - * use, overriding other properties. This is documented at - * https://developer.android.com/reference/android/text/InputType - * - * \param window the window to enable text input. - * \param props the properties to use. - * \returns true on success or false on failure; call SDL_GetError() for more - * information. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_SetTextInputArea - * \sa SDL_StartTextInput - * \sa SDL_StopTextInput - * \sa SDL_TextInputActive - */ -extern SDL_DECLSPEC bool SDLCALL SDL_StartTextInputWithProperties(SDL_Window *window, SDL_PropertiesID props); - -#define SDL_PROP_TEXTINPUT_TYPE_NUMBER "SDL.textinput.type" -#define SDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER "SDL.textinput.capitalization" -#define SDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN "SDL.textinput.autocorrect" -#define SDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN "SDL.textinput.multiline" -#define SDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER "SDL.textinput.android.inputtype" - -/** - * Check whether or not Unicode text input events are enabled for a window. - * - * \param window the window to check. - * \returns true if text input events are enabled else false. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_StartTextInput - */ -extern SDL_DECLSPEC bool SDLCALL SDL_TextInputActive(SDL_Window *window); - -/** - * Stop receiving any text input events in a window. - * - * If SDL_StartTextInput() showed the screen keyboard, this function will hide - * it. - * - * \param window the window to disable text input. - * \returns true on success or false on failure; call SDL_GetError() for more - * information. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_StartTextInput - */ -extern SDL_DECLSPEC bool SDLCALL SDL_StopTextInput(SDL_Window *window); - -/** - * Dismiss the composition window/IME without disabling the subsystem. - * - * \param window the window to affect. - * \returns true on success or false on failure; call SDL_GetError() for more - * information. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_StartTextInput - * \sa SDL_StopTextInput - */ -extern SDL_DECLSPEC bool SDLCALL SDL_ClearComposition(SDL_Window *window); - -/** - * Set the area used to type Unicode text input. - * - * Native input methods may place a window with word suggestions near the - * cursor, without covering the text being entered. - * - * \param window the window for which to set the text input area. - * \param rect the SDL_Rect representing the text input area, in window - * coordinates, or NULL to clear it. - * \param cursor the offset of the current cursor location relative to - * `rect->x`, in window coordinates. - * \returns true on success or false on failure; call SDL_GetError() for more - * information. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_GetTextInputArea - * \sa SDL_StartTextInput - */ -extern SDL_DECLSPEC bool SDLCALL SDL_SetTextInputArea(SDL_Window *window, const SDL_Rect *rect, int cursor); - -/** - * Get the area used to type Unicode text input. - * - * This returns the values previously set by SDL_SetTextInputArea(). - * - * \param window the window for which to query the text input area. - * \param rect a pointer to an SDL_Rect filled in with the text input area, - * may be NULL. - * \param cursor a pointer to the offset of the current cursor location - * relative to `rect->x`, may be NULL. - * \returns true on success or false on failure; call SDL_GetError() for more - * information. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_SetTextInputArea - */ -extern SDL_DECLSPEC bool SDLCALL SDL_GetTextInputArea(SDL_Window *window, SDL_Rect *rect, int *cursor); - -/** - * Check whether the platform has screen keyboard support. - * - * \returns true if the platform has some screen keyboard support or false if - * not. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_StartTextInput - * \sa SDL_ScreenKeyboardShown - */ -extern SDL_DECLSPEC bool SDLCALL SDL_HasScreenKeyboardSupport(void); - -/** - * Check whether the screen keyboard is shown for given window. - * - * \param window the window for which screen keyboard should be queried. - * \returns true if screen keyboard is shown or false if not. - * - * \threadsafety This function should only be called on the main thread. - * - * \since This function is available since SDL 3.2.0. - * - * \sa SDL_HasScreenKeyboardSupport - */ -extern SDL_DECLSPEC bool SDLCALL SDL_ScreenKeyboardShown(SDL_Window *window); - -/* Ends C function definitions when using C++ */ -#ifdef __cplusplus -} -#endif -#include - -#endif /* SDL_keyboard_h_ */ -- cgit v1.2.3