Skip to content

Commit

Permalink
Qt: Fix keyboard SHIFT for non-alpha characters
Browse files Browse the repository at this point in the history
  • Loading branch information
skulkingfox authored and lightningterror committed Sep 20, 2024
1 parent 217e1c8 commit fc715d5
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions pcsx2-qt/QtKeyCodes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,53 @@

#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
{
int code;
Expand Down Expand Up @@ -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__
Expand Down

0 comments on commit fc715d5

Please sign in to comment.