diff --git a/rpcs3/Input/keyboard_pad_handler.cpp b/rpcs3/Input/keyboard_pad_handler.cpp index e87b5ff9ca..8ed2aa88d4 100644 --- a/rpcs3/Input/keyboard_pad_handler.cpp +++ b/rpcs3/Input/keyboard_pad_handler.cpp @@ -418,7 +418,7 @@ void keyboard_pad_handler::processKeyEvent(QKeyEvent* event, bool pressed) return; const bool is_num_key = list.removeAll("Num") > 0; - const QString name = QString::fromStdString(GetKeyName(event)); + const QString name = QString::fromStdString(GetKeyName(event, true)); // TODO: Edge case: switching numlock keeps numpad keys pressed due to now different modifier @@ -824,7 +824,7 @@ QStringList keyboard_pad_handler::GetKeyNames(const QKeyEvent* keyEvent) return list; } -std::string keyboard_pad_handler::GetKeyName(const QKeyEvent* keyEvent) +std::string keyboard_pad_handler::GetKeyName(const QKeyEvent* keyEvent, bool with_modifiers) { // Handle special cases first if (std::string name = native_scan_code_to_string(keyEvent->nativeScanCode()); !name.empty()) @@ -852,7 +852,13 @@ std::string keyboard_pad_handler::GetKeyName(const QKeyEvent* keyEvent) default: break; } - return QKeySequence(keyEvent->key() | keyEvent->modifiers()).toString(QKeySequence::NativeText).toStdString(); + + if (with_modifiers) + { + return QKeySequence(keyEvent->key() | keyEvent->modifiers()).toString(QKeySequence::NativeText).toStdString(); + } + + return QKeySequence(keyEvent->key()).toString(QKeySequence::NativeText).toStdString(); } std::string keyboard_pad_handler::GetKeyName(const u32& keyCode) diff --git a/rpcs3/Input/keyboard_pad_handler.h b/rpcs3/Input/keyboard_pad_handler.h index 2f1d8a6669..855f9709ec 100644 --- a/rpcs3/Input/keyboard_pad_handler.h +++ b/rpcs3/Input/keyboard_pad_handler.h @@ -91,7 +91,7 @@ public: static std::string GetMouseName(const QMouseEvent* event); static std::string GetMouseName(u32 button); static QStringList GetKeyNames(const QKeyEvent* keyEvent); - static std::string GetKeyName(const QKeyEvent* keyEvent); + static std::string GetKeyName(const QKeyEvent* keyEvent, bool with_modifiers); static std::string GetKeyName(const u32& keyCode); static std::set GetKeyCodes(const cfg::string& cfg_string); static u32 GetKeyCode(const QString& keyName); diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_settings_dialog.cpp index 75c8eea9eb..ce8f14dfe5 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_settings_dialog.cpp @@ -883,7 +883,7 @@ void pad_settings_dialog::keyPressEvent(QKeyEvent *keyEvent) } else { - m_cfg_entries[m_button_id].insert_key(keyboard_pad_handler::GetKeyName(keyEvent), m_enable_multi_binding); + m_cfg_entries[m_button_id].insert_key(keyboard_pad_handler::GetKeyName(keyEvent, false), m_enable_multi_binding); } ReactivateButtons();