Changes

Jump to navigation Jump to search
2,943 bytes added ,  05:45, 3 June 2019
Line 2: Line 2:     
The below is for normal swkbd usage, see the [[#InlineKeyboard]] section for InlineKeyboard.
 
The below is for normal swkbd usage, see the [[#InlineKeyboard]] section for InlineKeyboard.
 +
 +
With version 0x6000B+ after pushing all other storage: when [[#CustomizedDictionarySet]] was setup where buffer addr/size is set and total_entries is non-zero, [[Applet_Manager_services#CreateHandleStorage]] will be used to create TransferMemory storage which is then pushed.
    
== Library Applet Versions ==
 
== Library Applet Versions ==
Line 23: Line 25:  
|-
 
|-
 
| [5.0.0+] || 0x50009
 
| [5.0.0+] || 0x50009
 +
|-
 +
| [6.0.0+] || 0x6000B
 +
|-
 +
| [8.0.0+] || 0x8000D
 
|}
 
|}
   Line 74: Line 80:  
|-
 
|-
 
| 0x3D0 || 1 || 0 || [[#Text check]] enable
 
| 0x3D0 || 1 || 0 || [[#Text check]] enable
 +
|}
 +
 +
Before version 0x6000B:
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0x3D8 || 8 || 0 || [[#Text check]] callback function address. Not sure why this is included here
+
! Offset || Size || Typical Value || Notes
 
|-
 
|-
| 0x3E0 || 0x20 || -1 || When set and enabled via textDrawType, controls displayed text grouping (inserts spaces, without affecting output string). Used for DownloadCodes.
+
| 0x3D8 || 8 || 0 || [[#Text check]] callback function address. Removed with the struct used by 0x6000B+.
 +
|-
 +
| 0x3E0 || 0x20 || -1 || When set and enabled via textDrawType, controls displayed text grouping (inserts spaces, without affecting output string). Used for DownloadCodes, otherwise this is -1 normally.
 
|}
 
|}
   −
This struct is 0x3E0-bytes with version 0x5. Starting with version 0x30007 this struct is 0x400-bytes.
+
Version 0x6000B+:
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Typical Value || Notes
 +
|-
 +
| 0x3D4 || 0x20 || -1 || When set and enabled via textDrawType, controls displayed text grouping (inserts spaces, without affecting output string). Used for DownloadCodes, otherwise this is -1 normally.
 +
|-
 +
| 0x3F4 || 0xC0 || 0 || [[#CustomizedDictionarySet]] array data.
 +
|-
 +
| 0x4B4 || 0x1 || 0 || Total array entries for [[#CustomizedDictionarySet]].
 +
|-
 +
| 0x4B5 || 0x1 || 0 || [8.0.0+] Cancel Button Flag (0 = do not disable cancel, 1 = disable cancel)
 +
|-
 +
| 0x4B6 || 0xD || 0 || Padding
 +
|-
 +
| 0x4C3 || 0x1 || 0 || [8.0.0+] Trigger
 +
|-
 +
| 0x4C4 || 0x4 || 0 || Padding
 +
|}
   −
The 0x20-bytes at offset 0x3E0 is -1 normally, except for DownloadCodes.
+
Struct sizes:
 +
* Initial version: 0x3E0-bytes.
 +
* Version 0x30007+: 0x400-bytes.
 +
* Version 0x6000B+: 0x4C8-bytes.
    
Each entry in the user dictionary is 100 bytes long.
 
Each entry in the user dictionary is 100 bytes long.
Line 231: Line 264:     
The above struct is cleared to 0 during initialization, besides the fields specified otherwise.
 
The above struct is cleared to 0 during initialization, besides the fields specified otherwise.
 +
 +
[6.0.0+] Flags bitmask 0x10000 is set when [[#CalcArg]] trigger is set.
    
=== CalcArg ===
 
=== CalcArg ===
Line 303: Line 338:  
| 0x49C || 0x1 || Enable=0x2000, disable=0x4000. || [5.0.0+] SeGroup (sound effect)
 
| 0x49C || 0x1 || Enable=0x2000, disable=0x4000. || [5.0.0+] SeGroup (sound effect)
 
|-
 
|-
| 0x49D || 0x3 || || Padding
+
| 0x49D || 0x1 || || [6.0.0+] u8 triggerFlag, for [[#AppearArg]]. Enables using the trigger field when set, this is only set when trigger is non-zero.
 +
|-
 +
| 0x49E || 0x2 || || [6.0.0+] u8 trigger, for [[#AppearArg]]. Official sw currently only uses value 0.
 +
|-
 +
| 0x49F || 0x1 || || Padding
 
|-
 
|-
 
|}
 
|}
Line 327: Line 366:  
|-
 
|-
 
| 0x4 || 0x0 || Finalize ||  
 
| 0x4 || 0x0 || Finalize ||  
 +
|-
 +
| 0x6 || Varies || SetUserWordInfo ||
 
|-
 
|-
 
| 0x7 || 0x70 || SetCustomizeDic ||  
 
| 0x7 || 0x70 || SetCustomizeDic ||  
 
|-
 
|-
 
| 0xA || 0x4A0 || Calc || Data is [[#CalcArg]].
 
| 0xA || 0x4A0 || Calc || Data is [[#CalcArg]].
 +
|-
 +
| 0xB || 0xD0 || SetCustomizedDictionaries || Data is [[#CustomizedDictionarySet]] with an additional 2-bytes of padding.
 +
|-
 +
| 0xC || 0x0 || UnsetCustomizedDictionaries ||
 +
|-
 +
| 0xD || 0x1 || [8.0.0+] || Takes an input u8 bool which controls whether ChangedString*V2 or ChangedString* replies should be used.
 +
|-
 +
| 0xE || 0x1 || [8.0.0+] || Takes an input u8 bool which controls whether MovedCursor*V2 or MovedCursor* replies should be used.
 
|}
 
|}
   Line 363: Line 412:  
|-
 
|-
 
| 0xB || 0x0 || ReleasedUserWordInfo ||  
 
| 0xB || 0x0 || ReleasedUserWordInfo ||  
 +
|-
 +
| 0xC || 0x0 || UnsetCustomizedDictionaries || [6.0.0+] Official sw handles this the same as UnsetCustomizeDic.
 +
|-
 +
| 0xD || 0x3FC + 0x1 || ChangedStringV2 || [8.0.0+]
 +
|-
 +
| 0xE || 0x3F4 + 0x1 || MovedCursorV2 || [8.0.0+]
 +
|-
 +
| 0xF || 0x7E4 + 0x1 || ChangedStringUtf8V2 || [8.0.0+]
 +
|-
 +
| 0x10 || 0x7DC + 0x1 || MovedCursorUtf8V2 || [8.0.0+]
 
|-
 
|-
 
|}
 
|}
Line 371: Line 430:     
Reply data format:
 
Reply data format:
* ChangedString*: +0 = string. Last 0x10-bytes: 4 u32s, where the first one is the length of the string in characters, including NUL-terminator.
+
* ChangedString*: +0 = string. Last 0x10-bytes: 4 u32s, where the first one is the length of the string in characters, without NUL-terminator. The last u32 is cursorPos. The other 2 fields are s32s.
 +
* MovedCursor*: +0 = string. Last 0x8-bytes: 2 u32s, where the first one is the stringLen, and the second one is cursorPos.
 +
* DecidedEnter*: +0 = string. The last u32 is the stringLen.
 +
* *V2: See above. Last byte: u8 bool, passed to the callback as <code>flag==0</code>.
 +
 
 +
== CustomizedDictionarySet ==
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || 0x1000-byte aligned buffer address.
 +
|-
 +
| 0x8 || 0x4 || 0x1000-byte aligned buffer size.
 +
|-
 +
| 0xC || 0x18*4(0xC0) || Array of 0x18 entries, where each entry is 0x8-bytes.
 +
|-
 +
| 0xCC || 0x2 || u16 total_entries
 +
|}
 +
 
 +
This was added with [6.0.0+]. This struct is 0xCE-bytes.
    
[[Category:Library Applets]]
 
[[Category:Library Applets]]

Navigation menu