Răsfoiți Sursa

Add Enter Key support to PSVita IME keyboard

Jaylon Gowie 3 ani în urmă
părinte
comite
5cd37c0a7b
1 a modificat fișierele cu 14 adăugiri și 1 ștergeri
  1. 14 1
      src/video/vita/SDL_vitavideo.c

+ 14 - 1
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;