Difference between revisions of "Swkbd.rpl"
Jump to navigation
Jump to search
(Start documenting a few basic swkbd functions; just what IDA says really) |
m (Forgot a <code> tag) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
==Functions== | ==Functions== | ||
All the swkbd functions are C++ functions in the namespace <code>Rpl::</code>. To export them with OSDynLoad, you have to use their C symbol names (as listed). | All the swkbd functions are C++ functions in the namespace <code>Rpl::</code>. To export them with OSDynLoad, you have to use their C symbol names (as listed). | ||
+ | ===Initialisation=== | ||
{| class="wikitable" | {| class="wikitable" | ||
!Prototype | !Prototype | ||
Line 9: | Line 10: | ||
!Reverse-Engineering Notes | !Reverse-Engineering Notes | ||
|- | |- | ||
− | |<code>SwkbdCreate(unsigned char* | + | |<code>void SwkbdCreate(unsigned char*, nn::swkbd::RegionType, unsigned int, FSClient*)</code> |
|<code>SwkbdCreate__3RplFPUcQ3_2nn5swkbd10RegionTypeUiP8FSClient</code> | |<code>SwkbdCreate__3RplFPUcQ3_2nn5swkbd10RegionTypeUiP8FSClient</code> | ||
|Sets up a structure in memory | |Sets up a structure in memory | ||
− | | | + | |No clear return value. Will return a mutex pointer (1004D294 on 5.5.1) from memory due to lazy programming. |
|- | |- | ||
|<code>void SwkbdDestroy()</code> | |<code>void SwkbdDestroy()</code> | ||
|<code>SwkbdDestroy__3RplFv</code> | |<code>SwkbdDestroy__3RplFv</code> | ||
| | | | ||
− | |No return value. | + | |No clear return value. |
|- | |- | ||
+ | |} | ||
+ | |||
+ | ===Keyboard Control=== | ||
+ | {|class="wikitable" | ||
+ | !Prototype | ||
+ | !Symbol name (5.5.1) | ||
+ | !Description | ||
+ | !Reverse-Engineering Notes | ||
+ | |- | ||
+ | |<code>int SwkbdAppearInputForm(nn::swkbd::AppearArg const &)</code> | ||
+ | |<code>SwkbdAppearInputForm__3RplFRCQ3_2nn5swkbd9AppearArg</code> | ||
+ | | | ||
+ | |Returns 0 or a status code from a subroutine. | ||
+ | |- | ||
+ | |<code>int SwkbdAppearKeyboard(nn:swkbd::KeyboardArg)</code> | ||
+ | |<code>SwkbdAppearKeyboard__3RplFRCQ3_2nn5swkbd11KeyboardArg</code> | ||
+ | | | ||
+ | |Returns 0 or a status code from a subroutine. | ||
+ | |- | ||
+ | |<code>int SwkbdDisappearInputForm()</code> | ||
+ | |<code>SwkbdDisappearInputForm__3RplFv</code> | ||
+ | | | ||
+ | |Returns 0 or a status code from a subroutine. | ||
+ | |- | ||
+ | |<code>int SwkbdDissappearKeyboard()</code> | ||
+ | |<code>SwkbdDisappearKeyboard__3RplFv</code> | ||
+ | | | ||
+ | |Returns 0 or a status code from a subroutine. | ||
+ | |- | ||
+ | |<code>void SwkbdInactivateSelectCursor()</code> | ||
+ | |<code>SwkbdInactivateSelectCursor__3RplFv</code> | ||
+ | |Disables selection? | ||
+ | |No clear return value. Will return a pointer to some kind of internal struct due to lazy programming. Split up over several chunks. | ||
+ | |- | ||
+ | |<code>int SwkbdInitLearnDic(void*)</code> | ||
+ | |<code>SwkbdInitLearnDic__3RplFPv</code> | ||
+ | |Enables self-learning predictive text? | ||
+ | |Returns 0 or a status code from a subroutine. | ||
+ | |- | ||
+ | |<code>void SwkbdMuteAllSound(bool)</code> | ||
+ | |<code>SwkbdMuteAllSound__3RplFb</code> | ||
+ | | | ||
+ | |Writes argument 1 to an internal struct, returns argument 1 due to lazy programming. | ||
+ | |} | ||
+ | |||
+ | ===Logic=== | ||
+ | {|class="wikitable" | ||
+ | !Prototype | ||
+ | !Symbol name (5.5.1) | ||
+ | !Description | ||
+ | !Reverse-Engineering Notes | ||
+ | |- | ||
+ | |<code>int SwkbdCalc(nn:swkbd::ControllerInfo const &)</code> | ||
+ | |<code>SwkbdCalc__3RplFRCQ3_2nn5swkbd14ControllerInfo</code> | ||
+ | | | ||
+ | |Returns a value from an internal subroutine (presumably the response from the math operation). | ||
+ | |- | ||
+ | |<code>int SwkbdCalcSubThreadFont(void)</code> | ||
+ | |<code>SwkbdCalcSubThreadFont__3RplFv</code> | ||
+ | | | ||
+ | |Returns a value from an internal subroutine (presumably the response from the math operation). | ||
+ | |- | ||
+ | |<code>int SwkbdCalcSubThreadPredict(void)</code> | ||
+ | |<code>SwkbdCalcSubThreadPredict__3RplFv</code> | ||
+ | | | ||
+ | |Returns a value from an internal subroutine (presumably the response from the math operation). | ||
+ | |} | ||
+ | |||
+ | ===Data=== | ||
+ | {|class="wikitable" | ||
+ | !Prototype | ||
+ | !Symbol name (5.5.1) | ||
+ | !Description | ||
+ | !Reverse-Engineering Notes | ||
+ | |- | ||
+ | |<code>void SwkbdGetDrawStringInfo(nn::swkbd::DrawStringInfo*)</code> | ||
+ | |<code>SwkbdGetDrawStringInfo__3RplFPQ3_2nn5swkbd14DrawStringInfo</code> | ||
+ | | | ||
+ | |No clear return value. | ||
+ | |- | ||
+ | |<code>int SwkbdGetInputFormString()</code> | ||
+ | |<code>SwkbdGetInputFormString__3RplFv</code> | ||
+ | | | ||
+ | |Returns 0 or a status code from a subroutine. | ||
+ | |- | ||
+ | |<code>void SwkbdGetKeyboardCondition(nn::swkbd::KeyboardCondition *)</code> | ||
+ | |<code>SwkbdGetKeyboardCondition__3RplFPQ3_2nn5swkbd17KeyboardCondition</code> | ||
+ | | | ||
+ | |No clear return value. Split into several chunks. Makes use of a function pointer from the stack. | ||
+ | |- | ||
+ | |<code>int SwkbdGetStateInputForm()</code> | ||
+ | |<code>SwkbdGetStateInputForm__3RplFv</code> | ||
+ | | | ||
+ | |Returns 0, 1, 2, or 3. Split into several chunks. | ||
+ | |- | ||
+ | |<code>int SwkbdGetStateKeyboard()</code> | ||
+ | |<code>SwkbdGetStateKeyboard__3RplFv</code> | ||
+ | | | ||
+ | |Returns 0, 1, 2, or 3. | ||
+ | |- | ||
+ | |<code>int SwkbdIsCoveredWithSubWindow()</code> | ||
+ | |<code>SwkbdIsCoveredWithSubWindow__3RplFv</code> | ||
+ | | | ||
+ | |Returns 0 or a status code from a subroutine. | ||
+ | |- | ||
+ | |<code>int SwkbdIsDecideCancelButton(bool*)</code> | ||
+ | |<code>SwkbdIsDecideCancelButton__3RplFPb</code> | ||
+ | | | ||
+ | |Returns 0 or a value from memory. | ||
+ | |- | ||
+ | |<code>int SwkbdIsDecideOkButton(bool*)</code> | ||
+ | |<code>SwkbdIsDecideOkButton__3RplFPb</code> | ||
+ | | | ||
+ | |Similar to IsDecideCancelButton. Returns 0 or a value from memory. | ||
+ | |- | ||
+ | |<code>int SwkbdIsKeyboardTarget(nn::swkbd::IEventReceiver*)</code> | ||
+ | |<code>SwkbdIsKeyboardTarget__3RplFPQ3_2nn5swkbd14IEventReceiver</code> | ||
+ | | | ||
+ | |Returns 0 or a value from memory. | ||
+ | |- | ||
+ | |<code>int SwkbdIsNeedCalcSubThreadFont()</code> | ||
+ | |<code>SwkbdIsNeedCalcSubThreadFont__3RplFv</code> | ||
+ | | | ||
+ | |Returns a value from a subroutine. | ||
+ | |- | ||
+ | |<code>bool SwkbdIsNeedCalcSubThreadPredict()</code> | ||
+ | |<code>SwkbdIsNeedCalcSubThreadPredict__3RplFv</code> | ||
+ | | | ||
+ | |Returns 1 or 0 (bool) | ||
+ | |- | ||
+ | |<code>bool SwkbdIsSelectCursorActive()</code> | ||
+ | |<code>SwkbdIsSelectCursorActive__3RplFv</code> | ||
+ | | | ||
+ | |Returns 1 or 0 (bool) | ||
+ | |- | ||
+ | |<code>int SwkbdSetControllerRemo(nn::swkbd::ControllerType)</code> | ||
+ | |<code>SwkbdSetControllerRemo__3RplFQ3_2nn5swkbd14ControllerType</code> | ||
+ | | | ||
+ | |Returns 0 or a status code from a subroutine. | ||
+ | |- | ||
+ | |<code>int SwkbdSetCursorPos(int)</code> | ||
+ | |<code>SwkbdSetCursorPos__3RplFi</code> | ||
+ | | | ||
+ | |Returns a value from a subroutine. | ||
+ | |- | ||
+ | |<code>int SwkbdSetEnableOkButton(bool)</code> | ||
+ | |<code>SwkbdSetEnableOkButton__3RplFb</code> | ||
+ | | | ||
+ | |Returns a value from a subroutine. | ||
+ | |- | ||
+ | |<code>int SwkbdSetInputFormString(wchar_t const *)</code> | ||
+ | |<code>SwkbdSetInputFormString__3RplFPCw</code> | ||
+ | | | ||
+ | |Returns a value from a subroutine | ||
+ | |- | ||
+ | |<code>int SwkbdSetReceiver(nn::swkbd::ReceiverArg const &)</code> | ||
+ | |<code>SwkbdSetReceiver__3RplFRCQ3_2nn5swkbd11ReceiverArg</code> | ||
+ | | | ||
+ | |Returns a value from a subroutine | ||
+ | |- | ||
+ | |<code>void SwkbdSetSelectFrom(int)</code> | ||
+ | |<code>SwkbdSetSelectFrom__3RplFi</code> | ||
+ | | | ||
+ | |No return value. Returns argument 1 due to lazy programming. | ||
+ | |- | ||
+ | |<code>void SwkbdSetUserControllerEventObj(nn::swkbd::IControllerEventObj*)</code> | ||
+ | |<code>SwkbdSetUserControllerEventObj__3RplFPQ3_2nn5swkbd19IControllerEventObj</code> | ||
+ | | | ||
+ | |No return value. Returns argument 1 due to lazy programming. | ||
+ | |- | ||
+ | |<code>void SwkbdSetUserSoundObj(nn::swkbd::ISoundObj*)</code> | ||
+ | |<code>SwkbdSetUserSoundObj__3RplFPQ3_2nn5swkbd9ISoundObj</code> | ||
+ | | | ||
+ | |No return value. Returns argument 1 due to lazy programming. | ||
+ | |- | ||
+ | |<code>void SwkbdSetVersion(int)</code> | ||
+ | |<code>SwkbdSetVersion__3RplFi</code> | ||
+ | | | ||
+ | |No return value. Returns whatever OSReport returns due to lazy programming. | ||
|} | |} |
Latest revision as of 06:08, 2 September 2016
swkbd.rpl is the system library that allows applications to use the Wii U's on-screen keyboard. It is one of the only libraries to export C++ functions; thus it isn't known how to use them in homebrew at this point.
Functions
All the swkbd functions are C++ functions in the namespace Rpl::
. To export them with OSDynLoad, you have to use their C symbol names (as listed).
Initialisation
Prototype | Symbol name (5.5.1) | Description | Reverse-Engineering Notes |
---|---|---|---|
void SwkbdCreate(unsigned char*, nn::swkbd::RegionType, unsigned int, FSClient*)
|
SwkbdCreate__3RplFPUcQ3_2nn5swkbd10RegionTypeUiP8FSClient
|
Sets up a structure in memory | No clear return value. Will return a mutex pointer (1004D294 on 5.5.1) from memory due to lazy programming. |
void SwkbdDestroy()
|
SwkbdDestroy__3RplFv
|
No clear return value. |
Keyboard Control
Prototype | Symbol name (5.5.1) | Description | Reverse-Engineering Notes |
---|---|---|---|
int SwkbdAppearInputForm(nn::swkbd::AppearArg const &)
|
SwkbdAppearInputForm__3RplFRCQ3_2nn5swkbd9AppearArg
|
Returns 0 or a status code from a subroutine. | |
int SwkbdAppearKeyboard(nn:swkbd::KeyboardArg)
|
SwkbdAppearKeyboard__3RplFRCQ3_2nn5swkbd11KeyboardArg
|
Returns 0 or a status code from a subroutine. | |
int SwkbdDisappearInputForm()
|
SwkbdDisappearInputForm__3RplFv
|
Returns 0 or a status code from a subroutine. | |
int SwkbdDissappearKeyboard()
|
SwkbdDisappearKeyboard__3RplFv
|
Returns 0 or a status code from a subroutine. | |
void SwkbdInactivateSelectCursor()
|
SwkbdInactivateSelectCursor__3RplFv
|
Disables selection? | No clear return value. Will return a pointer to some kind of internal struct due to lazy programming. Split up over several chunks. |
int SwkbdInitLearnDic(void*)
|
SwkbdInitLearnDic__3RplFPv
|
Enables self-learning predictive text? | Returns 0 or a status code from a subroutine. |
void SwkbdMuteAllSound(bool)
|
SwkbdMuteAllSound__3RplFb
|
Writes argument 1 to an internal struct, returns argument 1 due to lazy programming. |
Logic
Prototype | Symbol name (5.5.1) | Description | Reverse-Engineering Notes |
---|---|---|---|
int SwkbdCalc(nn:swkbd::ControllerInfo const &)
|
SwkbdCalc__3RplFRCQ3_2nn5swkbd14ControllerInfo
|
Returns a value from an internal subroutine (presumably the response from the math operation). | |
int SwkbdCalcSubThreadFont(void)
|
SwkbdCalcSubThreadFont__3RplFv
|
Returns a value from an internal subroutine (presumably the response from the math operation). | |
int SwkbdCalcSubThreadPredict(void)
|
SwkbdCalcSubThreadPredict__3RplFv
|
Returns a value from an internal subroutine (presumably the response from the math operation). |
Data
Prototype | Symbol name (5.5.1) | Description | Reverse-Engineering Notes |
---|---|---|---|
void SwkbdGetDrawStringInfo(nn::swkbd::DrawStringInfo*)
|
SwkbdGetDrawStringInfo__3RplFPQ3_2nn5swkbd14DrawStringInfo
|
No clear return value. | |
int SwkbdGetInputFormString()
|
SwkbdGetInputFormString__3RplFv
|
Returns 0 or a status code from a subroutine. | |
void SwkbdGetKeyboardCondition(nn::swkbd::KeyboardCondition *)
|
SwkbdGetKeyboardCondition__3RplFPQ3_2nn5swkbd17KeyboardCondition
|
No clear return value. Split into several chunks. Makes use of a function pointer from the stack. | |
int SwkbdGetStateInputForm()
|
SwkbdGetStateInputForm__3RplFv
|
Returns 0, 1, 2, or 3. Split into several chunks. | |
int SwkbdGetStateKeyboard()
|
SwkbdGetStateKeyboard__3RplFv
|
Returns 0, 1, 2, or 3. | |
int SwkbdIsCoveredWithSubWindow()
|
SwkbdIsCoveredWithSubWindow__3RplFv
|
Returns 0 or a status code from a subroutine. | |
int SwkbdIsDecideCancelButton(bool*)
|
SwkbdIsDecideCancelButton__3RplFPb
|
Returns 0 or a value from memory. | |
int SwkbdIsDecideOkButton(bool*)
|
SwkbdIsDecideOkButton__3RplFPb
|
Similar to IsDecideCancelButton. Returns 0 or a value from memory. | |
int SwkbdIsKeyboardTarget(nn::swkbd::IEventReceiver*)
|
SwkbdIsKeyboardTarget__3RplFPQ3_2nn5swkbd14IEventReceiver
|
Returns 0 or a value from memory. | |
int SwkbdIsNeedCalcSubThreadFont()
|
SwkbdIsNeedCalcSubThreadFont__3RplFv
|
Returns a value from a subroutine. | |
bool SwkbdIsNeedCalcSubThreadPredict()
|
SwkbdIsNeedCalcSubThreadPredict__3RplFv
|
Returns 1 or 0 (bool) | |
bool SwkbdIsSelectCursorActive()
|
SwkbdIsSelectCursorActive__3RplFv
|
Returns 1 or 0 (bool) | |
int SwkbdSetControllerRemo(nn::swkbd::ControllerType)
|
SwkbdSetControllerRemo__3RplFQ3_2nn5swkbd14ControllerType
|
Returns 0 or a status code from a subroutine. | |
int SwkbdSetCursorPos(int)
|
SwkbdSetCursorPos__3RplFi
|
Returns a value from a subroutine. | |
int SwkbdSetEnableOkButton(bool)
|
SwkbdSetEnableOkButton__3RplFb
|
Returns a value from a subroutine. | |
int SwkbdSetInputFormString(wchar_t const *)
|
SwkbdSetInputFormString__3RplFPCw
|
Returns a value from a subroutine | |
int SwkbdSetReceiver(nn::swkbd::ReceiverArg const &)
|
SwkbdSetReceiver__3RplFRCQ3_2nn5swkbd11ReceiverArg
|
Returns a value from a subroutine | |
void SwkbdSetSelectFrom(int)
|
SwkbdSetSelectFrom__3RplFi
|
No return value. Returns argument 1 due to lazy programming. | |
void SwkbdSetUserControllerEventObj(nn::swkbd::IControllerEventObj*)
|
SwkbdSetUserControllerEventObj__3RplFPQ3_2nn5swkbd19IControllerEventObj
|
No return value. Returns argument 1 due to lazy programming. | |
void SwkbdSetUserSoundObj(nn::swkbd::ISoundObj*)
|
SwkbdSetUserSoundObj__3RplFPQ3_2nn5swkbd9ISoundObj
|
No return value. Returns argument 1 due to lazy programming. | |
void SwkbdSetVersion(int)
|
SwkbdSetVersion__3RplFi
|
No return value. Returns whatever OSReport returns due to lazy programming. |