SDL: Add Enter Key support to PSVita IME keyboard

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;