summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/kernel/qkeymapper_qpa.cpp7
-rw-r--r--src/gui/kernel/qplatformintegration.cpp14
-rw-r--r--src/gui/kernel/qplatformintegration.h2
3 files changed, 22 insertions, 1 deletions
diff --git a/src/gui/kernel/qkeymapper_qpa.cpp b/src/gui/kernel/qkeymapper_qpa.cpp
index 5073720ed8..0c225a4c91 100644
--- a/src/gui/kernel/qkeymapper_qpa.cpp
+++ b/src/gui/kernel/qkeymapper_qpa.cpp
@@ -43,6 +43,8 @@
#include <qdebug.h>
#include <private/qevent_p.h>
#include <private/qlocale_p.h>
+#include <private/qguiapplication_p.h>
+#include <qpa/qplatformintegration.h>
QT_BEGIN_NAMESPACE
@@ -66,7 +68,10 @@ void QKeyMapperPrivate::clearMappings()
QList<int> QKeyMapperPrivate::possibleKeys(QKeyEvent *e)
{
- QList<int> result;
+ QList<int> result = QGuiApplicationPrivate::platformIntegration()->possibleKeys(e);
+ if (!result.isEmpty())
+ return result;
+
if (e->key() && (e->key() != Qt::Key_unknown))
result << int(e->key() + e->modifiers());
else if (!e->text().isEmpty())
diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp
index 631f392284..cf55c59bab 100644
--- a/src/gui/kernel/qplatformintegration.cpp
+++ b/src/gui/kernel/qplatformintegration.cpp
@@ -313,6 +313,20 @@ Qt::KeyboardModifiers QPlatformIntegration::queryKeyboardModifiers() const
}
/*!
+ Should be used to obtain a list of possible shortcuts for the given key
+ event. As that needs system functionality it cannot be done in qkeymapper.
+
+ One example for more than 1 possibility is the key combination of Shift+5.
+ That one might trigger a shortcut which is set as "Shift+5" as well as one
+ using %. These combinations depend on the currently set keyboard layout
+ which cannot be obtained by Qt functionality.
+*/
+QList<int> QPlatformIntegration::possibleKeys(const QKeyEvent *) const
+{
+ return QList<int>();
+}
+
+/*!
Should be called by the implementation whenever a new screen is added.
The first screen added will be the primary screen, used for default-created
diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h
index 7bc6c276c0..7e8888407c 100644
--- a/src/gui/kernel/qplatformintegration.h
+++ b/src/gui/kernel/qplatformintegration.h
@@ -76,6 +76,7 @@ class QPlatformTheme;
class QPlatformDialogHelper;
class QPlatformSharedGraphicsCache;
class QPlatformServices;
+class QKeyEvent;
class Q_GUI_EXPORT QPlatformIntegration
{
@@ -141,6 +142,7 @@ public:
virtual QVariant styleHint(StyleHint hint) const;
virtual Qt::KeyboardModifiers queryKeyboardModifiers() const;
+ virtual QList<int> possibleKeys(const QKeyEvent *) const;
virtual QStringList themeNames() const;
virtual QPlatformTheme *createPlatformTheme(const QString &name) const;