ASCII text input for SDL2

This commit is contained in:
Michael Martin
2019-08-31 22:31:45 -07:00
parent 5896ee56b2
commit 5a289fce34
+25 -1
View File
@@ -290,11 +290,17 @@ EnterCharacterMode (void)
lastchar = 0;
in_character_mode = TRUE;
VControl_ResetInput ();
#if SDL_MAJOR_VERSION > 1
SDL_StartTextInput ();
#endif
}
void
ExitCharacterMode (void)
{
#if SDL_MAJOR_VERSION > 1
SDL_StopTextInput ();
#endif
VControl_ResetInput ();
in_character_mode = FALSE;
kbdhead = kbdtail = 0;
@@ -418,7 +424,25 @@ ProcessInputEvent (const SDL_Event *Event)
/* TODO: Block numpad input when NUM_LOCK is on */
VControl_HandleEvent (Event);
/* TODO: Handle SDL_TEXTINPUT events */
if (Event->type == SDL_TEXTINPUT)
{
int newtail;
/* TODO: Decode UTF-8 input */
UniChar map_key = Event->text.text[0];
// dont care about the non-printable, non-char
if (!map_key)
return;
newtail = (kbdtail + 1) & (KBDBUFSIZE - 1);
// ignore the char if the buffer is full
if (newtail != kbdhead)
{
kbdbuf[kbdtail] = map_key;
kbdtail = newtail;
lastchar = map_key;
}
}
}
#endif