diff options
Diffstat (limited to 'logic/win32-shortcuts.cpp')
| -rw-r--r-- | logic/win32-shortcuts.cpp | 81 |
1 files changed, 38 insertions, 43 deletions
diff --git a/logic/win32-shortcuts.cpp b/logic/win32-shortcuts.cpp index 2099ce09..cb4f99b3 100644 --- a/logic/win32-shortcuts.cpp +++ b/logic/win32-shortcuts.cpp @@ -15,6 +15,7 @@ #include <QVariant> #include <QDebug> +#if 0 win_key const windows_key_mods[] { {DIK_LCONTROL, Qt::Key_Control}, {DIK_RCONTROL, Qt::Key_Control}, @@ -25,6 +26,7 @@ win_key const windows_key_mods[] { {DIK_LWIN, Qt::Key_Super_L}, {DIK_RWIN, Qt::Key_Super_R}, }; +#endif static const win_key windows_key_sequences[] { { DIK_F1, Qt::Key_F1 }, @@ -39,6 +41,9 @@ static const win_key windows_key_sequences[] { { DIK_F10, Qt::Key_F10 }, { DIK_F11, Qt::Key_F11 }, { DIK_F12, Qt::Key_F12 }, + { DIK_F13, Qt::Key_F13 }, + { DIK_F14, Qt::Key_F14 }, + { DIK_F15, Qt::Key_F15 }, { DIK_LEFT, Qt::Key_Left }, { DIK_RIGHT, Qt::Key_Right }, { DIK_UP, Qt::Key_Up }, @@ -61,18 +66,6 @@ static const win_key windows_key_sequences[] { { DIK_MINUS, Qt::Key_Minus }, { DIK_EQUALS, Qt::Key_Equal }, { DIK_PERIOD, Qt::Key_Period }, - { DIK_F1, Qt::Key_F1 }, - { DIK_F2, Qt::Key_F2 }, - { DIK_F3, Qt::Key_F3 }, - { DIK_F4, Qt::Key_F4 }, - { DIK_F5, Qt::Key_F5 }, - { DIK_F6, Qt::Key_F6 }, - { DIK_F7, Qt::Key_F7 }, - { DIK_F8, Qt::Key_F8 }, - { DIK_F9, Qt::Key_F9 }, - { DIK_F10, Qt::Key_F10 }, - { DIK_F11, Qt::Key_F11 }, - { DIK_F12, Qt::Key_F12 }, { DIK_0, Qt::Key_0 }, { DIK_1, Qt::Key_1 }, { DIK_2, Qt::Key_2 }, @@ -119,26 +112,26 @@ static const win_key windows_key_sequences[] { { DIK_PAUSE, Qt::Key_Pause}, { DIK_NUMLOCK, Qt::Key_NumLock}, { DIK_CAPSLOCK, Qt::Key_CapsLock}, -#define mod(x, y) static_cast<Qt::Key>(x | y) - { DIK_NUMPAD0, mod(Qt::Key_0, Qt::KeypadModifier)}, - { DIK_NUMPAD0, mod(Qt::Key_0, Qt::KeypadModifier)}, - { DIK_NUMPAD1, mod(Qt::Key_1, Qt::KeypadModifier)}, - { DIK_NUMPAD2, mod(Qt::Key_2, Qt::KeypadModifier)}, - { DIK_NUMPAD3, mod(Qt::Key_3, Qt::KeypadModifier)}, - { DIK_NUMPAD4, mod(Qt::Key_4, Qt::KeypadModifier)}, - { DIK_NUMPAD5, mod(Qt::Key_5, Qt::KeypadModifier)}, - { DIK_NUMPAD6, mod(Qt::Key_6, Qt::KeypadModifier)}, - { DIK_NUMPAD7, mod(Qt::Key_7, Qt::KeypadModifier)}, - { DIK_NUMPAD8, mod(Qt::Key_8, Qt::KeypadModifier)}, - { DIK_NUMPAD9, mod(Qt::Key_9, Qt::KeypadModifier)}, - { DIK_NUMPADCOMMA, mod(Qt::Key_Comma, Qt::KeypadModifier)}, - { DIK_NUMPADENTER, mod(Qt::Key_Enter, Qt::KeypadModifier)}, - { DIK_NUMPADEQUALS, mod(Qt::Key_Equal, Qt::KeypadModifier)}, - { DIK_NUMPADMINUS, mod(Qt::Key_Minus, Qt::KeypadModifier)}, - { DIK_NUMPADPERIOD, mod(Qt::Key_Period, Qt::KeypadModifier)}, - { DIK_NUMPADPLUS, mod(Qt::Key_Plus, Qt::KeypadModifier)}, - { DIK_NUMPADSLASH, mod(Qt::Key_Slash, Qt::KeypadModifier)}, - { DIK_NUMPADSTAR, mod(Qt::Key_multiply, Qt::KeypadModifier)}, +#define key_mod(x, y) Qt::Key(int((x)) | int((y))) + { DIK_NUMPAD0, key_mod(Qt::Key_0, Qt::KeypadModifier)}, + { DIK_NUMPAD0, key_mod(Qt::Key_0, Qt::KeypadModifier)}, + { DIK_NUMPAD1, key_mod(Qt::Key_1, Qt::KeypadModifier)}, + { DIK_NUMPAD2, key_mod(Qt::Key_2, Qt::KeypadModifier)}, + { DIK_NUMPAD3, key_mod(Qt::Key_3, Qt::KeypadModifier)}, + { DIK_NUMPAD4, key_mod(Qt::Key_4, Qt::KeypadModifier)}, + { DIK_NUMPAD5, key_mod(Qt::Key_5, Qt::KeypadModifier)}, + { DIK_NUMPAD6, key_mod(Qt::Key_6, Qt::KeypadModifier)}, + { DIK_NUMPAD7, key_mod(Qt::Key_7, Qt::KeypadModifier)}, + { DIK_NUMPAD8, key_mod(Qt::Key_8, Qt::KeypadModifier)}, + { DIK_NUMPAD9, key_mod(Qt::Key_9, Qt::KeypadModifier)}, + { DIK_NUMPADCOMMA, key_mod(Qt::Key_Comma, Qt::KeypadModifier)}, + { DIK_NUMPADENTER, key_mod(Qt::Key_Enter, Qt::KeypadModifier)}, + { DIK_NUMPADEQUALS, key_mod(Qt::Key_Equal, Qt::KeypadModifier)}, + { DIK_NUMPADMINUS, key_mod(Qt::Key_Minus, Qt::KeypadModifier)}, + { DIK_NUMPADPERIOD, key_mod(Qt::Key_Period, Qt::KeypadModifier)}, + { DIK_NUMPADPLUS, key_mod(Qt::Key_Plus, Qt::KeypadModifier)}, + { DIK_NUMPADSLASH, key_mod(Qt::Key_Slash, Qt::KeypadModifier)}, + { DIK_NUMPADSTAR, key_mod(Qt::Key_multiply, Qt::KeypadModifier)}, }; bool win_key::to_qt(const Key& k, QKeySequence& qt_, Qt::KeyboardModifiers &mods) @@ -158,23 +151,25 @@ bool win_key::to_qt(const Key& k, QKeySequence& qt_, Qt::KeyboardModifiers &mods return false; } -bool win_key::from_qt(QKeySequence qt_, int& dik, Qt::KeyboardModifiers& mods) +bool win_key::from_qt(const QKeySequence& qt_, int& dik, Qt::KeyboardModifiers& mods) { // CAVEAT don't use QVariant::toUInt() or conversion fails - const unsigned qt = static_cast<unsigned>(QVariant(qt_).toInt()); - const unsigned our_mods = unsigned(qt & Qt::KeyboardModifierMask); + const unsigned qt = (unsigned)QVariant(qt_).toInt(); + const unsigned our_mods = qt & (unsigned)Qt::KeyboardModifierMask; + + if (qt == 0) + return false; + for (const win_key& wk : windows_key_sequences) { - for (const win_key& wk : windows_key_sequences) + if (unsigned(wk.qt) == qt) { - if (unsigned(wk.qt) == qt) - { - dik = wk.win; - mods = Qt::NoModifier; - return true; - } + dik = wk.win; + mods = Qt::NoModifier; + return true; } } + { const unsigned key = qt & ~Qt::KeyboardModifierMask; for (const win_key& wk : windows_key_sequences) @@ -182,7 +177,7 @@ bool win_key::from_qt(QKeySequence qt_, int& dik, Qt::KeyboardModifiers& mods) if (unsigned(wk.qt) == key) { dik = wk.win; - mods = static_cast<Qt::KeyboardModifiers>(our_mods); + mods = { (Qt::KeyboardModifier)our_mods }; return true; } } |
