/* Please see man pages for details */ #ifndef NN_SWKBD_CTR_SWKBD_API_H_ #define NN_SWKBD_CTR_SWKBD_API_H_ #include #include #ifdef __cplusplus namespace nn { namespace swkbd { namespace CTR { /* Please see man pages for details */ const u16 VERSION_NUMBER = 4; /* Please see man pages for details */ enum KeyboardType { KEYBOARD_TYPE_FULL = 0, // KEYBOARD_TYPE_QWERTY, // KEYBOARD_TYPE_TENKEY, // KEYBOARD_TYPE_NO_JAPANESE, // KEYBOARD_TYPE_MAX, // KEYBOARD_TYPE_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum BottomButtonType { BOTTOM_BUTTON_TYPE_1BUTTON = 0, // BOTTOM_BUTTON_TYPE_2BUTTON, // BOTTOM_BUTTON_TYPE_3BUTTON, // BOTTOM_BUTTON_TYPE_MAX, // BOTTOM_BUTTON_TYPE_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum BottomButton { BOTTOM_BUTTON_0 = 0, // BOTTOM_BUTTON_1, // BOTTOM_BUTTON_2, // BOTTOM_BUTTON_MAX, // BOTTOM_BUTTON_1BUTTON = BOTTOM_BUTTON_2, // BOTTOM_BUTTON_2BUTTON_LEFT = BOTTOM_BUTTON_0, // BOTTOM_BUTTON_2BUTTON_RIGHT = BOTTOM_BUTTON_2, // BOTTOM_BUTTON_3BUTTON_LEFT = BOTTOM_BUTTON_0, // BOTTOM_BUTTON_3BUTTON_MIDDLE = BOTTOM_BUTTON_1, // BOTTOM_BUTTON_3BUTTON_RIGHT = BOTTOM_BUTTON_2, // BOTTOM_BUTTON_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum TenkeyExtKey { TENKEY_EXT_KEY_LEFT = 0, // TENKEY_EXT_KEY_RIGHT, // TENKEY_EXT_KEY_MAX, // TENKEY_EXT_KEY_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum FinishableCondition { FINISHABLE_CONDITION_NONE = 0, // FINISHABLE_CONDITION_ANY, // FINISHABLE_CONDITION_NON_SPACE, // FINISHABLE_CONDITION_EXCEPT_SPACE_ONLY, // FINISHABLE_CONDITION_FULL, // FINISHABLE_CONDITION_MAX, // FINISHABLE_CONDITION_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum MaskMode { MASK_MODE_DISABLE = 0, // MASK_MODE_IMMEDIATE, // MASK_MODE_WAIT_1SEC, // MASK_MODE_MAX, // MASK_MODE_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum ParentalControlsMode { PARENTAL_CONTROLS_MODE_DISABLE = 0, // PARENTAL_CONTROLS_MODE_ENABLE, // PARENTAL_CONTROLS_MODE_SYSTEM_SETTINGS, // PARENTAL_CONTROLS_MODE_MAX, // PARENTAL_CONTROLS_MODE_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum UpperScreenFlag { UPPER_SCREEN_NORMAL = 0x0, // UPPER_SCREEN_DARK = 0x1, // UPPER_SCREEN_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum TextCheckFlag { TEXT_CHECK_DISABLE = 0x0, // TEXT_CHECK_NUMBER = 0x1, // TEXT_CHECK_AT_MARK = 0x2, // TEXT_CHECK_PERCENT_SIGN = 0x4, // TEXT_CHECK_BACKSLASH = 0x8, // TEXT_CHECK_BANNED_WORDS = 0x10, // TEXT_CHECK_APP = 0x20, // TEXT_CHECK_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum ExtOutputDataFlag { EXT_OUTPUT_DATA_NONE = 0x0, // EXT_OUTPUT_DATA_STATUS = 0x1, // EXT_OUTPUT_DATA_LEARNING = 0x2, // EXT_OUTPUT_DATA_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum AppTextCheckResult { APP_TEXT_CHECK_RESULT_OK = 0, // APP_TEXT_CHECK_RESULT_NG_FINISH, // APP_TEXT_CHECK_RESULT_NG_CONTINUE, // APP_TEXT_CHECK_RESULT_MAX, // APP_TEXT_CHECK_RESULT_MAX_BIT = (1u << 31) // }; /* Please see man pages for details */ enum ReturnCode { RETURN_CODE_UNKNOWN = -1, // RETURN_CODE_INVALID_CONFIG = -2, // RETURN_CODE_OUT_OF_MEMORY = -3, // //RETURN_CODE_INVALID_VERSION = -4, //!< Version numbers do not match RETURN_CODE_BOTTOM_BUTTON_1BUTTON = 0, // RETURN_CODE_BOTTOM_BUTTON_2BUTTON_LEFT = 1, // RETURN_CODE_BOTTOM_BUTTON_2BUTTON_RIGHT = 2, // RETURN_CODE_BOTTOM_BUTTON_3BUTTON_LEFT = 3, // RETURN_CODE_BOTTOM_BUTTON_3BUTTON_MIDDLE = 4, // RETURN_CODE_BOTTOM_BUTTON_3BUTTON_RIGHT = 5, // RETURN_CODE_HOME_BUTTON = 10, // RETURN_CODE_SOFTWARE_RESET = 11, // RETURN_CODE_POWER_BUTTON = 12, // RETURN_CODE_PARENTAL_CONTROLS_SUCCESS = 20, // RETURN_CODE_PARENTAL_CONTROLS_FAILURE = 21, // RETURN_CODE_APP_TEXT_CHECK_NG = 30, // RETURN_CODE_MAX_BIT = (s32)(1u << 31) // }; /* Please see man pages for details */ const size_t STATUS_DATA_SIZE = 68; /* Please see man pages for details */ const size_t LEARNING_DATA_SIZE = 42092; /* Please see man pages for details */ const u16 TEXT_LENGTH_MAX_MIN = 1; /* Please see man pages for details */ const u16 TEXT_LENGTH_MAX_MAX = 65000; /* Please see man pages for details */ const u16 FIXED_WIDTH_TEXT_LENGTH_MAX_MAX = 32; /* Please see man pages for details */ const u16 TEXT_CHECK_TEXT_LENGTH_MAX_MAX = 2000; /* Please see man pages for details */ const u16 BANNED_WORD_CHECK_TEXT_LENGTH_MAX_MAX = 64; /* Please see man pages for details */ const u16 BOTTOM_BUTTON_TEXT_LENGTH_MAX = 16; /* Please see man pages for details */ const u16 GUIDE_TEXT_LENGTH_MAX = 64; /* Please see man pages for details */ const u16 APP_TEXT_CHECK_DIALOG_TEXT_LENGTH_MAX = 256; /* Please see man pages for details */ const u16 NUM_USER_WORDS_MAX = 500; /* Please see man pages for details */ const u16 USER_WORD_LENGTH_MAX = 40; /* Please see man pages for details */ const u16 USER_READING_LENGTH_MAX = 40; /* Please see man pages for details */ struct UserWord { wchar_t reading[USER_READING_LENGTH_MAX + 1]; // wchar_t word[USER_WORD_LENGTH_MAX + 1]; // u8 language; // bool allLanguage; // }; /* Please see man pages for details */ typedef AppTextCheckResult (*AppTextCheckCallback)( const wchar_t** ppDialogText, const wchar_t* pInputText, u16 inputTextLength ); /* Please see man pages for details */ struct Config { //---------------------------------------- // // KeyboardType keyboardType; // BottomButtonType bottomButtonType; // FinishableCondition finishableCondition; // MaskMode maskMode; // ParentalControlsMode parentalControlsMode; // bit32 upperScreenFlag; // bit32 textCheckFlag; // bit32 extOutputDataFlag; // u16 textLengthMax; // u16 numUserWords; // u16 numNumbersMax; // wchar_t bottomButtonText[BOTTOM_BUTTON_MAX][BOTTOM_BUTTON_TEXT_LENGTH_MAX + 1]; // wchar_t tenkeyExtKeyChar[TENKEY_EXT_KEY_MAX]; // wchar_t guideText[GUIDE_TEXT_LENGTH_MAX + 1]; // bool prediction; // bool lineFeed; // bool fixedWidthMode; // bool homeButton; // bool softwareReset; // bool powerButton; // bool communicateWithOtherRegions; // bool bootWithQwerty; // bool bottomButtonToFinish[BOTTOM_BUTTON_MAX];// u8 padding0[3]; // //---------------------------------------- // // sptr initialInputText; // sptr userWordArray; // sptr initialStatusData; // sptr initialLearningData; // size_t sharedMemorySize; // u16 versionNumber; // u8 padding1[2]; // //---------------------------------------- // // ReturnCode returnCode; // sptr statusData; // sptr learningData; // sptr inputText; // u16 inputTextLength; // u8 padding2[2]; // //---------------------------------------- // // AppTextCheckResult appTextCheckResult; // wchar_t appTextCheckDialogText[APP_TEXT_CHECK_DIALOG_TEXT_LENGTH_MAX + 1]; // u8 padding3[2]; // //---------------------------------------- // // /* Please see man pages for details */ u8 reserved[172]; // }; /* Please see man pages for details */ struct Parameter { Config config; // }; /* Please see man pages for details */ void InitializeConfig(Config* pConfig); /* Please see man pages for details */ s32 GetSharedMemorySize( const Config* pConfig, const void* pInitialStatusData = NULL, const void* pInitialLearningData = NULL ); /* Please see man pages for details */ void PreloadKeyboardApplet(); /* Please see man pages for details */ void CancelPreloadKeyboardApplet(); /* Please see man pages for details */ void WaitForPreloadKeyboardApplet(); /* Please see man pages for details */ bool IsRegisteredKeyboardApplet(); /* Please see man pages for details */ bool StartKeyboardApplet( nn::applet::AppletWakeupState* pWakeupState, Parameter* pParameter, void* pSharedMemoryAddr, size_t sharedMemorySize, const wchar_t* pInitialInputText = NULL, const UserWord* pUserWordArray = NULL, const void* pInitialStatusData = NULL, const void* pInitialLearningData = NULL, AppTextCheckCallback callback = NULL ); }}} #endif // __cplusplus #endif // ifndef NN_SWKBD_CTR_SWKBD_API_H_