diff --git a/core/libs/prx/libSceKeyboard/CMakeLists.txt b/core/libs/prx/libSceKeyboard/CMakeLists.txt index 6f23ed265f..6081d60f0f 100644 --- a/core/libs/prx/libSceKeyboard/CMakeLists.txt +++ b/core/libs/prx/libSceKeyboard/CMakeLists.txt @@ -12,11 +12,11 @@ if(BUILD_TESTING) ${CMAKE_CURRENT_SOURCE_DIR}/../libSceVideoOut/src/KeyboardInput.cpp ) target_include_directories(keyboard_tests PRIVATE ${LIBS_INCLUDE_DIR} ${ANYPS5_SDL2_INCLUDE_DIR}) - target_link_libraries(keyboard_tests PRIVATE libSceKeyboard libkernel libc) + target_link_libraries(keyboard_tests PRIVATE libSceKeyboard libSceIme libkernel libc) configure_windows_unwind(keyboard_tests) add_test(NAME keyboard_input COMMAND keyboard_tests) if(WIN32) set_tests_properties(keyboard_input PROPERTIES ENVIRONMENT_MODIFICATION - "PATH=path_list_prepend:$") + "PATH=path_list_prepend:$;PATH=path_list_prepend:$") endif() endif() diff --git a/core/libs/prx/libSceVideoOut/src/KeyboardInput.cpp b/core/libs/prx/libSceVideoOut/src/KeyboardInput.cpp index 241b61fa8e..c1ff90d39e 100644 --- a/core/libs/prx/libSceVideoOut/src/KeyboardInput.cpp +++ b/core/libs/prx/libSceVideoOut/src/KeyboardInput.cpp @@ -1,5 +1,6 @@ #include "prx/libSceVideoOut/include/KeyboardInput.hpp" #include "prx/libSceKeyboard/include/KeyboardState.hpp" +#include "prx/libSceIme/include/ModalDialog.hpp" #include "SDL_keyboard.h" @@ -9,6 +10,7 @@ void KeyboardInput::HandleEvent(const SDL_Event& event, unsigned windowId) { case SDL_KEYDOWN: case SDL_KEYUP: if (event.key.windowID != windowId || !focused || event.key.repeat != 0) return; + if (event.type == SDL_KEYDOWN && ModalDialogCapturesInput_nid_postfix()) return; if (event.key.keysym.scancode <= SDL_SCANCODE_UNKNOWN || event.key.keysym.scancode > SDL_SCANCODE_RGUI) return; input.keyCode = static_cast(event.key.keysym.scancode); input.pressed = event.type == SDL_KEYDOWN;