In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "Swkbd.rpl"

From WiiUBrew
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* a, nn::swkbd::RegionType b, unsigned int c, FSClient* d)</code>
+
|<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
|Returns some kind of pointer, does not appear to be the structure
+
|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.