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