Enable text input on video initialization without popping up an on-screen keyboard

Fixes https://github.com/libsdl-org/SDL/issues/8561

(cherry picked from commit 4ff3b28273)
This commit is contained in:
Sam Lantinga
2024-01-27 11:52:58 -08:00
parent b9ea2dde44
commit dff76bf295

View File

@@ -566,16 +566,21 @@ int SDL_VideoInit(const char *driver_name)
SDL_DisableScreenSaver();
}
/* If we don't use a screen keyboard, turn on text input by default,
otherwise programs that expect to get text events without enabling
UNICODE input won't get any events.
Actually, come to think of it, you needed to call SDL_EnableUNICODE(1)
in SDL 1.2 before you got text input events. Hmm...
*/
if (!SDL_HasScreenKeyboardSupport()) {
#if !defined(SDL_VIDEO_DRIVER_N3DS)
{
/* In the initial state we don't want to pop up an on-screen keyboard,
* but we do want to allow text input from other mechanisms.
*/
const char *hint = SDL_GetHint(SDL_HINT_ENABLE_SCREEN_KEYBOARD);
if (!hint) {
SDL_SetHint(SDL_HINT_ENABLE_SCREEN_KEYBOARD, "0");
}
SDL_StartTextInput();
if (!hint) {
SDL_SetHint(SDL_HINT_ENABLE_SCREEN_KEYBOARD, NULL);
}
}
#endif /* !SDL_VIDEO_DRIVER_N3DS */
SDL_PostInitMouse();