diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 4e4f29f16e..533e21cbd7 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -724,8 +724,11 @@ static void WIN_HandleRawKeyboardInput(Uint64 timestamp, SDL_VideoData *data, HA } code = windows_scancode_table[index]; } - if (state && !SDL_GetKeyboardFocus()) { - return; + if (state) { + SDL_Window *focus = SDL_GetKeyboardFocus(); + if (!focus || focus->text_input_active) { + return; + } } SDL_SendKeyboardKey(timestamp, keyboardID, rawcode, code, state); @@ -1244,7 +1247,7 @@ LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara } } - if (virtual_key || !data->videodata->raw_keyboard_enabled) { + if (virtual_key || !data->videodata->raw_keyboard_enabled || data->window->text_input_active) { SDL_SendKeyboardKey(WIN_GetEventTimestamp(), SDL_GLOBAL_KEYBOARD_ID, rawcode, code, SDL_PRESSED); } } @@ -1265,7 +1268,7 @@ LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara SDL_Scancode code = WindowsScanCodeToSDLScanCode(lParam, wParam, &rawcode, &virtual_key); const Uint8 *keyboardState = SDL_GetKeyboardState(NULL); - if (virtual_key || !data->videodata->raw_keyboard_enabled) { + if (virtual_key || !data->videodata->raw_keyboard_enabled || data->window->text_input_active) { if (code == SDL_SCANCODE_PRINTSCREEN && keyboardState[code] == SDL_RELEASED) { SDL_SendKeyboardKey(WIN_GetEventTimestamp(), SDL_GLOBAL_KEYBOARD_ID, rawcode, code, SDL_PRESSED);