wasm: fix unicode input

also remove duplicated function call to get Qt key for event

Pick-to: 6.3 6.4
Fixes: QTBUG-78826
Change-Id: Ibaf0dd3eb428b65280ed1f840a4849b44f2868e0
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This commit is contained in:
Lorn Potter 2022-06-16 13:57:46 +10:00
parent 81b5395aef
commit 87c2a401da
3 changed files with 9 additions and 9 deletions

View File

@ -1138,8 +1138,8 @@ bool QWasmCompositor::processKeyboard(int eventType, const EmscriptenKeyboardEve
case EMSCRIPTEN_EVENT_KEYPRESS: case EMSCRIPTEN_EVENT_KEYPRESS:
case EMSCRIPTEN_EVENT_KEYDOWN: // down case EMSCRIPTEN_EVENT_KEYDOWN: // down
keyType = QEvent::KeyPress; keyType = QEvent::KeyPress;
keyText = this->eventTranslator->getKeyText(keyEvent);
qtKey = this->eventTranslator->getKey(keyEvent); qtKey = this->eventTranslator->getKey(keyEvent);
keyText = this->eventTranslator->getKeyText(keyEvent, qtKey);
break; break;
case EMSCRIPTEN_EVENT_KEYUP: // up case EMSCRIPTEN_EVENT_KEYUP: // up
keyType = QEvent::KeyRelease; keyType = QEvent::KeyRelease;

View File

@ -18,6 +18,7 @@
#include <private/qmakearray_p.h> #include <private/qmakearray_p.h>
#include <QtCore/qnamespace.h> #include <QtCore/qnamespace.h>
#include <QCursor> #include <QCursor>
#include <QtCore/private/qstringiterator_p.h>
#include <emscripten/bind.h> #include <emscripten/bind.h>
@ -229,9 +230,9 @@ Qt::Key QWasmEventTranslator::translateEmscriptKey(const EmscriptenKeyboardEvent
if (qtKey == Qt::Key_unknown) { if (qtKey == Qt::Key_unknown) {
// cast to unicode key // cast to unicode key
QString str = QString::fromUtf8(emscriptKey->key); QString str = QString::fromUtf8(emscriptKey->key).toUpper();
ushort c = str.unicode()->toUpper().unicode(); // uppercase QStringIterator i(str);
qtKey = static_cast<Qt::Key>(c); qtKey = static_cast<Qt::Key>(i.next(0));
} }
return qtKey; return qtKey;
@ -364,11 +365,9 @@ QCursor QWasmEventTranslator::cursorForMode(QWasmCompositor::ResizeMode m)
return Qt::ArrowCursor; return Qt::ArrowCursor;
} }
QString QWasmEventTranslator::getKeyText(const EmscriptenKeyboardEvent *keyEvent) QString QWasmEventTranslator::getKeyText(const EmscriptenKeyboardEvent *keyEvent, Qt::Key qtKey)
{ {
QString keyText; QString keyText;
Qt::Key qtKey = translateEmscriptKey(keyEvent);
//Qt::KeyboardModifiers modifiers = translateKeyboardEventModifier(keyEvent);
if (m_emDeadKey != Qt::Key_unknown) { if (m_emDeadKey != Qt::Key_unknown) {
Qt::Key transformedKey = translateDeadKey(m_emDeadKey, qtKey); Qt::Key transformedKey = translateDeadKey(m_emDeadKey, qtKey);
@ -394,7 +393,8 @@ QString QWasmEventTranslator::getKeyText(const EmscriptenKeyboardEvent *keyEvent
} }
} }
} }
if (keyText.isEmpty())
keyText = QString::fromUtf8(keyEvent->key);
return keyText; return keyText;
} }

View File

@ -36,7 +36,7 @@ public:
static Qt::MouseButton translateMouseButton(unsigned short button); static Qt::MouseButton translateMouseButton(unsigned short button);
static QCursor cursorForMode(QWasmCompositor::ResizeMode mode); static QCursor cursorForMode(QWasmCompositor::ResizeMode mode);
QString getKeyText(const EmscriptenKeyboardEvent *keyEvent); QString getKeyText(const EmscriptenKeyboardEvent *keyEvent, Qt::Key key);
Qt::Key getKey(const EmscriptenKeyboardEvent *keyEvent); Qt::Key getKey(const EmscriptenKeyboardEvent *keyEvent);
void setStickyDeadKey(const EmscriptenKeyboardEvent *keyEvent); void setStickyDeadKey(const EmscriptenKeyboardEvent *keyEvent);