diff options
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/android/androidjniinput.cpp | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp index 595892c1d1..3a80f9437a 100644 --- a/src/plugins/platforms/android/androidjniinput.cpp +++ b/src/plugins/platforms/android/androidjniinput.cpp @@ -638,6 +638,25 @@ namespace QtAndroidInput } } + static Qt::KeyboardModifiers mapAndroidModifiers(jint modifiers) + { + Qt::KeyboardModifiers qmodifiers; + + if (modifiers & 0x00000001) // META_SHIFT_ON + qmodifiers |= Qt::ShiftModifier; + + if (modifiers & 0x00000002) // META_ALT_ON + qmodifiers |= Qt::AltModifier; + + if (modifiers & 0x00000004) // META_SYM_ON + qmodifiers |= Qt::MetaModifier; + + if (modifiers & 0x00001000) // META_CTRL_ON + qmodifiers |= Qt::ControlModifier; + + return qmodifiers; + } + // maps 0 to the empty string, and anything else to a single-character string static inline QString toString(jint unicode) { @@ -646,40 +665,20 @@ namespace QtAndroidInput static void keyDown(JNIEnv */*env*/, jobject /*thiz*/, jint key, jint unicode, jint modifier) { - Qt::KeyboardModifiers modifiers; - if (modifier & 1) - modifiers |= Qt::ShiftModifier; - - if (modifier & 2) - modifiers |= Qt::AltModifier; - - if (modifier & 4) - modifiers |= Qt::MetaModifier; - QWindowSystemInterface::handleKeyEvent(0, QEvent::KeyPress, mapAndroidKey(key), - modifiers, + mapAndroidModifiers(modifier), toString(unicode), false); } static void keyUp(JNIEnv */*env*/, jobject /*thiz*/, jint key, jint unicode, jint modifier) { - Qt::KeyboardModifiers modifiers; - if (modifier & 1) - modifiers |= Qt::ShiftModifier; - - if (modifier & 2) - modifiers |= Qt::AltModifier; - - if (modifier & 4) - modifiers |= Qt::MetaModifier; - QWindowSystemInterface::handleKeyEvent(0, QEvent::KeyRelease, mapAndroidKey(key), - modifiers, + mapAndroidModifiers(modifier), toString(unicode), false); } |