diff --git a/pcsx2-qt/QtKeyCodes.cpp b/pcsx2-qt/QtKeyCodes.cpp index d299107b2f..9adf958234 100644 --- a/pcsx2-qt/QtKeyCodes.cpp +++ b/pcsx2-qt/QtKeyCodes.cpp @@ -13,6 +13,53 @@ #include +u8 map_text_to_keycode(const QString& text) +{ + if (text == "!") + return Qt::Key_1; + if (text == "@") + return Qt::Key_2; + if (text == "#") + return Qt::Key_3; + if (text == "$") + return Qt::Key_4; + if (text == "%") + return Qt::Key_5; + if (text == "^") + return Qt::Key_6; + if (text == "&") + return Qt::Key_7; + if (text == "*") + return Qt::Key_8; + if (text == "(") + return Qt::Key_9; + if (text == ")") + return Qt::Key_0; + if (text == "_") + return Qt::Key_Minus; + if (text == "+") + return Qt::Key_Equal; + if (text == "?") + return Qt::Key_Slash; + if (text == ":") + return Qt::Key_Semicolon; + if (text == "\"") + return Qt::Key_Apostrophe; + if (text == "~") + return Qt::Key_QuoteLeft; + if (text == "<") + return Qt::Key_Comma; + if (text == ">") + return Qt::Key_Period; + if (text == "|") + return Qt::Key_Backslash; + if (text == "{") + return Qt::Key_BracketLeft; + if (text == "}") + return Qt::Key_BracketRight; + return 0; // No remapping +} + struct KeyCodeName { int code; @@ -519,7 +566,15 @@ const char* InputManager::ConvertHostKeyboardCodeToIcon(u32 code) u32 QtUtils::KeyEventToCode(const QKeyEvent* ev) { + const QString text = ev->text(); + const u8 keycode = map_text_to_keycode(text); // Map special text symbols to keycodes int key = ev->key(); + + if (keycode != 0) + { + key = keycode; // Override key if mapped + } + Qt::KeyboardModifiers modifiers = ev->modifiers(); #ifdef __APPLE__