summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/client/qwaylandinputdevice.cpp11
-rw-r--r--src/client/qwaylandinputdevice_p.h3
-rw-r--r--src/client/qwaylandintegration.cpp7
-rw-r--r--src/client/qwaylandintegration_p.h2
4 files changed, 23 insertions, 0 deletions
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index 17c408a3d..39c02d962 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -476,6 +476,17 @@ QPointF QWaylandInputDevice::pointerSurfacePosition() const
return mPointer ? mPointer->mSurfacePos : QPointF();
}
+QList<int> QWaylandInputDevice::possibleKeys(const QKeyEvent *event) const
+{
+#if QT_CONFIG(xkbcommon)
+ if (mKeyboard && mKeyboard->mXkbState)
+ return QXkbCommon::possibleKeys(mKeyboard->mXkbState.get(), event);
+#else
+ Q_UNUSED(event);
+#endif
+ return {};
+}
+
Qt::KeyboardModifiers QWaylandInputDevice::modifiers() const
{
if (!mKeyboard)
diff --git a/src/client/qwaylandinputdevice_p.h b/src/client/qwaylandinputdevice_p.h
index 2dc3ddc27..39ca9dca5 100644
--- a/src/client/qwaylandinputdevice_p.h
+++ b/src/client/qwaylandinputdevice_p.h
@@ -124,6 +124,8 @@ public:
QWaylandWindow *keyboardFocus() const;
QWaylandWindow *touchFocus() const;
+ QList<int> possibleKeys(const QKeyEvent *event) const;
+
QPointF pointerSurfacePosition() const;
Qt::KeyboardModifiers modifiers() const;
@@ -245,6 +247,7 @@ private:
QXkbCommon::ScopedXKBKeymap mXkbKeymap;
QXkbCommon::ScopedXKBState mXkbState;
#endif
+ friend class QWaylandInputDevice;
};
class Q_WAYLAND_CLIENT_EXPORT QWaylandInputDevice::Pointer : public QObject, public QtWayland::wl_pointer
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index 3a389d9ec..ea2b50b4a 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -293,6 +293,13 @@ QWaylandDisplay *QWaylandIntegration::display() const
return mDisplay.data();
}
+QList<int> QWaylandIntegration::possibleKeys(const QKeyEvent *event) const
+{
+ if (auto *seat = mDisplay->currentInputDevice())
+ return seat->possibleKeys(event);
+ return {};
+}
+
QStringList QWaylandIntegration::themeNames() const
{
return GenericWaylandTheme::themeNames();
diff --git a/src/client/qwaylandintegration_p.h b/src/client/qwaylandintegration_p.h
index 5e6f16d09..3aef2c4d9 100644
--- a/src/client/qwaylandintegration_p.h
+++ b/src/client/qwaylandintegration_p.h
@@ -106,6 +106,8 @@ public:
QWaylandDisplay *display() const;
+ QList<int> possibleKeys(const QKeyEvent *event) const override;
+
QStringList themeNames() const override;
QPlatformTheme *createPlatformTheme(const QString &name) const override;