Enhance grave modifier key support and fix missing key definitions

- Add missing grave key definitions in KeySequence class
- Improve key type mapping for grave modifier
- Ensure consistent grave modifier behavior across GUI and core

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
danielsuss 2025-06-13 15:12:33 +01:00
parent 314f1070e5
commit b8f917def2
4 changed files with 24 additions and 1 deletions

View File

@ -139,6 +139,19 @@ bool KeySequence::appendKey(int key, int modifiers)
} }
break; break;
case Qt::Key_QuoteLeft:
{
printf("GRAVE DEBUG: Qt::Key_QuoteLeft detected in GUI\n");
int mod = GraveModifier & (~m_Modifiers);
if (mod)
{
printf("GRAVE DEBUG: Adding GraveModifier to sequence: %08x\n", mod);
m_Sequence.append(mod);
m_Modifiers |= mod;
}
}
break;
default: default:
// see if we can handle this key, if not, don't accept it // see if we can handle this key, if not, don't accept it
if (keyToString(key).isEmpty()) if (keyToString(key).isEmpty())
@ -210,6 +223,9 @@ QString KeySequence::keyToString(int key)
if (key & Qt::MetaModifier) if (key & Qt::MetaModifier)
return "Meta"; return "Meta";
if (key & GraveModifier)
return "Grave";
// treat key pad like normal keys (FIXME: we should have another lookup table for keypad keys instead) // treat key pad like normal keys (FIXME: we should have another lookup table for keypad keys instead)
key &= ~Qt::KeypadModifier; key &= ~Qt::KeypadModifier;

View File

@ -25,6 +25,9 @@
class QSettings; class QSettings;
// Custom modifier for grave key (not supported by Qt)
static const int GraveModifier = 0x20000000;
class KeySequence class KeySequence
{ {
public: public:

View File

@ -209,6 +209,7 @@ const KeyModifierNameMapEntry kModifierNameMap[] = {
{ "AltGr", KeyModifierAltGr }, { "AltGr", KeyModifierAltGr },
// { "CapsLock", KeyModifierCapsLock }, // { "CapsLock", KeyModifierCapsLock },
{ "Control", KeyModifierControl }, { "Control", KeyModifierControl },
{ "Grave", KeyModifierGrave },
{ "Meta", KeyModifierMeta }, { "Meta", KeyModifierMeta },
// { "NumLock", KeyModifierNumLock }, // { "NumLock", KeyModifierNumLock },
// { "ScrollLock", KeyModifierScrollLock }, // { "ScrollLock", KeyModifierScrollLock },

View File

@ -58,6 +58,7 @@ static const KeyModifierMask KeyModifierMeta = 0x0008;
static const KeyModifierMask KeyModifierSuper = 0x0010; static const KeyModifierMask KeyModifierSuper = 0x0010;
static const KeyModifierMask KeyModifierAltGr = 0x0020; static const KeyModifierMask KeyModifierAltGr = 0x0020;
static const KeyModifierMask KeyModifierLevel5Lock = 0x0040; static const KeyModifierMask KeyModifierLevel5Lock = 0x0040;
static const KeyModifierMask KeyModifierGrave = 0x0080;
static const KeyModifierMask KeyModifierCapsLock = 0x1000; static const KeyModifierMask KeyModifierCapsLock = 0x1000;
static const KeyModifierMask KeyModifierNumLock = 0x2000; static const KeyModifierMask KeyModifierNumLock = 0x2000;
static const KeyModifierMask KeyModifierScrollLock = 0x4000; static const KeyModifierMask KeyModifierScrollLock = 0x4000;
@ -73,6 +74,7 @@ static const UInt32 kKeyModifierBitMeta = 3;
static const UInt32 kKeyModifierBitSuper = 4; static const UInt32 kKeyModifierBitSuper = 4;
static const UInt32 kKeyModifierBitAltGr = 5; static const UInt32 kKeyModifierBitAltGr = 5;
static const UInt32 kKeyModifierBitLevel5Lock = 6; static const UInt32 kKeyModifierBitLevel5Lock = 6;
static const UInt32 kKeyModifierBitGrave = 7;
static const UInt32 kKeyModifierBitCapsLock = 12; static const UInt32 kKeyModifierBitCapsLock = 12;
static const UInt32 kKeyModifierBitNumLock = 13; static const UInt32 kKeyModifierBitNumLock = 13;
static const UInt32 kKeyModifierBitScrollLock = 14; static const UInt32 kKeyModifierBitScrollLock = 14;
@ -88,7 +90,8 @@ static const KeyModifierID kKeyModifierIDAlt = 3;
static const KeyModifierID kKeyModifierIDMeta = 4; static const KeyModifierID kKeyModifierIDMeta = 4;
static const KeyModifierID kKeyModifierIDSuper = 5; static const KeyModifierID kKeyModifierIDSuper = 5;
static const KeyModifierID kKeyModifierIDAltGr = 6; static const KeyModifierID kKeyModifierIDAltGr = 6;
static const KeyModifierID kKeyModifierIDLast = 7; static const KeyModifierID kKeyModifierIDGrave = 7;
static const KeyModifierID kKeyModifierIDLast = 8;
//@} //@}
//! @name Key identifiers //! @name Key identifiers