MCPcopy Create free account
hub / github.com/devkitPro/libctru / swkbdMessageCallback

Function swkbdMessageCallback

libctru/source/applets/swkbd.c:144–168  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

142}
143
144static void swkbdMessageCallback(void* user, NS_APPID sender, void* msg, size_t msgsize)
145{
146 SwkbdExtra* extra = (SwkbdExtra*)user;
147 SwkbdState* swkbd = (SwkbdState*)msg;
148
149 if (sender != APPID_SOFTWARE_KEYBOARD || msgsize != sizeof(SwkbdState))
150 return;
151
152 u16* text16 = (u16*)(swkbdSharedMem + swkbd->text_offset);
153 ssize_t units = utf16_to_utf8(NULL, text16, 0);
154 if (units < 0) svcBreak(USERBREAK_PANIC); // Shouldn't happen.
155 char* text8 = (char*)malloc(units+1);
156 if (!text8) svcBreak(USERBREAK_PANIC); // Shouldn't happen.
157 swkbdConvertToUTF8(text8, text16, units);
158
159 const char* retmsg = NULL;
160 swkbd->callback_result = extra->callback(extra->callback_user, &retmsg, text8, units);
161 if (swkbd->callback_result > SWKBD_CALLBACK_OK)
162 swkbdConvertToUTF16(swkbd->callback_msg, retmsg, SWKBD_MAX_CALLBACK_MSG_LEN);
163 else
164 swkbd->callback_msg[0] = 0;
165
166 free(text8);
167 APT_SendParameter(envGetAptAppId(), sender, APTCMD_MESSAGE, swkbd, sizeof(*swkbd), 0);
168}
169
170SwkbdButton swkbdInputText(SwkbdState* swkbd, char* buf, size_t bufsize)
171{

Callers

nothing calls this directly

Calls 5

utf16_to_utf8Function · 0.85
swkbdConvertToUTF8Function · 0.85
swkbdConvertToUTF16Function · 0.85
APT_SendParameterFunction · 0.85
envGetAptAppIdFunction · 0.85

Tested by

no test coverage detected