Qt: Fix keyboard SHIFT for non-alpha characters

This commit is contained in:
Joe Wagner 2024-09-18 08:44:59 -07:00 committed by lightningterror
parent 217e1c8fae
commit fc715d58f0
1 changed files with 55 additions and 0 deletions

View File

@ -13,6 +13,53 @@
#include <QtGui/QKeyEvent> #include <QtGui/QKeyEvent>
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 struct KeyCodeName
{ {
int code; int code;
@ -519,7 +566,15 @@ const char* InputManager::ConvertHostKeyboardCodeToIcon(u32 code)
u32 QtUtils::KeyEventToCode(const QKeyEvent* ev) 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(); int key = ev->key();
if (keycode != 0)
{
key = keycode; // Override key if mapped
}
Qt::KeyboardModifiers modifiers = ev->modifiers(); Qt::KeyboardModifiers modifiers = ev->modifiers();
#ifdef __APPLE__ #ifdef __APPLE__