Make access to xkbcommon_workaround.h more generic
It makes more sense to keep this workaround header together with the other libxkbcommon files for a better access point since it's used by several *.pro files. Change-Id: I63d4eb58f6e7f3852834e41c4b6e058a2c962233 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
This commit is contained in:
parent
43578e1901
commit
a2a8a9ea01
2
configure
vendored
2
configure
vendored
@ -5290,9 +5290,11 @@ if [ "$CFG_XKBCOMMON" != "qt" ]; then
|
|||||||
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xkbcommon >= 0.2.0" 2>/dev/null; then
|
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xkbcommon >= 0.2.0" 2>/dev/null; then
|
||||||
QMAKE_CFLAGS_XKBCOMMON="`$PKG_CONFIG --cflags xkbcommon 2>/dev/null`"
|
QMAKE_CFLAGS_XKBCOMMON="`$PKG_CONFIG --cflags xkbcommon 2>/dev/null`"
|
||||||
QMAKE_LIBS_XKBCOMMON="`$PKG_CONFIG --libs xkbcommon 2>/dev/null`"
|
QMAKE_LIBS_XKBCOMMON="`$PKG_CONFIG --libs xkbcommon 2>/dev/null`"
|
||||||
|
QMAKE_VERSION_XKBCOMMON="`$PKG_CONFIG --modversion xkbcommon 2>/dev/null`"
|
||||||
|
|
||||||
QMakeVar set QMAKE_CFLAGS_XKBCOMMON "$QMAKE_CFLAGS_XKBCOMMON"
|
QMakeVar set QMAKE_CFLAGS_XKBCOMMON "$QMAKE_CFLAGS_XKBCOMMON"
|
||||||
QMakeVar set QMAKE_LIBS_XKBCOMMON "$QMAKE_LIBS_XKBCOMMON"
|
QMakeVar set QMAKE_LIBS_XKBCOMMON "$QMAKE_LIBS_XKBCOMMON"
|
||||||
|
QMakeVar set QMAKE_VERSION_XKBCOMMON "$QMAKE_VERSION_XKBCOMMON"
|
||||||
CFG_XKBCOMMON=yes
|
CFG_XKBCOMMON=yes
|
||||||
else
|
else
|
||||||
CFG_XKBCOMMON=no
|
CFG_XKBCOMMON=no
|
||||||
|
@ -15,7 +15,6 @@ SOURCES += $$PWD/main.cpp \
|
|||||||
|
|
||||||
HEADERS += $$PWD/qcomposeplatforminputcontext.h \
|
HEADERS += $$PWD/qcomposeplatforminputcontext.h \
|
||||||
$$PWD/generator/qtablegenerator.h \
|
$$PWD/generator/qtablegenerator.h \
|
||||||
$$PWD/xkbcommon_workaround.h \
|
|
||||||
|
|
||||||
# libxkbcommon
|
# libxkbcommon
|
||||||
contains(QT_CONFIG, xkbcommon-qt): {
|
contains(QT_CONFIG, xkbcommon-qt): {
|
||||||
@ -23,6 +22,10 @@ contains(QT_CONFIG, xkbcommon-qt): {
|
|||||||
} else {
|
} else {
|
||||||
LIBS += $$QMAKE_LIBS_XKBCOMMON
|
LIBS += $$QMAKE_LIBS_XKBCOMMON
|
||||||
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XKBCOMMON
|
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XKBCOMMON
|
||||||
|
equals(QMAKE_VERSION_XKBCOMMON, "0.2.0") {
|
||||||
|
DEFINES += XKBCOMMON_0_2_0
|
||||||
|
INCLUDEPATH += ../../../3rdparty/xkbcommon/xkbcommon/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OTHER_FILES += $$PWD/compose.json
|
OTHER_FILES += $$PWD/compose.json
|
||||||
|
@ -49,7 +49,10 @@
|
|||||||
#include <QtCore/QString>
|
#include <QtCore/QString>
|
||||||
|
|
||||||
#include <xkbcommon/xkbcommon.h>
|
#include <xkbcommon/xkbcommon.h>
|
||||||
|
|
||||||
|
#ifdef XKBCOMMON_0_2_0
|
||||||
#include <xkbcommon_workaround.h>
|
#include <xkbcommon_workaround.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
//#define DEBUG_GENERATOR
|
//#define DEBUG_GENERATOR
|
||||||
|
|
||||||
@ -258,6 +261,7 @@ ushort TableGenerator::keysymToUtf8(quint32 sym)
|
|||||||
int bytes;
|
int bytes;
|
||||||
chars.resize(8);
|
chars.resize(8);
|
||||||
|
|
||||||
|
#ifdef XKBCOMMON_0_2_0
|
||||||
if (needWorkaround(sym)) {
|
if (needWorkaround(sym)) {
|
||||||
quint32 codepoint;
|
quint32 codepoint;
|
||||||
if (sym == XKB_KEY_KP_Space)
|
if (sym == XKB_KEY_KP_Space)
|
||||||
@ -269,6 +273,9 @@ ushort TableGenerator::keysymToUtf8(quint32 sym)
|
|||||||
} else {
|
} else {
|
||||||
bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size());
|
bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size());
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size());
|
||||||
|
#endif
|
||||||
|
|
||||||
if (bytes == -1)
|
if (bytes == -1)
|
||||||
qWarning("TableGenerator::keysymToUtf8 - buffer too small");
|
qWarning("TableGenerator::keysymToUtf8 - buffer too small");
|
||||||
|
@ -53,6 +53,10 @@
|
|||||||
#include <qpa/qplatformintegration.h>
|
#include <qpa/qplatformintegration.h>
|
||||||
#include <qpa/qplatformcursor.h>
|
#include <qpa/qplatformcursor.h>
|
||||||
|
|
||||||
|
#ifdef XKBCOMMON_0_2_0
|
||||||
|
#include <xkbcommon_workaround.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef XK_ISO_Left_Tab
|
#ifndef XK_ISO_Left_Tab
|
||||||
#define XK_ISO_Left_Tab 0xFE20
|
#define XK_ISO_Left_Tab 0xFE20
|
||||||
#endif
|
#endif
|
||||||
@ -1311,7 +1315,23 @@ QString QXcbKeyboard::keysymToUnicode(xcb_keysym_t sym) const
|
|||||||
int bytes;
|
int bytes;
|
||||||
chars.resize(7);
|
chars.resize(7);
|
||||||
|
|
||||||
if ((bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size())) == -1)
|
#ifdef XKBCOMMON_0_2_0
|
||||||
|
if (needWorkaround(sym)) {
|
||||||
|
quint32 codepoint;
|
||||||
|
if (sym == XKB_KEY_KP_Space)
|
||||||
|
codepoint = XKB_KEY_space & 0x7f;
|
||||||
|
else
|
||||||
|
codepoint = sym & 0x7f;
|
||||||
|
|
||||||
|
bytes = utf32_to_utf8(codepoint, chars.data());
|
||||||
|
} else {
|
||||||
|
bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size());
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (bytes == -1)
|
||||||
qWarning("QXcbKeyboard::handleKeyEvent - buffer too small");
|
qWarning("QXcbKeyboard::handleKeyEvent - buffer too small");
|
||||||
chars.resize(bytes-1);
|
chars.resize(bytes-1);
|
||||||
|
|
||||||
|
@ -124,4 +124,8 @@ contains(QT_CONFIG, xkbcommon-qt): {
|
|||||||
} else {
|
} else {
|
||||||
LIBS += $$QMAKE_LIBS_XKBCOMMON
|
LIBS += $$QMAKE_LIBS_XKBCOMMON
|
||||||
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XKBCOMMON
|
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XKBCOMMON
|
||||||
|
equals(QMAKE_VERSION_XKBCOMMON, "0.2.0") {
|
||||||
|
DEFINES += XKBCOMMON_0_2_0
|
||||||
|
INCLUDEPATH += ../../../3rdparty/xkbcommon/xkbcommon/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user