From 5cd37c0a7b5ae5e441f41f901be20b889c58334d Mon Sep 17 00:00:00 2001
From: Jaylon Gowie <[EMAIL REDACTED]>
Date: Sun, 25 Jul 2021 01:04:51 -0500
Subject: [PATCH] Add Enter Key support to PSVita IME keyboard
---
src/video/vita/SDL_vitavideo.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/video/vita/SDL_vitavideo.c b/src/video/vita/SDL_vitavideo.c
index 5df0fe1bea..ec96e86d3a 100644
--- a/src/video/vita/SDL_vitavideo.c
+++ b/src/video/vita/SDL_vitavideo.c
@@ -414,10 +414,17 @@ static void utf16_to_utf8(const uint16_t *src, uint8_t *dst) {
*dst = '\0';
}
+static SDL_bool reset_enter = SDL_FALSE;
void VITA_PumpEvents(_THIS)
{
SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;
+ // Little fix for adding proper enter key emulation
+ if (reset_enter == SDL_TRUE) {
+ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_RETURN);
+ reset_enter = SDL_FALSE;
+ }
+
VITA_PollTouch();
VITA_PollKeyboard();
VITA_PollMouse();
@@ -435,9 +442,15 @@ void VITA_PumpEvents(_THIS)
// Convert UTF16 to UTF8
utf16_to_utf8(videodata->ime_buffer, utf8_buffer);
- // send sdl event
+ // Send SDL event
SDL_SendKeyboardText((const char*)utf8_buffer);
+ // Send enter key only on enter
+ if (result.button == SCE_IME_DIALOG_BUTTON_ENTER) {
+ SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_RETURN);
+ reset_enter = SDL_TRUE;
+ }
+
sceImeDialogTerm();
videodata->ime_active = SDL_FALSE;