Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-78247

VirtualKeyboard doesn't show up in embedded Linux (X11 enabled)

    XMLWordPrintable

Details

    • Linux/X11

    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?!

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            mitch_curtis Mitch Curtis
            iman4k Im@n4K ahm
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes