From ca2e7240d3eeb84070ccf406eafc3dd202663325 Mon Sep 17 00:00:00 2001 From: Shubham Shinde Date: Sat, 28 Sep 2024 14:41:43 +0530 Subject: [PATCH 1/2] Fix Shift+Down/Up Accessibility --- src/framework/shortcuts/view/editshortcutmodel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/framework/shortcuts/view/editshortcutmodel.cpp b/src/framework/shortcuts/view/editshortcutmodel.cpp index c251a8a2be385..fbc37d90a863d 100644 --- a/src/framework/shortcuts/view/editshortcutmodel.cpp +++ b/src/framework/shortcuts/view/editshortcutmodel.cpp @@ -87,7 +87,8 @@ void EditShortcutModel::inputKey(Qt::Key key, Qt::KeyboardModifiers modifiers) } // remove shift-modifier for keys that don't need it: letters and special keys - if ((modifiers & Qt::ShiftModifier) && ((key < Qt::Key_A) || (key > Qt::Key_Z) || (key >= Qt::Key_Escape))) { + if ((modifiers & Qt::ShiftModifier) + && ((key < Qt::Key_A || key > Qt::Key_Z) && key != Qt::Key_Up && key != Qt::Key_Down && key >= Qt::Key_Escape)) { modifiers &= ~Qt::ShiftModifier; } From cd06004d2dd7567018f784cb58d08aabf27b95f1 Mon Sep 17 00:00:00 2001 From: Shubham Shinde Date: Mon, 30 Sep 2024 20:15:20 +0530 Subject: [PATCH 2/2] Added more special keys --- .../shortcuts/view/editshortcutmodel.cpp | 29 +++++++++++++++++-- .../shortcuts/view/editshortcutmodel.h | 1 + 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/framework/shortcuts/view/editshortcutmodel.cpp b/src/framework/shortcuts/view/editshortcutmodel.cpp index fbc37d90a863d..4a7e47e57525f 100644 --- a/src/framework/shortcuts/view/editshortcutmodel.cpp +++ b/src/framework/shortcuts/view/editshortcutmodel.cpp @@ -86,9 +86,9 @@ void EditShortcutModel::inputKey(Qt::Key key, Qt::KeyboardModifiers modifiers) return; } - // remove shift-modifier for keys that don't need it: letters and special keys + // Remove shift-modifier for non-letter keys, except a few special keys if ((modifiers & Qt::ShiftModifier) - && ((key < Qt::Key_A || key > Qt::Key_Z) && key != Qt::Key_Up && key != Qt::Key_Down && key >= Qt::Key_Escape)) { + && ((key < Qt::Key_A || key > Qt::Key_Z) && checkNotSpecialKey(key) && key > Qt::Key_Escape)) { modifiers &= ~Qt::ShiftModifier; } @@ -111,6 +111,31 @@ void EditShortcutModel::inputKey(Qt::Key key, Qt::KeyboardModifiers modifiers) emit newSequenceChanged(); } +bool EditShortcutModel::checkNotSpecialKey(Qt::Key key) +{ + // Few special keys for which the Shift modifier should not be removed + switch (key) { + case Qt::Key_Up: + case Qt::Key_Down: + case Qt::Key_Left: + case Qt::Key_Right: + case Qt::Key_Insert: + case Qt::Key_Delete: + case Qt::Key_Home: + case Qt::Key_End: + case Qt::Key_PageUp: + case Qt::Key_PageDown: + case Qt::Key_Space: + case Qt::Key_Escape: + case Qt::Key_F1: case Qt::Key_F2: case Qt::Key_F3: case Qt::Key_F4: + case Qt::Key_F5: case Qt::Key_F6: case Qt::Key_F7: case Qt::Key_F8: + case Qt::Key_F9: case Qt::Key_F10: case Qt::Key_F11: case Qt::Key_F12: + return false; + default: + return true; + } +} + void EditShortcutModel::checkNewSequenceForConflicts() { m_conflictShortcut.clear(); diff --git a/src/framework/shortcuts/view/editshortcutmodel.h b/src/framework/shortcuts/view/editshortcutmodel.h index 3105f13a9f36c..f958e7b28b0f0 100644 --- a/src/framework/shortcuts/view/editshortcutmodel.h +++ b/src/framework/shortcuts/view/editshortcutmodel.h @@ -47,6 +47,7 @@ class EditShortcutModel : public QObject, public Injectable QString originSequenceInNativeFormat() const; QString newSequenceInNativeFormat() const; QString conflictWarning() const; + bool checkNotSpecialKey(Qt::Key key); Q_INVOKABLE void load(const QVariant& shortcut, const QVariantList& allShortcuts); Q_INVOKABLE void inputKey(Qt::Key key, Qt::KeyboardModifiers modifiers);