Swap Qt::ControlModifier and Qt::MetaModifier on Mac

This is because their meaning is different there.
See https://doc.qt.io/qt-5/qt.html#KeyboardModifier-enum
This commit is contained in:
Andrew Janke
2019-03-12 18:19:25 -04:00
committed by Chih-Hsuan Yen
parent 9ee754ad0f
commit 5ce909cbc2
3 changed files with 19 additions and 4 deletions
+12
View File
@@ -50,6 +50,13 @@ const QByteArray KeyboardTranslatorManager::defaultTranslatorText(
"key Tab : \"\\t\""
);
#ifdef Q_OS_MAC
// On Mac, Qt::ControlModifier means Cmd, and MetaModifier means Ctrl
const Qt::KeyboardModifier KeyboardTranslator::CTRL_MOD = Qt::MetaModifier;
#else
const Qt::KeyboardModifier KeyboardTranslator::CTRL_MOD = Qt::ControlModifier;
#endif
KeyboardTranslatorManager::KeyboardTranslatorManager()
: _haveLoadedAll(false)
{
@@ -613,6 +620,11 @@ bool KeyboardTranslator::Entry::matches(int keyCode ,
Qt::KeyboardModifiers modifiers,
States testState) const
{
#ifdef Q_OS_MAC
// On Mac, arrow keys are considered part of keypad. Ignore that.
modifiers &= ~Qt::KeypadModifier;
#endif
if ( _keyCode != keyCode )
return false;