1 /* Please see man pages for details
2 
3 
4 */
5 #ifndef NN_SWKBD_CTR_SWKBD_API_H_
6 #define NN_SWKBD_CTR_SWKBD_API_H_
7 
8 #include <nn/types.h>
9 #include <nn/applet.h>
10 
11 #ifdef  __cplusplus
12 
13 namespace nn
14 {
15 namespace swkbd
16 {
17 namespace CTR
18 {
19 
20 /* Please see man pages for details
21 
22 */
23 const u16   VERSION_NUMBER  = 4;
24 
25 /* Please see man pages for details
26 
27 */
28 enum KeyboardType
29 {
30     KEYBOARD_TYPE_FULL = 0,             //
31     KEYBOARD_TYPE_QWERTY,               //
32     KEYBOARD_TYPE_TENKEY,               //
33     KEYBOARD_TYPE_NO_JAPANESE,          //
34     KEYBOARD_TYPE_MAX,                  //
35 
36     KEYBOARD_TYPE_MAX_BIT = (1u << 31)  //
37 };
38 
39 /* Please see man pages for details
40 
41 */
42 enum BottomButtonType
43 {
44     BOTTOM_BUTTON_TYPE_1BUTTON = 0,     //
45     BOTTOM_BUTTON_TYPE_2BUTTON,         //
46     BOTTOM_BUTTON_TYPE_3BUTTON,         //
47     BOTTOM_BUTTON_TYPE_MAX,             //
48 
49     BOTTOM_BUTTON_TYPE_MAX_BIT = (1u << 31) //
50 };
51 
52 /* Please see man pages for details
53 
54 */
55 enum BottomButton
56 {
57     BOTTOM_BUTTON_0 = 0,    //
58     BOTTOM_BUTTON_1,        //
59     BOTTOM_BUTTON_2,        //
60     BOTTOM_BUTTON_MAX,      //
61 
62     BOTTOM_BUTTON_1BUTTON           = BOTTOM_BUTTON_2,  //
63     BOTTOM_BUTTON_2BUTTON_LEFT      = BOTTOM_BUTTON_0,  //
64     BOTTOM_BUTTON_2BUTTON_RIGHT     = BOTTOM_BUTTON_2,  //
65     BOTTOM_BUTTON_3BUTTON_LEFT      = BOTTOM_BUTTON_0,  //
66     BOTTOM_BUTTON_3BUTTON_MIDDLE    = BOTTOM_BUTTON_1,  //
67     BOTTOM_BUTTON_3BUTTON_RIGHT     = BOTTOM_BUTTON_2,  //
68 
69     BOTTOM_BUTTON_MAX_BIT = (1u << 31)  //
70 };
71 
72 /* Please see man pages for details
73 
74 */
75 enum TenkeyExtKey
76 {
77     TENKEY_EXT_KEY_LEFT = 0,            //
78     TENKEY_EXT_KEY_RIGHT,               //
79     TENKEY_EXT_KEY_MAX,                 //
80 
81     TENKEY_EXT_KEY_MAX_BIT = (1u << 31) //
82 };
83 
84 /* Please see man pages for details
85 
86 */
87 enum FinishableCondition
88 {
89     FINISHABLE_CONDITION_NONE = 0,          //
90     FINISHABLE_CONDITION_ANY,               //
91     FINISHABLE_CONDITION_NON_SPACE,         //
92     FINISHABLE_CONDITION_EXCEPT_SPACE_ONLY, //
93     FINISHABLE_CONDITION_FULL,              //
94 
95     FINISHABLE_CONDITION_MAX,               //
96 
97     FINISHABLE_CONDITION_MAX_BIT = (1u << 31)   //
98 };
99 
100 /* Please see man pages for details
101 
102 */
103 enum MaskMode
104 {
105     MASK_MODE_DISABLE = 0,              //
106     MASK_MODE_IMMEDIATE,                //
107     MASK_MODE_WAIT_1SEC,                //
108 
109     MASK_MODE_MAX,                      //
110 
111     MASK_MODE_MAX_BIT = (1u << 31)      //
112 };
113 
114 /* Please see man pages for details
115 
116 */
117 enum ParentalControlsMode
118 {
119     PARENTAL_CONTROLS_MODE_DISABLE = 0,     //
120     PARENTAL_CONTROLS_MODE_ENABLE,          //
121     PARENTAL_CONTROLS_MODE_SYSTEM_SETTINGS, //
122     PARENTAL_CONTROLS_MODE_MAX,             //
123 
124     PARENTAL_CONTROLS_MODE_MAX_BIT = (1u << 31) //
125 };
126 
127 /* Please see man pages for details
128 
129 */
130 enum UpperScreenFlag
131 {
132     UPPER_SCREEN_NORMAL                     = 0x0,  //
133     UPPER_SCREEN_DARK                       = 0x1,  //
134 
135     UPPER_SCREEN_MAX_BIT = (1u << 31)               //
136 };
137 
138 /* Please see man pages for details
139 
140 */
141 enum TextCheckFlag
142 {
143     TEXT_CHECK_DISABLE                      = 0x0,  //
144     TEXT_CHECK_NUMBER                       = 0x1,  //
145     TEXT_CHECK_AT_MARK                      = 0x2,  //
146     TEXT_CHECK_PERCENT_SIGN                 = 0x4,  //
147     TEXT_CHECK_BACKSLASH                    = 0x8,  //
148     TEXT_CHECK_BANNED_WORDS                 = 0x10, //
149     TEXT_CHECK_APP                          = 0x20, //
150 
151     TEXT_CHECK_MAX_BIT = (1u << 31)                 //
152 };
153 
154 /* Please see man pages for details
155 
156 */
157 enum ExtOutputDataFlag
158 {
159     EXT_OUTPUT_DATA_NONE                    = 0x0,  //
160     EXT_OUTPUT_DATA_STATUS                  = 0x1,  //
161     EXT_OUTPUT_DATA_LEARNING                = 0x2,  //
162 
163     EXT_OUTPUT_DATA_MAX_BIT = (1u << 31)            //
164 };
165 
166 /* Please see man pages for details
167 
168 */
169 enum AppTextCheckResult
170 {
171     APP_TEXT_CHECK_RESULT_OK = 0,       //
172     APP_TEXT_CHECK_RESULT_NG_FINISH,    //
173     APP_TEXT_CHECK_RESULT_NG_CONTINUE,  //
174 
175     APP_TEXT_CHECK_RESULT_MAX,          //
176 
177     APP_TEXT_CHECK_RESULT_MAX_BIT = (1u << 31)  //
178 };
179 
180 /* Please see man pages for details
181 
182 
183 
184 */
185 enum ReturnCode
186 {
187     RETURN_CODE_UNKNOWN                         = -1,   //
188     RETURN_CODE_INVALID_CONFIG                  = -2,   //
189     RETURN_CODE_OUT_OF_MEMORY                   = -3,   //
190     //RETURN_CODE_INVALID_VERSION                 = -4,   //!< Version numbers do not match
191     RETURN_CODE_BOTTOM_BUTTON_1BUTTON           = 0,    //
192     RETURN_CODE_BOTTOM_BUTTON_2BUTTON_LEFT      = 1,    //
193     RETURN_CODE_BOTTOM_BUTTON_2BUTTON_RIGHT     = 2,    //
194     RETURN_CODE_BOTTOM_BUTTON_3BUTTON_LEFT      = 3,    //
195     RETURN_CODE_BOTTOM_BUTTON_3BUTTON_MIDDLE    = 4,    //
196     RETURN_CODE_BOTTOM_BUTTON_3BUTTON_RIGHT     = 5,    //
197     RETURN_CODE_HOME_BUTTON                     = 10,   //
198     RETURN_CODE_SOFTWARE_RESET                  = 11,   //
199     RETURN_CODE_POWER_BUTTON                    = 12,   //
200     RETURN_CODE_PARENTAL_CONTROLS_SUCCESS       = 20,   //
201     RETURN_CODE_PARENTAL_CONTROLS_FAILURE       = 21,   //
202     RETURN_CODE_APP_TEXT_CHECK_NG               = 30,   //
203 
204     RETURN_CODE_MAX_BIT = (s32)(1u << 31)               //
205 };
206 
207 /* Please see man pages for details
208 
209 */
210 const size_t    STATUS_DATA_SIZE                        = 68;
211 
212 /* Please see man pages for details
213 
214 */
215 const size_t    LEARNING_DATA_SIZE                      = 42092;
216 
217 /* Please see man pages for details
218 
219 */
220 const u16       TEXT_LENGTH_MAX_MIN                     = 1;
221 
222 /* Please see man pages for details
223 
224 */
225 const u16       TEXT_LENGTH_MAX_MAX                     = 65000;
226 
227 /* Please see man pages for details
228 
229 */
230 const u16       FIXED_WIDTH_TEXT_LENGTH_MAX_MAX         = 32;
231 
232 /* Please see man pages for details
233 
234 */
235 const u16       TEXT_CHECK_TEXT_LENGTH_MAX_MAX          = 2000;
236 
237 /* Please see man pages for details
238 
239 */
240 const u16       BANNED_WORD_CHECK_TEXT_LENGTH_MAX_MAX   = 64;
241 
242 /* Please see man pages for details
243 
244 */
245 const u16       BOTTOM_BUTTON_TEXT_LENGTH_MAX           = 16;
246 
247 /* Please see man pages for details
248 
249 */
250 const u16       GUIDE_TEXT_LENGTH_MAX                   = 64;
251 
252 /* Please see man pages for details
253 
254 */
255 const u16       APP_TEXT_CHECK_DIALOG_TEXT_LENGTH_MAX   = 256;
256 
257 /* Please see man pages for details
258 
259 */
260 const u16       NUM_USER_WORDS_MAX                      = 500;
261 
262 /* Please see man pages for details
263 
264 */
265 const u16       USER_WORD_LENGTH_MAX                    = 40;
266 
267 /* Please see man pages for details
268 
269 */
270 const u16       USER_READING_LENGTH_MAX                 = 40;
271 
272 /* Please see man pages for details
273 
274 */
275 struct UserWord
276 {
277     wchar_t     reading[USER_READING_LENGTH_MAX + 1];   //
278     wchar_t     word[USER_WORD_LENGTH_MAX + 1];         //
279     u8          language;                               //
280     bool        allLanguage;                            //
281 };
282 
283 /* Please see man pages for details
284 
285 
286 
287 
288 
289 
290 */
291 typedef AppTextCheckResult (*AppTextCheckCallback)(
292     const wchar_t** ppDialogText,
293     const wchar_t* pInputText,
294     u16 inputTextLength
295 );
296 
297 /* Please see man pages for details
298 
299 */
300 struct Config
301 {
302     //----------------------------------------
303     //
304     //
305 
306     KeyboardType        keyboardType;                           //
307     BottomButtonType    bottomButtonType;                       //
308     FinishableCondition finishableCondition;                    //
309     MaskMode            maskMode;                               //
310     ParentalControlsMode    parentalControlsMode;               //
311     bit32               upperScreenFlag;                        //
312     bit32               textCheckFlag;                          //
313     bit32               extOutputDataFlag;                      //
314     u16                 textLengthMax;                          //
315     u16                 numUserWords;                           //
316     u16                 numNumbersMax;                          //
317     wchar_t             bottomButtonText[BOTTOM_BUTTON_MAX][BOTTOM_BUTTON_TEXT_LENGTH_MAX + 1]; //
318     wchar_t             tenkeyExtKeyChar[TENKEY_EXT_KEY_MAX];   //
319     wchar_t             guideText[GUIDE_TEXT_LENGTH_MAX + 1];   //
320     bool                prediction;                             //
321     bool                lineFeed;                               //
322     bool                fixedWidthMode;                         //
323     bool                homeButton;                             //
324     bool                softwareReset;                          //
325     bool                powerButton;                            //
326     bool                communicateWithOtherRegions;            //
327     bool                bootWithQwerty;                         //
328     bool                bottomButtonToFinish[BOTTOM_BUTTON_MAX];//
329 
330     u8                  padding0[3];
331 
332     //
333 
334     //----------------------------------------
335     //
336     //
337 
338     sptr                initialInputText;                       //
339     sptr                userWordArray;                          //
340     sptr                initialStatusData;                      //
341     sptr                initialLearningData;                    //
342     size_t              sharedMemorySize;                       //
343     u16                 versionNumber;                          //
344     u8                  padding1[2];
345 
346     //
347 
348     //----------------------------------------
349     //
350     //
351 
352     ReturnCode          returnCode;                             //
353     sptr                statusData;                             //
354     sptr                learningData;                           //
355     sptr                inputText;                              //
356     u16                 inputTextLength;                        //
357     u8                  padding2[2];
358 
359     //
360 
361     //----------------------------------------
362     //
363     //
364 
365     AppTextCheckResult  appTextCheckResult;                     //
366     wchar_t             appTextCheckDialogText[APP_TEXT_CHECK_DIALOG_TEXT_LENGTH_MAX + 1];  //
367 
368     u8                  padding3[2];
369 
370     //
371 
372     //----------------------------------------
373     //
374     //
375 
376     /* Please see man pages for details
377 
378     */
379     u8                  reserved[172];
380 
381     //
382 };
383 
384 /* Please see man pages for details
385 
386 */
387 struct Parameter
388 {
389     Config                          config;     //
390 };
391 
392 /* Please see man pages for details
393 
394 
395 
396 
397 */
398 void InitializeConfig(Config* pConfig);
399 
400 /* Please see man pages for details
401 
402 
403 
404 
405 
406 
407 
408 
409 */
410 s32 GetSharedMemorySize(
411     const Config* pConfig,
412     const void* pInitialStatusData = NULL,
413     const void* pInitialLearningData = NULL
414 );
415 
416 /* Please see man pages for details
417 
418 */
419 void PreloadKeyboardApplet();
420 
421 /* Please see man pages for details
422 
423 */
424 void CancelPreloadKeyboardApplet();
425 
426 /* Please see man pages for details
427 
428 */
429 void WaitForPreloadKeyboardApplet();
430 
431 /* Please see man pages for details
432 
433 
434 
435 
436 */
437 bool IsRegisteredKeyboardApplet();
438 
439 /* Please see man pages for details
440 
441 
442 
443 
444 
445 
446 
447 
448 
449 
450 
451 
452 */
453 bool StartKeyboardApplet(
454     nn::applet::AppletWakeupState* pWakeupState,
455     Parameter* pParameter,
456     void* pSharedMemoryAddr,
457     size_t sharedMemorySize,
458     const wchar_t* pInitialInputText = NULL,
459     const UserWord* pUserWordArray = NULL,
460     const void* pInitialStatusData = NULL,
461     const void* pInitialLearningData = NULL,
462     AppTextCheckCallback callback = NULL
463 );
464 
465 }}}
466 
467 #endif // __cplusplus
468 
469 #endif // ifndef NN_SWKBD_CTR_SWKBD_API_H_
470