annotate SDL3/SDL_keyboard.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * # CategoryKeyboard
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * SDL keyboard management.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 * Please refer to the Best Keyboard Practices document for details on how
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 * best to accept keyboard input in various types of programs:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 * https://wiki.libsdl.org/SDL3/BestKeyboardPractices
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 #ifndef SDL_keyboard_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 #define SDL_keyboard_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 #include <SDL3/SDL_error.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 #include <SDL3/SDL_keycode.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #include <SDL3/SDL_properties.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 #include <SDL3/SDL_rect.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 #include <SDL3/SDL_scancode.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 #include <SDL3/SDL_video.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 * This is a unique ID for a keyboard for the time it is connected to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 * system, and is never reused for the lifetime of the application.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 * If the keyboard is disconnected and reconnected, it will get a new ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 * The value 0 is an invalid ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 * \since This datatype is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 typedef Uint32 SDL_KeyboardID;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 /* Function prototypes */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 * Return whether a keyboard is currently connected.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 * \returns true if a keyboard is connected, false otherwise.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 * \sa SDL_GetKeyboards
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 extern SDL_DECLSPEC bool SDLCALL SDL_HasKeyboard(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 * Get a list of currently connected keyboards.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 * Note that this will include any device or virtual driver that includes
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 * keyboard functionality, including some mice, KVM switches, motherboard
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 * power buttons, etc. You should wait for input from a device before you
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 * consider it actively in use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 * \param count a pointer filled in with the number of keyboards returned, may
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 * be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 * \returns a 0 terminated array of keyboards instance IDs or NULL on failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 * call SDL_GetError() for more information. This should be freed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 * with SDL_free() when it is no longer needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 * \sa SDL_GetKeyboardNameForID
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 * \sa SDL_HasKeyboard
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 extern SDL_DECLSPEC SDL_KeyboardID * SDLCALL SDL_GetKeyboards(int *count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 * Get the name of a keyboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 * This function returns "" if the keyboard doesn't have a name.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 * \param instance_id the keyboard instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 * \returns the name of the selected keyboard or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 * \sa SDL_GetKeyboards
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 extern SDL_DECLSPEC const char * SDLCALL SDL_GetKeyboardNameForID(SDL_KeyboardID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 * Query the window which currently has keyboard focus.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 * \returns the window with keyboard focus.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 extern SDL_DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 * Get a snapshot of the current state of the keyboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 * The pointer returned is a pointer to an internal SDL array. It will be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 * valid for the whole lifetime of the application and should not be freed by
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 * the caller.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 * A array element with a value of true means that the key is pressed and a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 * value of false means that it is not. Indexes into this array are obtained
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 * by using SDL_Scancode values.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 * Use SDL_PumpEvents() to update the state array.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 * This function gives you the current state after all events have been
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 * processed, so if a key or button has been pressed and released before you
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 * process events, then the pressed state will never show up in the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 * SDL_GetKeyboardState() calls.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 * Note: This function doesn't take into account whether shift has been
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 * pressed or not.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 * \param numkeys if non-NULL, receives the length of the returned array.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 * \returns a pointer to an array of key states.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 * \sa SDL_PumpEvents
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 * \sa SDL_ResetKeyboard
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 extern SDL_DECLSPEC const bool * SDLCALL SDL_GetKeyboardState(int *numkeys);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 * Clear the state of the keyboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 * This function will generate key up events for all pressed keys.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 * \sa SDL_GetKeyboardState
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 extern SDL_DECLSPEC void SDLCALL SDL_ResetKeyboard(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 * Get the current key modifier state for the keyboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 * \returns an OR'd combination of the modifier keys for the keyboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 * \sa SDL_GetKeyboardState
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 * \sa SDL_SetModState
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 extern SDL_DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 * Set the current key modifier state for the keyboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 * modifier key states on your application. Simply pass your desired modifier
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 * states into `modstate`. This value may be a bitwise, OR'd combination of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 * SDL_Keymod values.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 * This does not change the keyboard state, only the key modifier flags that
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 * SDL reports.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 * \param modstate the desired SDL_Keymod for the keyboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 * \sa SDL_GetModState
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 extern SDL_DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 * Get the key code corresponding to the given scancode according to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 * current keyboard layout.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 * If you want to get the keycode as it would be delivered in key events,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 * including options specified in SDL_HINT_KEYCODE_OPTIONS, then you should
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 * pass `key_event` as true. Otherwise this function simply translates the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 * scancode based on the given modifier state.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 * \param scancode the desired SDL_Scancode to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 * \param modstate the modifier state to use when translating the scancode to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 * a keycode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 * \param key_event true if the keycode will be used in key events.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 * \returns the SDL_Keycode that corresponds to the given SDL_Scancode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 * \threadsafety This function is not thread safe.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 * \sa SDL_GetKeyName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 * \sa SDL_GetScancodeFromKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 extern SDL_DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode, SDL_Keymod modstate, bool key_event);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 * Get the scancode corresponding to the given key code according to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 * current keyboard layout.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 * Note that there may be multiple scancode+modifier states that can generate
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 * this keycode, this will just return the first one found.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 * \param key the desired SDL_Keycode to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 * \param modstate a pointer to the modifier state that would be used when the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 * scancode generates this key, may be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 * \returns the SDL_Scancode that corresponds to the given SDL_Keycode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 * \threadsafety This function is not thread safe.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 * \sa SDL_GetKeyFromScancode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 * \sa SDL_GetScancodeName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 extern SDL_DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key, SDL_Keymod *modstate);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 * Set a human-readable name for a scancode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 * \param scancode the desired SDL_Scancode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 * \param name the name to use for the scancode, encoded as UTF-8. The string
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 * is not copied, so the pointer given to this function must stay
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 * valid while SDL is being used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 * \threadsafety This function is not thread safe.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 * \sa SDL_GetScancodeName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270 extern SDL_DECLSPEC bool SDLCALL SDL_SetScancodeName(SDL_Scancode scancode, const char *name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 * Get a human-readable name for a scancode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 * **Warning**: The returned name is by design not stable across platforms,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276 * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 * Windows" under Microsoft Windows, and some scancodes like
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 * unsuitable for creating a stable cross-platform two-way mapping between
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 * strings and scancodes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284 * \param scancode the desired SDL_Scancode to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 * \returns a pointer to the name for the scancode. If the scancode doesn't
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286 * have a name this function returns an empty string ("").
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 * \threadsafety This function is not thread safe.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 * \sa SDL_GetScancodeFromKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 * \sa SDL_GetScancodeFromName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 * \sa SDL_SetScancodeName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296 extern SDL_DECLSPEC const char * SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 * Get a scancode from a human-readable name.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 * \param name the human-readable scancode name.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302 * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303 * recognized; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305 * \threadsafety This function is not thread safe.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 * \sa SDL_GetKeyFromName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 * \sa SDL_GetScancodeFromKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311 * \sa SDL_GetScancodeName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 extern SDL_DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 * Get a human-readable name for a key.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318 * If the key doesn't have a name, this function returns an empty string ("").
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320 * Letters will be presented in their uppercase form, if applicable.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
322 * \param key the desired SDL_Keycode to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
323 * \returns a UTF-8 encoded string of the key name.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
324 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
325 * \threadsafety This function is not thread safe.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
326 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
327 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
328 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
329 * \sa SDL_GetKeyFromName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
330 * \sa SDL_GetKeyFromScancode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
331 * \sa SDL_GetScancodeFromKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
332 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
333 extern SDL_DECLSPEC const char * SDLCALL SDL_GetKeyName(SDL_Keycode key);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
334
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
335 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
336 * Get a key code from a human-readable name.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
337 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
338 * \param name the human-readable key name.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
339 * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
340 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
341 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
342 * \threadsafety This function is not thread safe.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
343 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
344 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
345 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
346 * \sa SDL_GetKeyFromScancode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
347 * \sa SDL_GetKeyName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
348 * \sa SDL_GetScancodeFromName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
349 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
350 extern SDL_DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
351
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
352 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
353 * Start accepting Unicode text input events in a window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
354 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
355 * This function will enable text input (SDL_EVENT_TEXT_INPUT and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
356 * SDL_EVENT_TEXT_EDITING events) in the specified window. Please use this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
357 * function paired with SDL_StopTextInput().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
358 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
359 * Text input events are not received by default.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
360 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
361 * On some platforms using this function shows the screen keyboard and/or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
362 * activates an IME, which can prevent some key press events from being passed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
363 * through.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
364 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
365 * \param window the window to enable text input.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
366 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
367 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
368 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
369 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
370 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
371 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
372 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
373 * \sa SDL_SetTextInputArea
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
374 * \sa SDL_StartTextInputWithProperties
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
375 * \sa SDL_StopTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
376 * \sa SDL_TextInputActive
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
377 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
378 extern SDL_DECLSPEC bool SDLCALL SDL_StartTextInput(SDL_Window *window);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
379
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
380 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
381 * Text input type.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
382 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
383 * These are the valid values for SDL_PROP_TEXTINPUT_TYPE_NUMBER. Not every
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
384 * value is valid on every platform, but where a value isn't supported, a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
385 * reasonable fallback will be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
386 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
387 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
388 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
389 * \sa SDL_StartTextInputWithProperties
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
390 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
391 typedef enum SDL_TextInputType
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
392 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
393 SDL_TEXTINPUT_TYPE_TEXT, /**< The input is text */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
394 SDL_TEXTINPUT_TYPE_TEXT_NAME, /**< The input is a person's name */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
395 SDL_TEXTINPUT_TYPE_TEXT_EMAIL, /**< The input is an e-mail address */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
396 SDL_TEXTINPUT_TYPE_TEXT_USERNAME, /**< The input is a username */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
397 SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN, /**< The input is a secure password that is hidden */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
398 SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE, /**< The input is a secure password that is visible */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
399 SDL_TEXTINPUT_TYPE_NUMBER, /**< The input is a number */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
400 SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN, /**< The input is a secure PIN that is hidden */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
401 SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE /**< The input is a secure PIN that is visible */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
402 } SDL_TextInputType;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
403
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
404 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
405 * Auto capitalization type.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
406 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
407 * These are the valid values for SDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
408 * Not every value is valid on every platform, but where a value isn't
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
409 * supported, a reasonable fallback will be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
410 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
411 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
412 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
413 * \sa SDL_StartTextInputWithProperties
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
414 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
415 typedef enum SDL_Capitalization
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
416 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
417 SDL_CAPITALIZE_NONE, /**< No auto-capitalization will be done */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
418 SDL_CAPITALIZE_SENTENCES, /**< The first letter of sentences will be capitalized */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
419 SDL_CAPITALIZE_WORDS, /**< The first letter of words will be capitalized */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
420 SDL_CAPITALIZE_LETTERS /**< All letters will be capitalized */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
421 } SDL_Capitalization;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
422
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
423 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
424 * Start accepting Unicode text input events in a window, with properties
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
425 * describing the input.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
426 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
427 * This function will enable text input (SDL_EVENT_TEXT_INPUT and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
428 * SDL_EVENT_TEXT_EDITING events) in the specified window. Please use this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
429 * function paired with SDL_StopTextInput().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
430 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
431 * Text input events are not received by default.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
432 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
433 * On some platforms using this function shows the screen keyboard and/or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
434 * activates an IME, which can prevent some key press events from being passed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
435 * through.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
436 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
437 * These are the supported properties:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
438 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
439 * - `SDL_PROP_TEXTINPUT_TYPE_NUMBER` - an SDL_TextInputType value that
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
440 * describes text being input, defaults to SDL_TEXTINPUT_TYPE_TEXT.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
441 * - `SDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER` - an SDL_Capitalization value
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
442 * that describes how text should be capitalized, defaults to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
443 * SDL_CAPITALIZE_SENTENCES for normal text entry, SDL_CAPITALIZE_WORDS for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
444 * SDL_TEXTINPUT_TYPE_TEXT_NAME, and SDL_CAPITALIZE_NONE for e-mail
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
445 * addresses, usernames, and passwords.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
446 * - `SDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN` - true to enable auto completion
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
447 * and auto correction, defaults to true.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
448 * - `SDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN` - true if multiple lines of text
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
449 * are allowed. This defaults to true if SDL_HINT_RETURN_KEY_HIDES_IME is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
450 * "0" or is not set, and defaults to false if SDL_HINT_RETURN_KEY_HIDES_IME
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
451 * is "1".
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
452 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
453 * On Android you can directly specify the input type:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
454 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
455 * - `SDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER` - the text input type to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
456 * use, overriding other properties. This is documented at
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
457 * https://developer.android.com/reference/android/text/InputType
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
458 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
459 * \param window the window to enable text input.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
460 * \param props the properties to use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
461 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
462 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
463 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
464 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
465 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
466 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
467 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
468 * \sa SDL_SetTextInputArea
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
469 * \sa SDL_StartTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
470 * \sa SDL_StopTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
471 * \sa SDL_TextInputActive
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
472 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
473 extern SDL_DECLSPEC bool SDLCALL SDL_StartTextInputWithProperties(SDL_Window *window, SDL_PropertiesID props);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
474
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
475 #define SDL_PROP_TEXTINPUT_TYPE_NUMBER "SDL.textinput.type"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
476 #define SDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER "SDL.textinput.capitalization"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
477 #define SDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN "SDL.textinput.autocorrect"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
478 #define SDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN "SDL.textinput.multiline"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
479 #define SDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER "SDL.textinput.android.inputtype"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
480
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
481 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
482 * Check whether or not Unicode text input events are enabled for a window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
483 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
484 * \param window the window to check.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
485 * \returns true if text input events are enabled else false.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
486 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
487 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
488 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
489 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
490 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
491 * \sa SDL_StartTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
492 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
493 extern SDL_DECLSPEC bool SDLCALL SDL_TextInputActive(SDL_Window *window);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
494
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
495 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
496 * Stop receiving any text input events in a window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
497 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
498 * If SDL_StartTextInput() showed the screen keyboard, this function will hide
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
499 * it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
500 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
501 * \param window the window to disable text input.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
502 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
503 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
504 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
505 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
506 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
507 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
508 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
509 * \sa SDL_StartTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
510 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
511 extern SDL_DECLSPEC bool SDLCALL SDL_StopTextInput(SDL_Window *window);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
512
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
513 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
514 * Dismiss the composition window/IME without disabling the subsystem.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
515 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
516 * \param window the window to affect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
517 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
518 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
519 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
520 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
521 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
522 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
523 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
524 * \sa SDL_StartTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
525 * \sa SDL_StopTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
526 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
527 extern SDL_DECLSPEC bool SDLCALL SDL_ClearComposition(SDL_Window *window);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
528
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
529 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
530 * Set the area used to type Unicode text input.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
531 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
532 * Native input methods may place a window with word suggestions near the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
533 * cursor, without covering the text being entered.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
534 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
535 * \param window the window for which to set the text input area.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
536 * \param rect the SDL_Rect representing the text input area, in window
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
537 * coordinates, or NULL to clear it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
538 * \param cursor the offset of the current cursor location relative to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
539 * `rect->x`, in window coordinates.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
540 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
541 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
542 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
543 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
544 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
545 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
546 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
547 * \sa SDL_GetTextInputArea
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
548 * \sa SDL_StartTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
549 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
550 extern SDL_DECLSPEC bool SDLCALL SDL_SetTextInputArea(SDL_Window *window, const SDL_Rect *rect, int cursor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
551
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
552 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
553 * Get the area used to type Unicode text input.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
554 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
555 * This returns the values previously set by SDL_SetTextInputArea().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
556 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
557 * \param window the window for which to query the text input area.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
558 * \param rect a pointer to an SDL_Rect filled in with the text input area,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
559 * may be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
560 * \param cursor a pointer to the offset of the current cursor location
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
561 * relative to `rect->x`, may be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
562 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
563 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
564 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
565 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
566 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
567 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
568 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
569 * \sa SDL_SetTextInputArea
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
570 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
571 extern SDL_DECLSPEC bool SDLCALL SDL_GetTextInputArea(SDL_Window *window, SDL_Rect *rect, int *cursor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
572
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
573 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
574 * Check whether the platform has screen keyboard support.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
575 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
576 * \returns true if the platform has some screen keyboard support or false if
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
577 * not.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
578 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
579 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
580 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
581 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
582 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
583 * \sa SDL_StartTextInput
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
584 * \sa SDL_ScreenKeyboardShown
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
585 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
586 extern SDL_DECLSPEC bool SDLCALL SDL_HasScreenKeyboardSupport(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
587
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
588 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
589 * Check whether the screen keyboard is shown for given window.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
590 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
591 * \param window the window for which screen keyboard should be queried.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
592 * \returns true if screen keyboard is shown or false if not.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
593 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
594 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
595 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
596 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
597 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
598 * \sa SDL_HasScreenKeyboardSupport
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
599 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
600 extern SDL_DECLSPEC bool SDLCALL SDL_ScreenKeyboardShown(SDL_Window *window);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
601
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
602 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
603 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
604 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
605 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
606 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
607
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
608 #endif /* SDL_keyboard_h_ */