From bc9a047ef17354b245466043cc125e79bac2fa80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Mon, 11 May 2026 11:05:36 +0200 Subject: [PATCH] Search: Skip spaces and control characters, code cleanup, fix minor issue on desktop --- Common/Data/Encoding/Utf8.cpp | 6 ++++++ Core/KeyMap.cpp | 1 + UI/MainScreen.cpp | 7 +------ UI/MainScreen.h | 1 - 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Common/Data/Encoding/Utf8.cpp b/Common/Data/Encoding/Utf8.cpp index 4e7a2c7a63..737b049bcd 100644 --- a/Common/Data/Encoding/Utf8.cpp +++ b/Common/Data/Encoding/Utf8.cpp @@ -387,7 +387,13 @@ std::string NormalizeForSearch(std::string_view input) { while (index < size) { uint32_t codepoint = u8_nextchar(input.data(), &index, size); + // Skip spaces and control characters. + if (codepoint <= 0x20) { + continue; + } + // 1. Convert Fullwidth Roman/Numbers to ASCII + // These are common in Japanese game names. // Range: U+FF01 (!) to U+FF5E (~) if (codepoint >= 0xFF01 && codepoint <= 0xFF5E) { codepoint -= 0xFEE0; diff --git a/Core/KeyMap.cpp b/Core/KeyMap.cpp index 2fe3842ed6..7e3140948f 100644 --- a/Core/KeyMap.cpp +++ b/Core/KeyMap.cpp @@ -212,6 +212,7 @@ void UpdateNativeMenuKeys() { RemoveKeyboardLetterKeys(tabRight); RemoveKeyboardLetterKeys(confirmKeys); RemoveKeyboardLetterKeys(cancelKeys); + RemoveKeyboardLetterKeys(infoKeys); SetDPadKeys(upKeys, downKeys, leftKeys, rightKeys); SetConfirmCancelKeys(confirmKeys, cancelKeys); diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp index 568e7ec1e3..bac0ad1661 100644 --- a/UI/MainScreen.cpp +++ b/UI/MainScreen.cpp @@ -515,18 +515,13 @@ void MainScreen::CreateViews() { bool MainScreen::key(const KeyInput &key) { if (key.flags & KeyInputFlags::DOWN) { - if (key.keyCode == NKCODE_CTRL_LEFT || key.keyCode == NKCODE_CTRL_RIGHT) - searchKeyModifier_ = true; - if (key.keyCode == NKCODE_F && searchKeyModifier_ && System_GetPropertyBool(SYSPROP_HAS_TEXT_INPUT_DIALOG)) { + if (key.keyCode == NKCODE_F && (key.flags & KeyInputFlags::MOD_CTRL) && System_GetPropertyBool(SYSPROP_HAS_TEXT_INPUT_DIALOG)) { auto se = GetI18NCategory(I18NCat::SEARCH); System_InputBoxGetString(GetRequesterToken(), se->T("Search term"), searchFilter_, false, [&](const std::string &value, int) { searchFilter_ = StripSpaces(value); searchChanged_ = true; }); } - } else if (key.flags & KeyInputFlags::UP) { - if (key.keyCode == NKCODE_CTRL_LEFT || key.keyCode == NKCODE_CTRL_RIGHT) - searchKeyModifier_ = false; } bool retval = UIBaseScreen::key(key); diff --git a/UI/MainScreen.h b/UI/MainScreen.h index 5c6f29f1e1..3181606103 100644 --- a/UI/MainScreen.h +++ b/UI/MainScreen.h @@ -92,7 +92,6 @@ protected: bool lockBackgroundAudio_ = false; bool lastVertical_ = false; bool confirmedTemporary_ = false; - bool searchKeyModifier_ = false; bool searchChanged_ = false; std::string searchFilter_;