libnx v4.9.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
swkbd.h
Go to the documentation of this file.
1/**
2 * @file swkbd.h
3 * @brief Wrapper for using the swkbd (software keyboard) LibraryApplet.
4 * @author yellows8
5 * @copyright libnx Authors
6 */
7#pragma once
8#include "../types.h"
9#include "../services/applet.h"
10
11/// Output result returned by \ref SwkbdTextCheckCb.
12typedef enum {
13 SwkbdTextCheckResult_OK = 0, ///< Success, valid string.
14 SwkbdTextCheckResult_Bad = 1, ///< Failure, invalid string. Error message is displayed in a message-box, pressing OK will return to swkbd again.
15 SwkbdTextCheckResult_Prompt = 2, ///< Failure, invalid string. Error message is displayed in a message-box, pressing Cancel will return to swkbd again, while pressing OK will continue as if the text was valid.
16 SwkbdTextCheckResult_Silent = 3, ///< Failure, invalid string. With value 3 and above, swkbd will silently not accept the string, without displaying any error.
18
19/// Type of keyboard.
20typedef enum {
21 SwkbdType_Normal = 0, ///< Normal keyboard.
22 SwkbdType_NumPad = 1, ///< Number pad. The buttons at the bottom left/right are only available when they're set by \ref swkbdConfigSetLeftOptionalSymbolKey / \ref swkbdConfigSetRightOptionalSymbolKey.
23 SwkbdType_QWERTY = 2, ///< QWERTY (and variants) keyboard only.
24 SwkbdType_Unknown3 = 3, ///< The same as SwkbdType_Normal keyboard.
25 SwkbdType_Latin = 4, ///< All Latin like languages keyboard only (without CJK keyboard).
26 SwkbdType_ZhHans = 5, ///< Chinese Simplified keyboard only.
27 SwkbdType_ZhHant = 6, ///< Chinese Traditional keyboard only.
28 SwkbdType_Korean = 7, ///< Korean keyboard only.
29 SwkbdType_All = 8, ///< All language keyboards.
30 SwkbdType_Unknown9 = 9, ///< Unknown
31} SwkbdType;
32
33/// Bitmask for SwkbdArgCommon::keySetDisableBitmask. This disables keys on the keyboard when the corresponding bit(s) are set.
34enum {
35 SwkbdKeyDisableBitmask_Space = BIT(1), ///< Disable space-bar.
36 SwkbdKeyDisableBitmask_At = BIT(2), ///< Disable '@'.
37 SwkbdKeyDisableBitmask_Percent = BIT(3), ///< Disable '%'.
39 SwkbdKeyDisableBitmask_Backslash = BIT(5), ///< Disable '\'.
40 SwkbdKeyDisableBitmask_Numbers = BIT(6), ///< Disable numbers.
41 SwkbdKeyDisableBitmask_DownloadCode = BIT(7), ///< Used for \ref swkbdConfigMakePresetDownloadCode.
42 SwkbdKeyDisableBitmask_UserName = BIT(8), ///< Used for \ref swkbdConfigMakePresetUserName. Disables '@', '%', and '\'.
43};
44
45/// Value for SwkbdArgCommon::textDrawType. Only applies when stringLenMax is 1..32, otherwise swkbd will only use SwkbdTextDrawType_Box.
46typedef enum {
47 SwkbdTextDrawType_Line = 0, ///< The text will be displayed on a line. Also enables displaying the Header and Sub text.
48 SwkbdTextDrawType_Box = 1, ///< The text will be displayed in a box.
49 SwkbdTextDrawType_DownloadCode = 2, ///< Used by \ref swkbdConfigMakePresetDownloadCode on [5.0.0+]. Enables using \ref SwkbdArgV7 unk_x3e0.
51
52/// SwkbdInline Interactive input storage request ID.
53typedef enum {
54 SwkbdRequestCommand_Finalize = 0x4,
55 SwkbdRequestCommand_SetUserWordInfo = 0x6,
56 SwkbdRequestCommand_SetCustomizeDic = 0x7,
57 SwkbdRequestCommand_Calc = 0xA,
58 SwkbdRequestCommand_SetCustomizedDictionaries = 0xB,
59 SwkbdRequestCommand_UnsetCustomizedDictionaries = 0xC,
60 SwkbdRequestCommand_SetChangedStringV2Flag = 0xD,
61 SwkbdRequestCommand_SetMovedCursorV2Flag = 0xE,
63
64/// SwkbdInline Interactive output storage reply ID.
65typedef enum {
66 SwkbdReplyType_FinishedInitialize = 0x0,
67 SwkbdReplyType_ChangedString = 0x2,
68 SwkbdReplyType_MovedCursor = 0x3,
69 SwkbdReplyType_MovedTab = 0x4,
70 SwkbdReplyType_DecidedEnter = 0x5,
71 SwkbdReplyType_DecidedCancel = 0x6,
72 SwkbdReplyType_ChangedStringUtf8 = 0x7,
73 SwkbdReplyType_MovedCursorUtf8 = 0x8,
74 SwkbdReplyType_DecidedEnterUtf8 = 0x9,
75 SwkbdReplyType_UnsetCustomizeDic = 0xA,
76 SwkbdReplyType_ReleasedUserWordInfo = 0xB,
77 SwkbdReplyType_UnsetCustomizedDictionaries = 0xC,
78 SwkbdReplyType_ChangedStringV2 = 0xD,
79 SwkbdReplyType_MovedCursorV2 = 0xE,
80 SwkbdReplyType_ChangedStringUtf8V2 = 0xF,
81 SwkbdReplyType_MovedCursorUtf8V2 = 0x10,
83
84/// SwkbdInline State
85typedef enum {
86 SwkbdState_Inactive = 0x0, ///< Default state from \ref swkbdInlineCreate, before a state is set by \ref swkbdInlineUpdate when a reply is received. Also indicates that the applet is no longer running.
87 SwkbdState_Initialized = 0x1, ///< Applet is initialized but hidden.
88 SwkbdState_Appearing = 0x2, ///< Applet is appearing.
89 SwkbdState_Shown = 0x3, ///< Applet is fully shown and ready to accept text input.
90 SwkbdState_Disappearing = 0x4, ///< The user pressed the ok or cancel button, causing the applet to disappear.
91 SwkbdState_Unknown5 = 0x5,
92 SwkbdState_Unknown6 = 0x6,
94
95/// Value for \ref SwkbdInitializeArg mode. Controls the LibAppletMode when launching the applet.
96typedef enum {
97 SwkbdInlineMode_UserDisplay = 0, ///< LibAppletMode_BackgroundIndirect. This is the default. The user-process must handle displaying the swkbd gfx on the screen, by loading the image with \ref swkbdInlineGetImage.
98 SwkbdInlineMode_AppletDisplay = 1, ///< LibAppletMode_Background. The applet will handle displaying gfx on the screen.
100
101/// TextCheck callback set by \ref swkbdConfigSetTextCheckCallback, for validating the input string when the swkbd ok-button is pressed. This buffer contains an UTF-8 string. This callback should validate the input string, then return a \ref SwkbdTextCheckResult indicating success/failure. On failure, this function must write an error message to the tmp_string buffer, which will then be displayed by swkbd.
102typedef SwkbdTextCheckResult (*SwkbdTextCheckCb)(char* tmp_string, size_t tmp_string_size);
103
104/// User dictionary word.
105typedef struct {
106 u8 unk_x0[0x64];
108
109/// Input data for SwkbdInline request SetCustomizeDic.
110typedef struct {
111 u8 unk_x0[0x70];
113
114typedef struct {
115 void* buffer; ///< 0x1000-byte aligned buffer.
116 u32 buffer_size; ///< 0x1000-byte aligned buffer size.
117 u64 entries[0x18];
118 u16 total_entries;
120
121/// Base swkbd arg struct.
122typedef struct {
123 SwkbdType type; ///< See \ref SwkbdType.
124 u16 okButtonText[18/2];
125 u16 leftButtonText;
126 u16 rightButtonText;
127 u8 dicFlag; ///< Enables dictionary usage when non-zero (including the system dictionary).
128 u8 pad_x1b;
129 u32 keySetDisableBitmask; ///< See SwkbdKeyDisableBitmask_*.
130 u32 initialCursorPos; ///< Initial cursor position in the string: 0 = start, 1 = end.
131 u16 headerText[130/2];
132 u16 subText[258/2];
133 u16 guideText[514/2];
134 u16 pad_x3aa;
135 u32 stringLenMax; ///< When non-zero, specifies the max string length. When the input is too long, swkbd will stop accepting more input until text is deleted via the B button (Backspace). See also \ref SwkbdTextDrawType.
136 u32 stringLenMin; ///< When non-zero, specifies the min string length. When the input is too short, swkbd will display an icon and disable the ok-button.
137 u32 passwordFlag; ///< Use password: 0 = disable, 1 = enable.
138 SwkbdTextDrawType textDrawType; ///< See \ref SwkbdTextDrawType.
139 u16 returnButtonFlag; ///< Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled.
140 u8 blurBackground; ///< When enabled with value 1, the background is blurred.
141 u8 pad_x3bf;
142 u32 initialStringOffset;
143 u32 initialStringSize;
144 u32 userDicOffset;
145 s32 userDicEntries;
146 u8 textCheckFlag;
148
149typedef struct {
150 SwkbdArgCommon arg;
151 u8 pad_x3d1[7];
152 SwkbdTextCheckCb textCheckCb; ///< This really doesn't belong in a struct sent to another process, but official sw does this.
153} SwkbdArgV0;
154
155/// Arg struct for version 0x30007+.
156typedef struct {
157 SwkbdArgV0 arg;
158 u32 textGrouping[8]; ///< When set and enabled via \ref SwkbdTextDrawType, controls displayed text grouping (inserts spaces, without affecting output string).
159} SwkbdArgV7;
160
161/// Arg struct for version 0x6000B+.
162typedef struct {
163 SwkbdArgCommon arg;
164 u8 pad_x3d1[3];
165 u32 textGrouping[8]; ///< Same as SwkbdArgV7::textGrouping.
166 u64 entries[0x18]; ///< This is SwkbdCustomizedDictionarySet::entries.
167 u8 total_entries; ///< This is SwkbdCustomizedDictionarySet::total_entries.
168 u8 unkFlag; ///< [8.0.0+]
169 u8 pad_x4b6[0xD];
170 u8 trigger; ///< [8.0.0+]
171 u8 pad_x4c4[4];
172} SwkbdArgVB;
173
174typedef struct {
175 SwkbdArgV7 arg;
176
177 u8* workbuf;
178 size_t workbuf_size;
179 s32 max_dictwords;
180
181 SwkbdCustomizedDictionarySet customizedDictionarySet;
182
183 u8 unkFlag;
184 u8 trigger;
185
186 u32 version;
188
189/// Rect
190typedef struct {
191 s16 x; ///< X
192 s16 y; ///< Y
193 s16 width; ///< Width
194 s16 height; ///< Height
195} SwkbdRect;
196
197/// InitializeArg for SwkbdInline.
198typedef struct {
199 u32 unk_x0;
200 u8 mode; ///< See \ref SwkbdInlineMode. (u8 bool)
201 u8 unk_x5; ///< Only set on [5.0.0+].
202 u8 pad[2];
204
205typedef struct {
206 SwkbdType type; ///< See \ref SwkbdType.
207 u16 okButtonText[9];
208 u16 leftButtonText;
209 u16 rightButtonText;
210 u8 dicFlag; ///< Enables dictionary usage when non-zero (including the system dictionary).
211 u8 unk_x1b;
212 u32 keySetDisableBitmask; ///< See SwkbdKeyDisableBitmask_*.
213 s32 stringLenMax; ///< When non-negative and non-zero, specifies the max string length. When the input is too long, swkbd will stop accepting more input until text is deleted via the B button (Backspace).
214 s32 stringLenMin; ///< When non-negative and non-zero, specifies the min string length. When the input is too short, swkbd will display an icon and disable the ok-button.
215 u8 returnButtonFlag; ///< Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled.
216 u8 unk_x29; ///< [10.0.0+] When value 1-2, \ref swkbdInlineAppear / \ref swkbdInlineAppearEx will set keytopAsFloating=0 and footerScalable=1.
217 u8 unk_x2a;
218 u8 unk_x2b;
219 u32 flags; ///< Bitmask 0x4: unknown.
220 u8 unk_x30;
221 u8 unk_x31[0x17];
223
224typedef struct {
225 u32 unk_x0;
226 u16 size; ///< Size of this struct.
227 u8 unk_x6;
228 u8 unk_x7;
229 u64 flags;
230 SwkbdInitializeArg initArg; ///< Flags bitmask 0x1.
231 float volume; ///< Flags bitmask 0x2.
232 s32 cursorPos; ///< Flags bitmask 0x10.
233 SwkbdAppearArg appearArg;
234 u16 inputText[0x3f4/2]; ///< Flags bitmask 0x8.
235 u8 utf8Mode; ///< Flags bitmask 0x20.
236 u8 unk_x45d;
237 u8 enableBackspace; ///< Flags bitmask 0x8000. Only available with [5.0.0+].
238 u8 unk_x45f[3];
239 u8 keytopAsFloating; ///< Flags bitmask 0x200.
240 u8 footerScalable; ///< Flags bitmask 0x100.
241 u8 alphaEnabledInInputMode; ///< Flags bitmask 0x100.
242 u8 inputModeFadeType; ///< Flags bitmask 0x100.
243 u8 disableTouch; ///< Flags bitmask 0x200.
244 u8 disableHardwareKeyboard; ///< Flags bitmask 0x800.
245 u8 unk_x468[5];
246 u8 unk_x46d;
247 u8 unk_x46e;
248 u8 unk_x46f;
249 float keytopScaleX; ///< Flags bitmask 0x200.
250 float keytopScaleY; ///< Flags bitmask 0x200.
251 float keytopTranslateX; ///< Flags bitmask 0x200.
252 float keytopTranslateY; ///< Flags bitmask 0x200.
253 float keytopBgAlpha; ///< Flags bitmask 0x100.
254 float footerBgAlpha; ///< Flags bitmask 0x100.
255 float balloonScale; ///< Flags bitmask 0x200.
256 float unk_x48c;
257 u8 unk_x490[0xc];
258 u8 seGroup; ///< Flags bitmask: enable=0x2000, disable=0x4000. Only available with [5.0.0+].
259 u8 triggerFlag; ///< [6.0.0+] Enables using the trigger field when set.
260 u8 trigger; ///< [6.0.0+] Trigger
261 u8 pad_x49f;
263
264/// Struct data for SwkbdInline Interactive reply storage ChangedString*, at the end following the string.
265typedef struct {
266 u32 stringLen; ///< String length in characters, without NUL-terminator.
267 s32 dicStartCursorPos; ///< Starting cursorPos for the current dictionary word in the current text string. -1 for none.
268 s32 dicEndCursorPos; ///< Ending cursorPos for the current dictionary word in the current text string. -1 for none.
269 s32 cursorPos; ///< Cursor position.
271
272/// Struct data for SwkbdInline Interactive reply storage MovedCursor*, at the end following the string.
273typedef struct {
274 u32 stringLen; ///< String length in characters, without NUL-terminator.
275 s32 cursorPos; ///< Cursor position.
277
278/// Struct data for SwkbdInline Interactive reply storage MovedTab*, at the end following the string.
279typedef struct {
280 u32 unk_x0;
281 u32 unk_x4;
283
284/// Struct data for SwkbdInline Interactive reply storage DecidedEnter*, at the end following the string.
285typedef struct {
286 u32 stringLen; ///< String length in characters, without NUL-terminator.
288
289/// This callback is used by \ref swkbdInlineUpdate when handling ChangedString* replies (text changed by the user or by \ref swkbdInlineSetInputText).
290/// str is the UTF-8 string for the current text.
291typedef void (*SwkbdChangedStringCb)(const char* str, SwkbdChangedStringArg* arg);
292
293/// This callback is used by \ref swkbdInlineUpdate when handling ChangedString*V2 replies (text changed by the user or by \ref swkbdInlineSetInputText).
294/// str is the UTF-8 string for the current text.
295typedef void (*SwkbdChangedStringV2Cb)(const char* str, SwkbdChangedStringArg* arg, bool flag);
296
297/// This callback is used by \ref swkbdInlineUpdate when handling MovedCursor* replies.
298/// str is the UTF-8 string for the current text.
299typedef void (*SwkbdMovedCursorCb)(const char* str, SwkbdMovedCursorArg* arg);
300
301/// This callback is used by \ref swkbdInlineUpdate when handling MovedCursor*V2 replies.
302/// str is the UTF-8 string for the current text.
303typedef void (*SwkbdMovedCursorV2Cb)(const char* str, SwkbdMovedCursorArg* arg, bool flag);
304
305/// This callback is used by \ref swkbdInlineUpdate when handling MovedTab* replies.
306/// str is the UTF-8 string for the current text.
307typedef void (*SwkbdMovedTabCb)(const char* str, SwkbdMovedTabArg* arg);
308
309/// This callback is used by \ref swkbdInlineUpdate when handling DecidedEnter* replies (when the final text was submitted via the button).
310/// str is the UTF-8 string for the current text.
311typedef void (*SwkbdDecidedEnterCb)(const char* str, SwkbdDecidedEnterArg* arg);
312
313/// InlineKeyboard
314typedef struct {
315 u32 version;
316 AppletHolder holder;
317 SwkbdInlineCalcArg calcArg;
318 bool directionalButtonAssignFlag;
319 SwkbdState state;
320
321 bool dicCustomInitialized;
322 bool customizedDictionariesInitialized;
323 AppletStorage dicStorage;
324
325 bool wordInfoInitialized;
326 AppletStorage wordInfoStorage;
327
328 u8* interactive_tmpbuf;
329 size_t interactive_tmpbuf_size;
330 char* interactive_strbuf;
331 size_t interactive_strbuf_size;
332
333 VoidFn finishedInitializeCb;
334 VoidFn decidedCancelCb;
335 SwkbdChangedStringCb changedStringCb;
336 SwkbdChangedStringV2Cb changedStringV2Cb;
337 SwkbdMovedCursorCb movedCursorCb;
338 SwkbdMovedCursorV2Cb movedCursorV2Cb;
339 SwkbdMovedTabCb movedTabCb;
340 SwkbdDecidedEnterCb decidedEnterCb;
341 VoidFn releasedUserWordInfoCb;
343
344/**
345 * @brief Creates a SwkbdConfig struct.
346 * @param c SwkbdConfig struct.
347 * @param max_dictwords Max \ref SwkbdDictWord entries, 0 for none.
348 */
350
351/**
352 * @brief Closes a SwkbdConfig struct.
353 * @param c SwkbdConfig struct.
354 */
356
357/**
358 * @brief Clears the args in the SwkbdConfig struct and initializes it with the Default Preset.
359 * @note Do not use this before \ref swkbdCreate.
360 * @note Uses the following: swkbdConfigSetType() with \ref SwkbdType_QWERTY, swkbdConfigSetInitialCursorPos() with value 1, swkbdConfigSetReturnButtonFlag() with value 1, and swkbdConfigSetBlurBackground() with value 1. Pre-5.0.0: swkbdConfigSetTextDrawType() with \ref SwkbdTextDrawType_Box.
361 * @param c SwkbdConfig struct.
362 */
364
365/**
366 * @brief Clears the args in the SwkbdConfig struct and initializes it with the Password Preset.
367 * @note Do not use this before \ref swkbdCreate.
368 * @note Uses the following: swkbdConfigSetType() with \ref SwkbdType_QWERTY, swkbdConfigSetInitialCursorPos() with value 1, swkbdConfigSetPasswordFlag() with value 1, and swkbdConfigSetBlurBackground() with value 1.
369 * @param c SwkbdConfig struct.
370 */
372
373/**
374 * @brief Clears the args in the SwkbdConfig struct and initializes it with the UserName Preset.
375 * @note Do not use this before \ref swkbdCreate.
376 * @note Uses the following: swkbdConfigSetType() with \ref SwkbdType_Normal, swkbdConfigSetKeySetDisableBitmask() with SwkbdKeyDisableBitmask_UserName, swkbdConfigSetInitialCursorPos() with value 1, and swkbdConfigSetBlurBackground() with value 1.
377 * @param c SwkbdConfig struct.
378 */
380
381/**
382 * @brief Clears the args in the SwkbdConfig struct and initializes it with the DownloadCode Preset.
383 * @note Do not use this before \ref swkbdCreate.
384 * @note Uses the following: swkbdConfigSetType() with \ref SwkbdType_Normal (\ref SwkbdType_QWERTY on [5.0.0+]), swkbdConfigSetKeySetDisableBitmask() with SwkbdKeyDisableBitmask_DownloadCode, swkbdConfigSetInitialCursorPos() with value 1, and swkbdConfigSetBlurBackground() with value 1. [5.0.0+]: swkbdConfigSetStringLenMax() with value 16, swkbdConfigSetStringLenMin() with value 1, and swkbdConfigSetTextDrawType() with SwkbdTextDrawType_DownloadCode. Uses swkbdConfigSetTextGrouping() for [0-2] with: 0x3, 0x7, and 0xb.
385 * @param c SwkbdConfig struct.
386 */
388
389/**
390 * @brief Sets the Ok button text. The default is "".
391 * @param c SwkbdConfig struct.
392 * @param str UTF-8 input string.
393 */
394void swkbdConfigSetOkButtonText(SwkbdConfig* c, const char* str);
395
396/**
397 * @brief Sets the LeftOptionalSymbolKey, for \ref SwkbdType_NumPad. The default is "".
398 * @param c SwkbdConfig struct.
399 * @param str UTF-8 input string.
400 */
402
403/**
404 * @brief Sets the RightOptionalSymbolKey, for \ref SwkbdType_NumPad. The default is "".
405 * @param c SwkbdConfig struct.
406 * @param str UTF-8 input string.
407 */
409
410/**
411 * @brief Sets the Header text. The default is "".
412 * @note See SwkbdArgCommon::stringLenMax.
413 * @param c SwkbdConfig struct.
414 * @param str UTF-8 input string.
415 */
416void swkbdConfigSetHeaderText(SwkbdConfig* c, const char* str);
417
418/**
419 * @brief Sets the Sub text. The default is "".
420 * @note See SwkbdArgCommon::stringLenMax.
421 * @param c SwkbdConfig struct.
422 * @param str UTF-8 input string.
423 */
424void swkbdConfigSetSubText(SwkbdConfig* c, const char* str);
425
426/**
427 * @brief Sets the Guide text. The default is "".
428 * @note The swkbd applet only displays this when the current displayed cursor position is 0.
429 * @param c SwkbdConfig struct.
430 * @param str UTF-8 input string.
431 */
432void swkbdConfigSetGuideText(SwkbdConfig* c, const char* str);
433
434/**
435 * @brief Sets the Initial text. The default is "".
436 * @param c SwkbdConfig struct.
437 * @param str UTF-8 input string.
438 */
439void swkbdConfigSetInitialText(SwkbdConfig* c, const char* str);
440
441/**
442 * @brief Sets the user dictionary.
443 * @param c SwkbdConfig struct.
444 * @param input Input data.
445 * @param entries Total entries in the buffer.
446 */
448
449/**
450 * @brief Sets the CustomizedDictionaries.
451 * @note Only available on [6.0.0+].
452 * @param c SwkbdConfig struct.
453 * @param dic Input \ref SwkbdCustomizedDictionarySet
454 */
456
457/**
458 * @brief Sets the TextCheck callback.
459 * @param c SwkbdConfig struct.
460 * @param cb \ref SwkbdTextCheckCb callback.
461 */
463
464/**
465 * @brief Sets SwkbdArgCommon::SwkbdType.
466 * @param c SwkbdConfig struct.
467 * @param type \ref SwkbdType
468 */
469static inline void swkbdConfigSetType(SwkbdConfig* c, SwkbdType type) {
470 c->arg.arg.arg.type = type;
471}
472
473/**
474 * @brief Sets SwkbdArgCommon::dicFlag.
475 * @param c SwkbdConfig struct.
476 * @param flag Flag
477 */
478static inline void swkbdConfigSetDicFlag(SwkbdConfig* c, u8 flag) {
479 c->arg.arg.arg.dicFlag = flag;
480}
481
482/**
483 * @brief Sets SwkbdArgCommon::keySetDisableBitmask.
484 * @param c SwkbdConfig struct.
485 * @param keySetDisableBitmask keySetDisableBitmask
486 */
487static inline void swkbdConfigSetKeySetDisableBitmask(SwkbdConfig* c, u32 keySetDisableBitmask) {
488 c->arg.arg.arg.keySetDisableBitmask = keySetDisableBitmask;
489}
490
491/**
492 * @brief Sets SwkbdArgCommon::initialCursorPos.
493 * @param c SwkbdConfig struct.
494 * @param initialCursorPos initialCursorPos
495 */
496static inline void swkbdConfigSetInitialCursorPos(SwkbdConfig* c, u32 initialCursorPos) {
497 c->arg.arg.arg.initialCursorPos = initialCursorPos;
498}
499
500/**
501 * @brief Sets SwkbdArgCommon::stringLenMax.
502 * @param c SwkbdConfig struct.
503 * @param stringLenMax stringLenMax
504 */
505static inline void swkbdConfigSetStringLenMax(SwkbdConfig* c, u32 stringLenMax) {
506 c->arg.arg.arg.stringLenMax = stringLenMax;
507}
508
509/**
510 * @brief Sets SwkbdArgCommon::stringLenMin.
511 * @param c SwkbdConfig struct.
512 * @param stringLenMin stringLenMin
513 */
514static inline void swkbdConfigSetStringLenMin(SwkbdConfig* c, u32 stringLenMin) {
515 c->arg.arg.arg.stringLenMin = stringLenMin;
516}
517
518/**
519 * @brief Sets SwkbdArgCommon::passwordFlag.
520 * @param c SwkbdConfig struct.
521 * @param flag Flag
522 */
523static inline void swkbdConfigSetPasswordFlag(SwkbdConfig* c, u32 flag) {
524 c->arg.arg.arg.passwordFlag = flag;
525}
526
527/**
528 * @brief Sets SwkbdArgCommon::textDrawType.
529 * @param c SwkbdConfig struct.
530 * @param textDrawType \ref SwkbdTextDrawType
531 */
532static inline void swkbdConfigSetTextDrawType(SwkbdConfig* c, SwkbdTextDrawType textDrawType) {
533 c->arg.arg.arg.textDrawType = textDrawType;
534}
535
536/**
537 * @brief Sets SwkbdArgCommon::returnButtonFlag.
538 * @param c SwkbdConfig struct.
539 * @param flag Flag
540 */
541static inline void swkbdConfigSetReturnButtonFlag(SwkbdConfig* c, u16 flag) {
542 c->arg.arg.arg.returnButtonFlag = flag;
543}
544
545/**
546 * @brief Sets SwkbdArgCommon::blurBackground.
547 * @param c SwkbdConfig struct.
548 * @param blurBackground blurBackground
549 */
550static inline void swkbdConfigSetBlurBackground(SwkbdConfig* c, u8 blurBackground) {
551 c->arg.arg.arg.blurBackground = blurBackground;
552}
553
554/**
555 * @brief Sets SwkbdArgV7::textGrouping.
556 * @param index Array index.
557 * @param value Value to write.
558 */
559static inline void swkbdConfigSetTextGrouping(SwkbdConfig* c, u32 index, u32 value) {
560 if (index >= sizeof(c->arg.textGrouping)/sizeof(u32)) return;
561 c->arg.textGrouping[index] = value;
562}
563
564/**
565 * @brief Sets SwkbdConfig::unkFlag, default is 0. Copied to SwkbdArgVB::unkFlag with [8.0.0+].
566 * @param flag Flag
567 */
568static inline void swkbdConfigSetUnkFlag(SwkbdConfig* c, u8 flag) {
569 c->unkFlag = flag;
570}
571
572/**
573 * @brief Sets SwkbdConfig::trigger, default is 0. Copied to SwkbdArgVB::trigger with [8.0.0+].
574 * @param trigger Trigger
575 */
576static inline void swkbdConfigSetTrigger(SwkbdConfig* c, u8 trigger) {
577 c->trigger = trigger;
578}
579
580/**
581 * @brief Launch swkbd with the specified config. This will return once swkbd is finished running.
582 * @note The string buffer is also used for the buffer passed to the \ref SwkbdTextCheckCb, when it's set. Hence, in that case this buffer should be large enough to handle TextCheck string input/output. The size passed to the callback is the same size passed here, -1.
583 * @param c SwkbdConfig struct.
584 * @param out_string UTF-8 Output string buffer.
585 * @param out_string_size UTF-8 Output string buffer size, including NUL-terminator.
586 */
587Result swkbdShow(SwkbdConfig* c, char* out_string, size_t out_string_size);
588
589/**
590 * @brief Creates a SwkbdInline object. Only available on [2.0.0+].
591 * @note This is essentially an asynchronous version of the regular swkbd.
592 * @note This calls \ref swkbdInlineSetUtf8Mode internally with flag=true.
593 * @param s SwkbdInline object.
594 */
596
597/**
598 * @brief Closes a SwkbdInline object. If the applet is running, this will tell the applet to exit, then wait for the applet to exit + applet exit handling.
599 * @param s SwkbdInline object.
600 */
602
603/**
604 * @brief Does setup for \ref SwkbdInitializeArg and launches the applet with the SwkbdInline object.
605 * @note The initArg is cleared, and on [5.0.0+] unk_x5 is set to 1.
606 * @param s SwkbdInline object.
607 */
609
610/**
611 * @brief Same as \ref swkbdInlineLaunch, except mode and unk_x5 for \ref SwkbdInitializeArg are set to the input params.
612 * @param s SwkbdInline object.
613 * @param mode Value for SwkbdInitializeArg::mode.
614 * @param unk_x5 Value for SwkbdInitializeArg::unk_x5.
615 */
617
618/**
619 * @brief GetWindowSize
620 * @param[out] width Output width.
621 * @param[out] height Output height.
622 */
624 *width = 1280;
625 *height = 720;
626}
627
628/**
629 * @brief GetImageMemoryRequirement
630 * @note Wrapper for \ref viGetIndirectLayerImageRequiredMemoryInfo.
631 * @param[out] out_size Output size.
632 * @param[out] out_alignment Output alignment.
633 */
635
636/**
637 * @brief GetImage
638 * @note Only available with ::SwkbdInlineMode_UserDisplay.
639 * @note For width/height, see \ref swkbdInlineGetWindowSize.
640 * @param s SwkbdInline object.
641 * @param[out] buffer Output RGBA8 image buffer, this must use the alignment from \ref swkbdInlineGetImageMemoryRequirement.
642 * @param[in] size Output buffer size, this must match the size from \ref swkbdInlineGetImageMemoryRequirement.
643 * @param[out] data_available Whether data is available.
644 */
645Result swkbdInlineGetImage(SwkbdInline* s, void* buffer, u64 size, bool *data_available);
646
647/**
648 * @brief Gets the image max height, relative to the bottom of the screen.
649 * @param s SwkbdInline object.
650 */
652
653/**
654 * @brief Gets the MiniaturizedHeight, relative to the bottom of the screen.
655 * @param s SwkbdInline object.
656 */
658
659/**
660 * @brief GetTouchRectangles. Returns number of valid Rects: 1 for only keytop, 2 for keytop/footer.
661 * @param s SwkbdInline object.
662 * @param[out] keytop \ref SwkbdRect for keytop. Optional, can be NULL.
663 * @param[out] footer \ref SwkbdRect for footer. Optional, can be NULL.
664 */
666
667/**
668 * @brief Gets whether the input x/y are within the output from \ref swkbdInlineGetTouchRectangles.
669 * @param s SwkbdInline object.
670 * @param[out] x X
671 * @param[out] y Y
672 */
674
675/**
676 * @brief Handles updating SwkbdInline state, this should be called periodically.
677 * @note Handles applet exit if needed, and also sends the \ref SwkbdInlineCalcArg to the applet if needed. Hence, this should be called at some point after writing to \ref SwkbdInlineCalcArg.
678 * @note Handles applet Interactive storage output when needed.
679 * @param s SwkbdInline object.
680 * @param out_state Optional output \ref SwkbdState.
681 */
683
684/**
685 * @brief Sets the FinishedInitialize callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
686 * @param s SwkbdInline object.
687 * @param cb Callback
688 */
690
691/**
692 * @brief Sets the DecidedCancel callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
693 * @param s SwkbdInline object.
694 * @param cb Callback
695 */
697
698/**
699 * @brief Sets the ChangedString callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
700 * @note This clears the callback set by \ref swkbdInlineSetChangedStringV2Callback.
701 * @note This should be called after \ref swkbdInlineLaunch / \ref swkbdInlineLaunchForLibraryApplet.
702 * @param s SwkbdInline object.
703 * @param cb \ref SwkbdChangedStringCb Callback
704 */
706
707/**
708 * @brief Sets the ChangedStringV2 callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
709 * @note Only available with [8.0.0+].
710 * @note This must be called after \ref swkbdInlineLaunch / \ref swkbdInlineLaunchForLibraryApplet.
711 * @param s SwkbdInline object.
712 * @param cb \ref SwkbdChangedStringV2Cb Callback
713 */
715
716/**
717 * @brief Sets the MovedCursor callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
718 * @note This clears the callback set by \ref swkbdInlineSetMovedCursorV2Callback.
719 * @note This should be called after \ref swkbdInlineLaunch / \ref swkbdInlineLaunchForLibraryApplet.
720 * @param s SwkbdInline object.
721 * @param cb \ref SwkbdMovedCursorCb Callback
722 */
724
725/**
726 * @brief Sets the MovedCursorV2 callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
727 * @note Only available with [8.0.0+].
728 * @note This must be called after \ref swkbdInlineLaunch / \ref swkbdInlineLaunchForLibraryApplet.
729 * @param s SwkbdInline object.
730 * @param cb \ref SwkbdMovedCursorV2Cb Callback
731 */
733
734/**
735 * @brief Sets the MovedTab callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
736 * @param s SwkbdInline object.
737 * @param cb \ref SwkbdMovedTabCb Callback
738 */
740
741/**
742 * @brief Sets the DecidedEnter callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
743 * @param s SwkbdInline object.
744 * @param cb \ref SwkbdDecidedEnterCb Callback
745 */
747
748/**
749 * @brief Sets the ReleasedUserWordInfo callback, used by \ref swkbdInlineUpdate. The default is NULL for none.
750 * @param s SwkbdInline object.
751 * @param cb Callback
752 */
754
755/**
756 * @brief Appear the kbd and set \ref SwkbdAppearArg.
757 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
758 * @note Wrapper for \ref swkbdInlineAppearEx, with trigger=0.
759 * @param s SwkbdInline object.
760 * @param arg Input SwkbdAppearArg.
761 */
763
764/**
765 * @brief Appear the kbd and set \ref SwkbdAppearArg.
766 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
767 * @param s SwkbdInline object.
768 * @param arg Input SwkbdAppearArg.
769 * @param trigger Trigger, default is 0. Requires [6.0.0+], on eariler versions this will always use value 0 internally.
770 */
771void swkbdInlineAppearEx(SwkbdInline* s, const SwkbdAppearArg* arg, u8 trigger);
772
773/**
774 * @brief Disappear the kbd.
775 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
776 * @param s SwkbdInline object.
777 */
779
780/**
781 * @brief Creates a \ref SwkbdAppearArg which can then be passed to \ref swkbdInlineAppear. arg is initialized with the defaults, with type being set to the input type.
782 * @param arg Output \ref SwkbdAppearArg.
783 * @param type \ref SwkbdType type
784 */
786
787/**
788 * @brief Sets okButtonText for the specified SwkbdAppearArg, which was previously initialized with \ref swkbdInlineMakeAppearArg.
789 * @param arg \ref SwkbdAppearArg
790 * @param str Input UTF-8 string for the Ok button text, this can be empty/NULL to use the default.
791 */
793
794/**
795 * @brief Sets the LeftButtonText, for \ref SwkbdType_NumPad. The default is "". Equivalent to \ref swkbdConfigSetLeftOptionalSymbolKey.
796 * @param arg \ref SwkbdAppearArg, previously initialized by \ref swkbdInlineMakeAppearArg.
797 * @param str UTF-8 input string.
798 */
800
801/**
802 * @brief Sets the RightButtonText, for \ref SwkbdType_NumPad. The default is "". Equivalent to \ref swkbdConfigSetRightOptionalSymbolKey.
803 * @param arg \ref SwkbdAppearArg, previously initialized by \ref swkbdInlineMakeAppearArg.
804 * @param str UTF-8 input string.
805 */
807
808/**
809 * @brief Sets the stringLenMax for the specified SwkbdAppearArg, which was previously initialized with \ref swkbdInlineMakeAppearArg.
810 * @param arg \ref SwkbdAppearArg
811 * @param stringLenMax Max string length
812 */
813static inline void swkbdInlineAppearArgSetStringLenMax(SwkbdAppearArg* arg, s32 stringLenMax) {
814 arg->stringLenMax = stringLenMax;
815}
816
817/**
818 * @brief Sets the stringLenMin for the specified SwkbdAppearArg, which was previously initialized with \ref swkbdInlineMakeAppearArg.
819 * @param arg \ref SwkbdAppearArg
820 * @param stringLenMin Min string length
821 */
822static inline void swkbdInlineAppearArgSetStringLenMin(SwkbdAppearArg* arg, s32 stringLenMin) {
823 arg->stringLenMin = stringLenMin;
824}
825
826/**
827 * @brief Sets the audio volume.
828 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
829 * @param s SwkbdInline object.
830 * @param volume Volume
831 */
832void swkbdInlineSetVolume(SwkbdInline* s, float volume);
833
834/**
835 * @brief Sets the current input text string. Overrides the entire user input string if the user previously entered any text.
836 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
837 * @note This will not affect the cursor position, see \ref swkbdInlineSetCursorPos for that.
838 * @param s SwkbdInline object.
839 * @param str UTF-8 input string.
840 */
841void swkbdInlineSetInputText(SwkbdInline* s, const char* str);
842
843/**
844 * @brief Sets the cursor character position in the string.
845 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
846 * @param s SwkbdInline object.
847 * @param pos Position
848 */
850
851/**
852 * @brief Sets the UserWordInfo.
853 * @note Not available when \ref SwkbdState is above ::SwkbdState_Initialized. Can't be used if this was already used previously.
854 * @note The specified buffer must not be used after this, until \ref swkbdInlineClose is used.
855 * @note \ref swkbdInlineUpdate must be called at some point afterwards.
856 * @note If input==NULL or total_entries==0, this will just call \ref swkbdInlineUnsetUserWordInfo internally.
857 * @param s SwkbdInline object.
858 * @param input Input data.
859 * @param entries Total entries in the buffer.
860 */
862
863/**
864 * @brief Request UnsetUserWordInfo.
865 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
866 * @note Not available when \ref SwkbdState is above ::SwkbdState_Initialized.
867 * @param s SwkbdInline object.
868 */
870
871/**
872 * @brief Sets the utf8Mode.
873 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
874 * @note Automatically used internally by \ref swkbdInlineCreate.
875 * @param s SwkbdInline object.
876 * @param flag Flag
877 */
879
880/**
881 * @brief Sets the CustomizeDic.
882 * @note Not available when \ref SwkbdState is above ::SwkbdState_Initialized. Can't be used if this or \ref swkbdInlineSetCustomizedDictionaries was already used previously.
883 * @note The specified buffer must not be used after this, until \ref swkbdInlineClose is used. However, it will also become available once \ref swkbdInlineUpdate handles SwkbdReplyType_UnsetCustomizeDic internally.
884 * @param s SwkbdInline object.
885 * @param buffer 0x1000-byte aligned buffer.
886 * @param size 0x1000-byte aligned buffer size.
887 * @param info Input \ref SwkbdCustomizeDicInfo
888 */
890
891/**
892 * @brief Request UnsetCustomizeDic.
893 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
894 * @note Not available when \ref SwkbdState is above ::SwkbdState_Initialized.
895 * @param s SwkbdInline object.
896 */
898
899/**
900 * @brief Sets the CustomizedDictionaries.
901 * @note Not available when \ref SwkbdState is above ::SwkbdState_Initialized. Can't be used if this or \ref swkbdInlineSetCustomizeDic was already used previously.
902 * @note The specified buffer in dic must not be used after this, until \ref swkbdInlineClose is used. However, it will also become available once \ref swkbdInlineUpdate handles SwkbdReplyType_UnsetCustomizedDictionaries internally.
903 * @note Only available on [6.0.0+].
904 * @param s SwkbdInline object.
905 * @param dic Input \ref SwkbdCustomizedDictionarySet
906 */
908
909/**
910 * @brief Request UnsetCustomizedDictionaries.
911 * @note Not available when \ref SwkbdState is above ::SwkbdState_Initialized.
912 * @note Only available on [6.0.0+].
913 * @param s SwkbdInline object.
914 */
916
917/**
918 * @brief Sets InputModeFadeType.
919 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
920 * @param s SwkbdInline object.
921 * @param type Type
922 */
924
925/**
926 * @brief Sets AlphaEnabledInInputMode.
927 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
928 * @param s SwkbdInline object.
929 * @param flag Flag
930 */
932
933/**
934 * @brief Sets KeytopBgAlpha.
935 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
936 * @param s SwkbdInline object.
937 * @param alpha Alpha, clamped to range 0.0f..1.0f.
938 */
940
941/**
942 * @brief Sets FooterBgAlpha.
943 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
944 * @param s SwkbdInline object.
945 * @param alpha Alpha, clamped to range 0.0f..1.0f.
946 */
948
949/**
950 * @brief Sets gfx scaling. Configures KeytopScale* and BalloonScale based on the input value.
951 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
952 * @note The BalloonScale is not updated when \ref SwkbdState is above ::SwkbdState_Initialized.
953 * @param s SwkbdInline object.
954 * @param scale Scale
955 */
957
958/**
959 * @brief Sets gfx translation for the displayed swkbd image position.
960 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
961 * @param s SwkbdInline object.
962 * @param x X
963 * @param y Y
964 */
966
967/**
968 * @brief Sets KeytopAsFloating.
969 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
970 * @note Not available when \ref SwkbdState is above ::SwkbdState_Initialized.
971 * @param s SwkbdInline object.
972 * @param flag Flag
973 */
975
976/**
977 * @brief Sets FooterScalable.
978 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
979 * @param s SwkbdInline object.
980 * @param flag Flag
981 */
983
984/**
985 * @brief Sets whether touch is enabled. The default is enabled.
986 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
987 * @param s SwkbdInline object.
988 * @param flag Flag
989 */
991
992/**
993 * @brief Sets whether Hardware-keyboard is enabled. The default is enabled.
994 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
995 * @param s SwkbdInline object.
996 * @param flag Flag
997 */
999
1000/**
1001 * @brief Sets whether DirectionalButtonAssign is enabled. The default is disabled.
1002 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
1003 * @note Only available on [4.0.0+].
1004 * @param s SwkbdInline object.
1005 * @param flag Flag
1006 */
1008
1009/**
1010 * @brief Sets whether the specified SeGroup (sound effect) is enabled. The default is enabled.
1011 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect. If called again with a different seGroup, \ref swkbdInlineUpdate must be called prior to calling this again.
1012 * @note Only available on [5.0.0+].
1013 * @param s SwkbdInline object.
1014 * @param seGroup SeGroup
1015 * @param flag Flag
1016 */
1017void swkbdInlineSetSeGroup(SwkbdInline* s, u8 seGroup, bool flag);
1018
1019/**
1020 * @brief Sets whether the backspace button is enabled. The default is enabled.
1021 * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.
1022 * @note Only available on [5.0.0+].
1023 * @param s SwkbdInline object.
1024 * @param flag Flag
1025 */
1027
LibraryApplet state.
Definition applet.h:241
applet IStorage
Definition applet.h:235
Definition swkbd.h:205
u8 returnButtonFlag
Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled.
Definition swkbd.h:215
u8 unk_x29
[10.0.0+] When value 1-2, swkbdInlineAppear / swkbdInlineAppearEx will set keytopAsFloating=0 and foo...
Definition swkbd.h:216
s32 stringLenMin
When non-negative and non-zero, specifies the min string length. When the input is too short,...
Definition swkbd.h:214
SwkbdType type
See SwkbdType.
Definition swkbd.h:206
u8 dicFlag
Enables dictionary usage when non-zero (including the system dictionary).
Definition swkbd.h:210
u32 keySetDisableBitmask
See SwkbdKeyDisableBitmask_*.
Definition swkbd.h:212
s32 stringLenMax
When non-negative and non-zero, specifies the max string length. When the input is too long,...
Definition swkbd.h:213
u32 flags
Bitmask 0x4: unknown.
Definition swkbd.h:219
Base swkbd arg struct.
Definition swkbd.h:122
u16 returnButtonFlag
Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled.
Definition swkbd.h:139
u32 passwordFlag
Use password: 0 = disable, 1 = enable.
Definition swkbd.h:137
u32 keySetDisableBitmask
See SwkbdKeyDisableBitmask_*.
Definition swkbd.h:129
SwkbdType type
See SwkbdType.
Definition swkbd.h:123
u32 stringLenMin
When non-zero, specifies the min string length. When the input is too short, swkbd will display an ic...
Definition swkbd.h:136
u8 dicFlag
Enables dictionary usage when non-zero (including the system dictionary).
Definition swkbd.h:127
u32 initialCursorPos
Initial cursor position in the string: 0 = start, 1 = end.
Definition swkbd.h:130
u8 blurBackground
When enabled with value 1, the background is blurred.
Definition swkbd.h:140
u32 stringLenMax
When non-zero, specifies the max string length. When the input is too long, swkbd will stop accepting...
Definition swkbd.h:135
SwkbdTextDrawType textDrawType
See SwkbdTextDrawType.
Definition swkbd.h:138
Definition swkbd.h:149
SwkbdTextCheckCb textCheckCb
This really doesn't belong in a struct sent to another process, but official sw does this.
Definition swkbd.h:152
Arg struct for version 0x30007+.
Definition swkbd.h:156
u32 textGrouping[8]
When set and enabled via SwkbdTextDrawType, controls displayed text grouping (inserts spaces,...
Definition swkbd.h:158
Arg struct for version 0x6000B+.
Definition swkbd.h:162
u8 total_entries
This is SwkbdCustomizedDictionarySet::total_entries.
Definition swkbd.h:167
u8 trigger
[8.0.0+]
Definition swkbd.h:170
u8 unkFlag
[8.0.0+]
Definition swkbd.h:168
Struct data for SwkbdInline Interactive reply storage ChangedString*, at the end following the string...
Definition swkbd.h:265
s32 dicStartCursorPos
Starting cursorPos for the current dictionary word in the current text string. -1 for none.
Definition swkbd.h:267
s32 cursorPos
Cursor position.
Definition swkbd.h:269
s32 dicEndCursorPos
Ending cursorPos for the current dictionary word in the current text string. -1 for none.
Definition swkbd.h:268
u32 stringLen
String length in characters, without NUL-terminator.
Definition swkbd.h:266
Definition swkbd.h:174
Input data for SwkbdInline request SetCustomizeDic.
Definition swkbd.h:110
Definition swkbd.h:114
void * buffer
0x1000-byte aligned buffer.
Definition swkbd.h:115
u32 buffer_size
0x1000-byte aligned buffer size.
Definition swkbd.h:116
Struct data for SwkbdInline Interactive reply storage DecidedEnter*, at the end following the string.
Definition swkbd.h:285
u32 stringLen
String length in characters, without NUL-terminator.
Definition swkbd.h:286
User dictionary word.
Definition swkbd.h:105
InitializeArg for SwkbdInline.
Definition swkbd.h:198
u8 mode
See SwkbdInlineMode. (u8 bool)
Definition swkbd.h:200
u8 unk_x5
Only set on [5.0.0+].
Definition swkbd.h:201
Definition swkbd.h:224
u8 footerScalable
Flags bitmask 0x100.
Definition swkbd.h:240
u8 trigger
[6.0.0+] Trigger
Definition swkbd.h:260
float keytopScaleY
Flags bitmask 0x200.
Definition swkbd.h:250
u8 alphaEnabledInInputMode
Flags bitmask 0x100.
Definition swkbd.h:241
float keytopScaleX
Flags bitmask 0x200.
Definition swkbd.h:249
u16 size
Size of this struct.
Definition swkbd.h:226
float keytopTranslateX
Flags bitmask 0x200.
Definition swkbd.h:251
u8 seGroup
Flags bitmask: enable=0x2000, disable=0x4000. Only available with [5.0.0+].
Definition swkbd.h:258
float balloonScale
Flags bitmask 0x200.
Definition swkbd.h:255
u8 triggerFlag
[6.0.0+] Enables using the trigger field when set.
Definition swkbd.h:259
u8 utf8Mode
Flags bitmask 0x20.
Definition swkbd.h:235
u8 enableBackspace
Flags bitmask 0x8000. Only available with [5.0.0+].
Definition swkbd.h:237
SwkbdInitializeArg initArg
Flags bitmask 0x1.
Definition swkbd.h:230
float footerBgAlpha
Flags bitmask 0x100.
Definition swkbd.h:254
u8 inputModeFadeType
Flags bitmask 0x100.
Definition swkbd.h:242
float keytopBgAlpha
Flags bitmask 0x100.
Definition swkbd.h:253
u8 disableHardwareKeyboard
Flags bitmask 0x800.
Definition swkbd.h:244
float keytopTranslateY
Flags bitmask 0x200.
Definition swkbd.h:252
u8 disableTouch
Flags bitmask 0x200.
Definition swkbd.h:243
u8 keytopAsFloating
Flags bitmask 0x200.
Definition swkbd.h:239
float volume
Flags bitmask 0x2.
Definition swkbd.h:231
s32 cursorPos
Flags bitmask 0x10.
Definition swkbd.h:232
InlineKeyboard.
Definition swkbd.h:314
Struct data for SwkbdInline Interactive reply storage MovedCursor*, at the end following the string.
Definition swkbd.h:273
u32 stringLen
String length in characters, without NUL-terminator.
Definition swkbd.h:274
s32 cursorPos
Cursor position.
Definition swkbd.h:275
Struct data for SwkbdInline Interactive reply storage MovedTab*, at the end following the string.
Definition swkbd.h:279
Rect.
Definition swkbd.h:190
s16 y
Y.
Definition swkbd.h:192
s16 x
X.
Definition swkbd.h:191
s16 width
Width.
Definition swkbd.h:193
s16 height
Height.
Definition swkbd.h:194
@ SwkbdKeyDisableBitmask_Percent
Disable ''.
Definition swkbd.h:37
@ SwkbdKeyDisableBitmask_Space
Disable space-bar.
Definition swkbd.h:35
@ SwkbdKeyDisableBitmask_Numbers
Disable numbers.
Definition swkbd.h:40
@ SwkbdKeyDisableBitmask_At
Disable '@'.
Definition swkbd.h:36
@ SwkbdKeyDisableBitmask_DownloadCode
Used for swkbdConfigMakePresetDownloadCode.
Definition swkbd.h:41
@ SwkbdKeyDisableBitmask_UserName
Used for swkbdConfigMakePresetUserName. Disables '@', '', and '\'.
Definition swkbd.h:42
@ SwkbdKeyDisableBitmask_ForwardSlash
Disable '/'.
Definition swkbd.h:38
@ SwkbdKeyDisableBitmask_Backslash
Disable '\'.
Definition swkbd.h:39
void swkbdInlineSetBackspaceFlag(SwkbdInline *s, bool flag)
Sets whether the backspace button is enabled.
void swkbdConfigMakePresetDefault(SwkbdConfig *c)
Clears the args in the SwkbdConfig struct and initializes it with the Default Preset.
void swkbdInlineAppearEx(SwkbdInline *s, const SwkbdAppearArg *arg, u8 trigger)
Appear the kbd and set SwkbdAppearArg.
void(* SwkbdChangedStringCb)(const char *str, SwkbdChangedStringArg *arg)
This callback is used by swkbdInlineUpdate when handling ChangedString* replies (text changed by the ...
Definition swkbd.h:291
void swkbdConfigSetTextCheckCallback(SwkbdConfig *c, SwkbdTextCheckCb cb)
Sets the TextCheck callback.
void swkbdConfigSetRightOptionalSymbolKey(SwkbdConfig *c, const char *str)
Sets the RightOptionalSymbolKey, for SwkbdType_NumPad.
void swkbdInlineSetVolume(SwkbdInline *s, float volume)
Sets the audio volume.
Result swkbdInlineLaunchForLibraryApplet(SwkbdInline *s, u8 mode, u8 unk_x5)
Same as swkbdInlineLaunch, except mode and unk_x5 for SwkbdInitializeArg are set to the input params.
Result swkbdCreate(SwkbdConfig *c, s32 max_dictwords)
Creates a SwkbdConfig struct.
void swkbdInlineSetHardwareKeyboardFlag(SwkbdInline *s, bool flag)
Sets whether Hardware-keyboard is enabled.
Result swkbdConfigSetCustomizedDictionaries(SwkbdConfig *c, const SwkbdCustomizedDictionarySet *dic)
Sets the CustomizedDictionaries.
void swkbdInlineSetChangedStringV2Callback(SwkbdInline *s, SwkbdChangedStringV2Cb cb)
Sets the ChangedStringV2 callback, used by swkbdInlineUpdate.
static void swkbdConfigSetTextGrouping(SwkbdConfig *c, u32 index, u32 value)
Sets SwkbdArgV7::textGrouping.
Definition swkbd.h:559
void swkbdInlineSetCursorPos(SwkbdInline *s, s32 pos)
Sets the cursor character position in the string.
static void swkbdConfigSetType(SwkbdConfig *c, SwkbdType type)
Sets SwkbdArgCommon::SwkbdType.
Definition swkbd.h:469
static void swkbdConfigSetReturnButtonFlag(SwkbdConfig *c, u16 flag)
Sets SwkbdArgCommon::returnButtonFlag.
Definition swkbd.h:541
void swkbdInlineSetKeytopScale(SwkbdInline *s, float scale)
Sets gfx scaling.
void swkbdInlineDisappear(SwkbdInline *s)
Disappear the kbd.
void swkbdInlineSetMovedCursorV2Callback(SwkbdInline *s, SwkbdMovedCursorV2Cb cb)
Sets the MovedCursorV2 callback, used by swkbdInlineUpdate.
static void swkbdConfigSetTrigger(SwkbdConfig *c, u8 trigger)
Sets SwkbdConfig::trigger, default is 0.
Definition swkbd.h:576
SwkbdTextDrawType
Value for SwkbdArgCommon::textDrawType. Only applies when stringLenMax is 1..32, otherwise swkbd will...
Definition swkbd.h:46
@ SwkbdTextDrawType_Line
The text will be displayed on a line. Also enables displaying the Header and Sub text.
Definition swkbd.h:47
@ SwkbdTextDrawType_DownloadCode
Used by swkbdConfigMakePresetDownloadCode on [5.0.0+]. Enables using SwkbdArgV7 unk_x3e0.
Definition swkbd.h:49
@ SwkbdTextDrawType_Box
The text will be displayed in a box.
Definition swkbd.h:48
void swkbdInlineSetReleasedUserWordInfoCallback(SwkbdInline *s, VoidFn cb)
Sets the ReleasedUserWordInfo callback, used by swkbdInlineUpdate.
Result swkbdShow(SwkbdConfig *c, char *out_string, size_t out_string_size)
Launch swkbd with the specified config.
void swkbdInlineMakeAppearArg(SwkbdAppearArg *arg, SwkbdType type)
Creates a SwkbdAppearArg which can then be passed to swkbdInlineAppear.
void swkbdInlineSetFooterScalable(SwkbdInline *s, bool flag)
Sets FooterScalable.
void(* SwkbdMovedCursorCb)(const char *str, SwkbdMovedCursorArg *arg)
This callback is used by swkbdInlineUpdate when handling MovedCursor* replies.
Definition swkbd.h:299
static void swkbdConfigSetBlurBackground(SwkbdConfig *c, u8 blurBackground)
Sets SwkbdArgCommon::blurBackground.
Definition swkbd.h:550
void swkbdConfigMakePresetPassword(SwkbdConfig *c)
Clears the args in the SwkbdConfig struct and initializes it with the Password Preset.
void swkbdInlineSetMovedCursorCallback(SwkbdInline *s, SwkbdMovedCursorCb cb)
Sets the MovedCursor callback, used by swkbdInlineUpdate.
static void swkbdInlineAppearArgSetStringLenMin(SwkbdAppearArg *arg, s32 stringLenMin)
Sets the stringLenMin for the specified SwkbdAppearArg, which was previously initialized with swkbdIn...
Definition swkbd.h:822
Result swkbdInlineSetCustomizeDic(SwkbdInline *s, void *buffer, size_t size, SwkbdCustomizeDicInfo *info)
Sets the CustomizeDic.
void swkbdInlineAppearArgSetLeftButtonText(SwkbdAppearArg *arg, const char *str)
Sets the LeftButtonText, for SwkbdType_NumPad.
Result swkbdInlineSetCustomizedDictionaries(SwkbdInline *s, const SwkbdCustomizedDictionarySet *dic)
Sets the CustomizedDictionaries.
Result swkbdInlineUnsetUserWordInfo(SwkbdInline *s)
Request UnsetUserWordInfo.
void swkbdInlineSetTouchFlag(SwkbdInline *s, bool flag)
Sets whether touch is enabled.
void swkbdInlineUnsetCustomizeDic(SwkbdInline *s)
Request UnsetCustomizeDic.
void swkbdInlineSetInputModeFadeType(SwkbdInline *s, u8 type)
Sets InputModeFadeType.
void(* SwkbdMovedCursorV2Cb)(const char *str, SwkbdMovedCursorArg *arg, bool flag)
This callback is used by swkbdInlineUpdate when handling MovedCursor*V2 replies.
Definition swkbd.h:303
Result swkbdInlineGetImageMemoryRequirement(u64 *out_size, u64 *out_alignment)
GetImageMemoryRequirement.
static void swkbdConfigSetTextDrawType(SwkbdConfig *c, SwkbdTextDrawType textDrawType)
Sets SwkbdArgCommon::textDrawType.
Definition swkbd.h:532
s32 swkbdInlineGetMaxHeight(SwkbdInline *s)
Gets the image max height, relative to the bottom of the screen.
static void swkbdConfigSetPasswordFlag(SwkbdConfig *c, u32 flag)
Sets SwkbdArgCommon::passwordFlag.
Definition swkbd.h:523
void swkbdConfigMakePresetUserName(SwkbdConfig *c)
Clears the args in the SwkbdConfig struct and initializes it with the UserName Preset.
SwkbdState
SwkbdInline State.
Definition swkbd.h:85
@ SwkbdState_Disappearing
The user pressed the ok or cancel button, causing the applet to disappear.
Definition swkbd.h:90
@ SwkbdState_Appearing
Applet is appearing.
Definition swkbd.h:88
@ SwkbdState_Initialized
Applet is initialized but hidden.
Definition swkbd.h:87
@ SwkbdState_Shown
Applet is fully shown and ready to accept text input.
Definition swkbd.h:89
@ SwkbdState_Inactive
Default state from swkbdInlineCreate, before a state is set by swkbdInlineUpdate when a reply is rece...
Definition swkbd.h:86
void swkbdConfigSetSubText(SwkbdConfig *c, const char *str)
Sets the Sub text.
void swkbdConfigSetGuideText(SwkbdConfig *c, const char *str)
Sets the Guide text.
Result swkbdInlineGetImage(SwkbdInline *s, void *buffer, u64 size, bool *data_available)
GetImage.
Result swkbdInlineSetUserWordInfo(SwkbdInline *s, const SwkbdDictWord *input, s32 entries)
Sets the UserWordInfo.
void swkbdInlineSetMovedTabCallback(SwkbdInline *s, SwkbdMovedTabCb cb)
Sets the MovedTab callback, used by swkbdInlineUpdate.
s32 swkbdInlineGetTouchRectangles(SwkbdInline *s, SwkbdRect *keytop, SwkbdRect *footer)
GetTouchRectangles.
void swkbdConfigMakePresetDownloadCode(SwkbdConfig *c)
Clears the args in the SwkbdConfig struct and initializes it with the DownloadCode Preset.
void swkbdInlineAppearArgSetRightButtonText(SwkbdAppearArg *arg, const char *str)
Sets the RightButtonText, for SwkbdType_NumPad.
static void swkbdConfigSetInitialCursorPos(SwkbdConfig *c, u32 initialCursorPos)
Sets SwkbdArgCommon::initialCursorPos.
Definition swkbd.h:496
s32 swkbdInlineGetMiniaturizedHeight(SwkbdInline *s)
Gets the MiniaturizedHeight, relative to the bottom of the screen.
void(* SwkbdMovedTabCb)(const char *str, SwkbdMovedTabArg *arg)
This callback is used by swkbdInlineUpdate when handling MovedTab* replies.
Definition swkbd.h:307
SwkbdInlineMode
Value for SwkbdInitializeArg mode. Controls the LibAppletMode when launching the applet.
Definition swkbd.h:96
@ SwkbdInlineMode_AppletDisplay
LibAppletMode_Background. The applet will handle displaying gfx on the screen.
Definition swkbd.h:98
@ SwkbdInlineMode_UserDisplay
LibAppletMode_BackgroundIndirect. This is the default. The user-process must handle displaying the sw...
Definition swkbd.h:97
Result swkbdInlineUnsetCustomizedDictionaries(SwkbdInline *s)
Request UnsetCustomizedDictionaries.
SwkbdReplyType
SwkbdInline Interactive output storage reply ID.
Definition swkbd.h:65
void swkbdInlineSetDecidedCancelCallback(SwkbdInline *s, VoidFn cb)
Sets the DecidedCancel callback, used by swkbdInlineUpdate.
bool swkbdInlineIsUsedTouchPointByKeyboard(SwkbdInline *s, s32 x, s32 y)
Gets whether the input x/y are within the output from swkbdInlineGetTouchRectangles.
void swkbdInlineSetInputText(SwkbdInline *s, const char *str)
Sets the current input text string.
void swkbdInlineSetDecidedEnterCallback(SwkbdInline *s, SwkbdDecidedEnterCb cb)
Sets the DecidedEnter callback, used by swkbdInlineUpdate.
void swkbdInlineSetChangedStringCallback(SwkbdInline *s, SwkbdChangedStringCb cb)
Sets the ChangedString callback, used by swkbdInlineUpdate.
void swkbdConfigSetHeaderText(SwkbdConfig *c, const char *str)
Sets the Header text.
void swkbdInlineAppearArgSetOkButtonText(SwkbdAppearArg *arg, const char *str)
Sets okButtonText for the specified SwkbdAppearArg, which was previously initialized with swkbdInline...
static void swkbdConfigSetKeySetDisableBitmask(SwkbdConfig *c, u32 keySetDisableBitmask)
Sets SwkbdArgCommon::keySetDisableBitmask.
Definition swkbd.h:487
void swkbdConfigSetLeftOptionalSymbolKey(SwkbdConfig *c, const char *str)
Sets the LeftOptionalSymbolKey, for SwkbdType_NumPad.
void swkbdClose(SwkbdConfig *c)
Closes a SwkbdConfig struct.
void swkbdInlineSetFooterBgAlpha(SwkbdInline *s, float alpha)
Sets FooterBgAlpha.
void swkbdInlineSetUtf8Mode(SwkbdInline *s, bool flag)
Sets the utf8Mode.
void swkbdInlineSetFinishedInitializeCallback(SwkbdInline *s, VoidFn cb)
Sets the FinishedInitialize callback, used by swkbdInlineUpdate.
static void swkbdInlineGetWindowSize(s32 *width, s32 *height)
GetWindowSize.
Definition swkbd.h:623
Result swkbdInlineUpdate(SwkbdInline *s, SwkbdState *out_state)
Handles updating SwkbdInline state, this should be called periodically.
SwkbdRequestCommand
SwkbdInline Interactive input storage request ID.
Definition swkbd.h:53
static void swkbdConfigSetStringLenMin(SwkbdConfig *c, u32 stringLenMin)
Sets SwkbdArgCommon::stringLenMin.
Definition swkbd.h:514
void(* SwkbdChangedStringV2Cb)(const char *str, SwkbdChangedStringArg *arg, bool flag)
This callback is used by swkbdInlineUpdate when handling ChangedString*V2 replies (text changed by th...
Definition swkbd.h:295
void swkbdInlineSetKeytopAsFloating(SwkbdInline *s, bool flag)
Sets KeytopAsFloating.
void swkbdInlineSetSeGroup(SwkbdInline *s, u8 seGroup, bool flag)
Sets whether the specified SeGroup (sound effect) is enabled.
static void swkbdConfigSetStringLenMax(SwkbdConfig *c, u32 stringLenMax)
Sets SwkbdArgCommon::stringLenMax.
Definition swkbd.h:505
void swkbdInlineSetKeytopTranslate(SwkbdInline *s, float x, float y)
Sets gfx translation for the displayed swkbd image position.
void swkbdInlineSetDirectionalButtonAssignFlag(SwkbdInline *s, bool flag)
Sets whether DirectionalButtonAssign is enabled.
void swkbdConfigSetOkButtonText(SwkbdConfig *c, const char *str)
Sets the Ok button text.
void swkbdInlineAppear(SwkbdInline *s, const SwkbdAppearArg *arg)
Appear the kbd and set SwkbdAppearArg.
SwkbdType
Type of keyboard.
Definition swkbd.h:20
@ SwkbdType_Unknown9
Unknown.
Definition swkbd.h:30
@ SwkbdType_QWERTY
QWERTY (and variants) keyboard only.
Definition swkbd.h:23
@ SwkbdType_Normal
Normal keyboard.
Definition swkbd.h:21
@ SwkbdType_All
All language keyboards.
Definition swkbd.h:29
@ SwkbdType_ZhHans
Chinese Simplified keyboard only.
Definition swkbd.h:26
@ SwkbdType_ZhHant
Chinese Traditional keyboard only.
Definition swkbd.h:27
@ SwkbdType_NumPad
Number pad. The buttons at the bottom left/right are only available when they're set by swkbdConfigSe...
Definition swkbd.h:22
@ SwkbdType_Korean
Korean keyboard only.
Definition swkbd.h:28
@ SwkbdType_Unknown3
The same as SwkbdType_Normal keyboard.
Definition swkbd.h:24
@ SwkbdType_Latin
All Latin like languages keyboard only (without CJK keyboard).
Definition swkbd.h:25
void swkbdInlineSetAlphaEnabledInInputMode(SwkbdInline *s, bool flag)
Sets AlphaEnabledInInputMode.
void(* SwkbdDecidedEnterCb)(const char *str, SwkbdDecidedEnterArg *arg)
This callback is used by swkbdInlineUpdate when handling DecidedEnter* replies (when the final text w...
Definition swkbd.h:311
Result swkbdInlineClose(SwkbdInline *s)
Closes a SwkbdInline object.
static void swkbdInlineAppearArgSetStringLenMax(SwkbdAppearArg *arg, s32 stringLenMax)
Sets the stringLenMax for the specified SwkbdAppearArg, which was previously initialized with swkbdIn...
Definition swkbd.h:813
SwkbdTextCheckResult(* SwkbdTextCheckCb)(char *tmp_string, size_t tmp_string_size)
TextCheck callback set by swkbdConfigSetTextCheckCallback, for validating the input string when the s...
Definition swkbd.h:102
static void swkbdConfigSetUnkFlag(SwkbdConfig *c, u8 flag)
Sets SwkbdConfig::unkFlag, default is 0.
Definition swkbd.h:568
void swkbdConfigSetInitialText(SwkbdConfig *c, const char *str)
Sets the Initial text.
Result swkbdInlineCreate(SwkbdInline *s)
Creates a SwkbdInline object.
SwkbdTextCheckResult
Output result returned by SwkbdTextCheckCb.
Definition swkbd.h:12
@ SwkbdTextCheckResult_Bad
Failure, invalid string. Error message is displayed in a message-box, pressing OK will return to swkb...
Definition swkbd.h:14
@ SwkbdTextCheckResult_Silent
Failure, invalid string. With value 3 and above, swkbd will silently not accept the string,...
Definition swkbd.h:16
@ SwkbdTextCheckResult_OK
Success, valid string.
Definition swkbd.h:13
@ SwkbdTextCheckResult_Prompt
Failure, invalid string. Error message is displayed in a message-box, pressing Cancel will return to ...
Definition swkbd.h:15
Result swkbdInlineLaunch(SwkbdInline *s)
Does setup for SwkbdInitializeArg and launches the applet with the SwkbdInline object.
void swkbdConfigSetDictionary(SwkbdConfig *c, const SwkbdDictWord *input, s32 entries)
Sets the user dictionary.
void swkbdInlineSetKeytopBgAlpha(SwkbdInline *s, float alpha)
Sets KeytopBgAlpha.
static void swkbdConfigSetDicFlag(SwkbdConfig *c, u8 flag)
Sets SwkbdArgCommon::dicFlag.
Definition swkbd.h:478
#define BIT(n)
Creates a bitmask from a bit number.
Definition types.h:54
uint64_t u64
64-bit unsigned integer.
Definition types.h:22
void(* VoidFn)(void)
Function without arguments nor return value.
Definition types.h:46
uint8_t u8
8-bit unsigned integer.
Definition types.h:19
int16_t s16
16-bit signed integer.
Definition types.h:26
#define NX_PACKED
Packs a struct so that it won't include padding bytes.
Definition types.h:63
uint16_t u16
16-bit unsigned integer.
Definition types.h:20
u32 Result
Function error code result type.
Definition types.h:44
#define NX_CONSTEXPR
Flags a function as constexpr in C++14 and above; or as (always) inline otherwise.
Definition types.h:92
int32_t s32
32-bit signed integer.
Definition types.h:27
uint32_t u32
32-bit unsigned integer.
Definition types.h:21