Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.8, 5.12.5
Description
We're trying to use QtVirtualKeyboard in QtWidgets application(Desktop Integration Method) on embedded Linux(non-eglfs) with following environments:
- Raspberry Pi 3B+
- Raspbian Stretch(9.0) with OpenBox WM
- Qt 5.12.5 cross-compiled with default platform plugin xcb
And so we're able to create a desktop-style(windowed) widget application on Raspbian.
These are deployed on the Raspbian:
- /usr/local/qt5pi/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so
- /usr/local/qt5pi/qml/QtQuick/VirtualKeyboard/libqtquickvirtualkeyboardplugin.so
- /usr/local/qt5pi/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
- /usr/local/qt5pi/lib/libQt5VirtualKeyboard.so
So we assume the VK plugin is available on the embedded side. VK on the desktop is just fine and when we turn on VK logs, the desktop one is like this:
qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImInputItemClipRectangle) qt.virtualkeyboard: PlatformInputContext::setFocusObject(): QLineEdit(0x7ffe8952fa60) qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImQueryAll) qt.virtualkeyboard: InputContext::setFocus(): true qt.virtualkeyboard: PlatformInputContext::setFocusObject(): QLineEdit(0x7ffe8952fa60) qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImQueryAll) qt.virtualkeyboard: InputContext::setLocale(): "en_GB" qt.virtualkeyboard: PlatformInputContext::setLocale(): QLocale(English, Latin, UnitedKingdom) qt.virtualkeyboard: InputEngine::setInputMethod(): QtVirtualKeyboard::PlainInputMethod(0x1110b60) qt.virtualkeyboard: InputEngine::setInputMode(): 0 qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImQueryAll) qt.virtualkeyboard: PlatformInputContext::showInputPanel() qt.virtualkeyboard: DesktopInputPanel::repositionView(): QRect(55,24 1865x1056)
And the embedded is like this:
qt.virtualkeyboard: Loading extension "japanese" qt.virtualkeyboard: Loading extension "traditional_chinese" qt.virtualkeyboard: Loading extension "pinyin" qt.virtualkeyboard: Loading extension "thai" qt.virtualkeyboard: Loading extension "hangul" qt.virtualkeyboard: PlatformInputContext::setFocusObject(): QLineEdit(0x7ec96790) qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImQueryAll) qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImInputItemClipRectangle) qt.virtualkeyboard: PlatformInputContext::setFocusObject(): QLineEdit(0x7ec96790) qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImQueryAll) qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImQueryAll) qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImQueryAll) qt.virtualkeyboard: PlatformInputContext::update(): QFlags<Qt::InputMethodQuery>(ImQueryAll) qt.virtualkeyboard: PlatformInputContext::showInputPanel()
And here is the whole application running on two kits:
#include <QtWidgets> int main(int argc, char *argv[]) { qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); qputenv("QT_LOGGING_RULES", QByteArray("qt.virtualkeyboard=true")); QApplication a(argc, argv); QMainWindow w; QLineEdit edit(&w); edit.move(50, 50); w.show(); return a.exec(); }
So something isn't right here!
The VK is not shown as expected on raspberry and DesktopInputPanel::repositionView() is not called on the embedded side?!