Merge remote-tracking branch 'origin/5.8' into 5.9

Change-Id: I76be82a6da77f51f6d53239d593dc6f61951559b
This commit is contained in:
Paul Olav Tvete 2017-03-13 13:50:39 +01:00
commit c2f1a2dd89
2 changed files with 25 additions and 0 deletions

View File

@ -43,10 +43,13 @@
#include <QKeyEvent> #include <QKeyEvent>
#include <QString> #include <QString>
#if QT_CONFIG(xkbcommon_evdev)
#include <xkbcommon/xkbcommon-keysyms.h> #include <xkbcommon/xkbcommon-keysyms.h>
#endif
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
#if QT_CONFIG(xkbcommon_evdev)
static const uint32_t KeyTbl[] = { static const uint32_t KeyTbl[] = {
XKB_KEY_Escape, Qt::Key_Escape, XKB_KEY_Escape, Qt::Key_Escape,
XKB_KEY_Tab, Qt::Key_Tab, XKB_KEY_Tab, Qt::Key_Tab,
@ -290,9 +293,11 @@ static xkb_keysym_t toKeysymFromTable(uint32_t key)
return 0; return 0;
} }
#endif
std::pair<int, QString> QWaylandXkb::keysymToQtKey(xkb_keysym_t keysym, Qt::KeyboardModifiers &modifiers) std::pair<int, QString> QWaylandXkb::keysymToQtKey(xkb_keysym_t keysym, Qt::KeyboardModifiers &modifiers)
{ {
#if QT_CONFIG(xkbcommon_evdev)
QString text; QString text;
uint utf32 = xkb_keysym_to_utf32(keysym); uint utf32 = xkb_keysym_to_utf32(keysym);
if (utf32) if (utf32)
@ -326,10 +331,15 @@ std::pair<int, QString> QWaylandXkb::keysymToQtKey(xkb_keysym_t keysym, Qt::Keyb
} }
return { code, text }; return { code, text };
#else
Q_UNUSED(modifiers)
return { keysym, "" };
#endif
} }
Qt::KeyboardModifiers QWaylandXkb::modifiers(struct xkb_state *state) Qt::KeyboardModifiers QWaylandXkb::modifiers(struct xkb_state *state)
{ {
#if QT_CONFIG(xkbcommon_evdev)
Qt::KeyboardModifiers modifiers = Qt::NoModifier; Qt::KeyboardModifiers modifiers = Qt::NoModifier;
xkb_state_component cstate = static_cast<xkb_state_component>(XKB_STATE_DEPRESSED | XKB_STATE_LATCHED | XKB_STATE_LOCKED); xkb_state_component cstate = static_cast<xkb_state_component>(XKB_STATE_DEPRESSED | XKB_STATE_LATCHED | XKB_STATE_LOCKED);
@ -344,6 +354,10 @@ Qt::KeyboardModifiers QWaylandXkb::modifiers(struct xkb_state *state)
modifiers |= Qt::MetaModifier; modifiers |= Qt::MetaModifier;
return modifiers; return modifiers;
#else
Q_UNUSED(state)
return Qt::NoModifier;
#endif
} }
QEvent::Type QWaylandXkb::toQtEventType(uint32_t state) QEvent::Type QWaylandXkb::toQtEventType(uint32_t state)
@ -353,6 +367,7 @@ QEvent::Type QWaylandXkb::toQtEventType(uint32_t state)
QVector<xkb_keysym_t> QWaylandXkb::toKeysym(QKeyEvent *event) QVector<xkb_keysym_t> QWaylandXkb::toKeysym(QKeyEvent *event)
{ {
#if QT_CONFIG(xkbcommon_evdev)
QVector<xkb_keysym_t> keysyms; QVector<xkb_keysym_t> keysyms;
if (event->key() >= Qt::Key_F1 && event->key() <= Qt::Key_F35) { if (event->key() >= Qt::Key_F1 && event->key() <= Qt::Key_F35) {
keysyms.append(XKB_KEY_F1 + (event->key() - Qt::Key_F1)); keysyms.append(XKB_KEY_F1 + (event->key() - Qt::Key_F1));
@ -372,6 +387,9 @@ QVector<xkb_keysym_t> QWaylandXkb::toKeysym(QKeyEvent *event)
keysyms.append(toKeysymFromTable(event->key())); keysyms.append(toKeysymFromTable(event->key()));
} }
return keysyms; return keysyms;
#else
return QVector<xkb_keysym_t>() << event->nativeScanCode();
#endif
} }
QT_END_NAMESPACE QT_END_NAMESPACE

View File

@ -41,9 +41,16 @@
#ifndef QWAYLANDXKB_H #ifndef QWAYLANDXKB_H
#define QWAYLANDXKB_H #define QWAYLANDXKB_H
#include <QtGui/private/qtguiglobal_p.h>
#include <Qt> #include <Qt>
#include <QEvent> #include <QEvent>
#if QT_CONFIG(xkbcommon_evdev)
#include <xkbcommon/xkbcommon.h> #include <xkbcommon/xkbcommon.h>
#else
typedef quint32 xkb_keysym_t;
struct xkb_state;
#endif
#include <utility> #include <utility>