diff --git a/src/blackmisc/input/hotkeycombination.cpp b/src/blackmisc/input/hotkeycombination.cpp index 8651a81fc..39cebddf5 100644 --- a/src/blackmisc/input/hotkeycombination.cpp +++ b/src/blackmisc/input/hotkeycombination.cpp @@ -42,8 +42,11 @@ namespace BlackMisc void CHotkeyCombination::replaceKey(CKeyboardKey oldKey, CKeyboardKey newKey) { - Q_ASSERT(!oldKey.isUnknown()); - m_keyboardKeys.remove(oldKey); + if (oldKey.hasKey()) + { + Q_ASSERT(!oldKey.isUnknown()); + m_keyboardKeys.remove(oldKey); + } if (!newKey.isUnknown()) { m_keyboardKeys.push_back(newKey); } m_keyboardKeys.sortBy(&CKeyboardKey::getKey); } diff --git a/src/blackmisc/input/hotkeycombination.h b/src/blackmisc/input/hotkeycombination.h index 940b12512..68735475b 100644 --- a/src/blackmisc/input/hotkeycombination.h +++ b/src/blackmisc/input/hotkeycombination.h @@ -21,7 +21,7 @@ #include "blackmisc/valueobject.h" #include -#include +#include namespace BlackMisc { @@ -46,6 +46,9 @@ namespace BlackMisc //! Get keyboard keys CKeyboardKeyList getKeyboardKeys() const { return m_keyboardKeys; } + //! As keyboard key strings + QStringList getKeyStrings() const { return m_keyboardKeys.getKeyStrings(); } + //! Set joystick buttons void setJoystickButtons(const CJoystickButtonList &list) { m_joystickButtons = list; } diff --git a/src/blackmisc/input/keyboardkeylist.cpp b/src/blackmisc/input/keyboardkeylist.cpp index a81415519..bb3333c00 100644 --- a/src/blackmisc/input/keyboardkeylist.cpp +++ b/src/blackmisc/input/keyboardkeylist.cpp @@ -25,6 +25,16 @@ namespace BlackMisc CSequence(baseClass) { } + QStringList CKeyboardKeyList::getKeyStrings() const + { + QStringList keys; + for (const CKeyboardKey &k : *this) + { + if (k.hasKey()) { keys.push_back(k.getKeyAsString()); } + } + return keys; + } + const CKeyboardKeyList &CKeyboardKeyList::allSupportedKeys() { static const CKeyboardKeyList allKeys = diff --git a/src/blackmisc/input/keyboardkeylist.h b/src/blackmisc/input/keyboardkeylist.h index 99dd38f2e..8db746c35 100644 --- a/src/blackmisc/input/keyboardkeylist.h +++ b/src/blackmisc/input/keyboardkeylist.h @@ -18,6 +18,7 @@ #include "blackmisc/sequence.h" #include "blackmisc/variant.h" +#include #include #include #include @@ -46,6 +47,9 @@ namespace BlackMisc //! Initializer list constructor. CKeyboardKeyList(std::initializer_list il) : CSequence(il) {} + //! All key strings + QStringList getKeyStrings() const; + //! Get all supported keys static const CKeyboardKeyList &allSupportedKeys(); };