wasm: search emscripten key first
This fixes key lookups with different keyboard layouts Pick-to: 5.15 Fixes: QTBUG-84494 Change-Id: I18f1643331961d9bfc1ac6977181f8959e76449d Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This commit is contained in:
parent
76c3eee402
commit
0707b85cda
@ -433,20 +433,21 @@ Qt::Key QWasmEventTranslator::translateEmscriptKey(const EmscriptenKeyboardEvent
|
||||
{
|
||||
Qt::Key qtKey = Qt::Key_unknown;
|
||||
|
||||
if (qstrncmp(emscriptKey->code, "Key", 3) == 0 || qstrncmp(emscriptKey->code, "Numpad", 6) == 0 ||
|
||||
qstrncmp(emscriptKey->code, "Digit", 5) == 0) {
|
||||
if (qstrncmp(emscriptKey->key, "Dead", 4) == 0 ) {
|
||||
emkb2qt_t searchKey1{emscriptKey->code, 0};
|
||||
for (auto it1 = KeyTbl.cbegin(); it1 != KeyTbl.end(); ++it1)
|
||||
if (it1 != KeyTbl.end() && (qstrcmp(searchKey1.em, it1->em) == 0)) {
|
||||
qtKey = static_cast<Qt::Key>(it1->qt);
|
||||
}
|
||||
|
||||
} else if (qstrncmp(emscriptKey->code, "Key", 3) == 0 || qstrncmp(emscriptKey->code, "Numpad", 6) == 0 ||
|
||||
qstrncmp(emscriptKey->code, "Digit", 5) == 0) {
|
||||
|
||||
emkb2qt_t searchKey{emscriptKey->code, 0}; // search emcsripten code
|
||||
auto it1 = std::lower_bound(KeyTbl.cbegin(), KeyTbl.cend(), searchKey);
|
||||
if (it1 != KeyTbl.end() && !(searchKey < *it1)) {
|
||||
qtKey = static_cast<Qt::Key>(it1->qt);
|
||||
}
|
||||
} else if (qstrncmp(emscriptKey->key, "Dead", 4) == 0 ) {
|
||||
emkb2qt_t searchKey1{emscriptKey->code, 0};
|
||||
for (auto it1 = KeyTbl.cbegin(); it1 != KeyTbl.end(); ++it1)
|
||||
if (it1 != KeyTbl.end() && (qstrcmp(searchKey1.em, it1->em) == 0)) {
|
||||
qtKey = static_cast<Qt::Key>(it1->qt);
|
||||
}
|
||||
}
|
||||
|
||||
if (qtKey == Qt::Key_unknown) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user