Deployment Guide

Overview

This document describes how to deploy and use the Qt Virtual Keyboard plugin with Qt 5 applications.

Deployment

The Qt Virtual Keyboard plugin must be properly deployed before it can be used. The easiest approach to deployment is to add a deployment step in Qt Creator that executes the make install command.

make install deploys the files in the following locations:

ItemDesktop install pathBoot2Qt install path
qtvirtualkeyboardplugin$$[QT_INSTALL_PLUGINS]/platforminputcontexts/system/plugins/platforminputcontexts
qtvirtualkeyboardplugin QML files$$[QT_INSTALL_QML]/QtQuick/VirtualKeyboard/system/qml/QtQuick/VirtualKeyboard
qtvirtualkeyboardstylesplugin$$[QT_INSTALL_QML]/QtQuick/VirtualKeyboard/Styles/system/qml/QtQuick/VirtualKeyboard/Styles

Integration Method

Qt Virtual Keyboard currently supports two alternative integration methods for using the plugin:

  • Desktop: Qt Virtual Keyboard is integrated with Qt 5 and requires no changes to existing applications. The Qt Virtual Keyboard input method is available to all of the Qt 5 applications in the system.
  • Application: Qt Virtual Keyboard is integrated with Qt 5, but requires changes to particular applications using Qt Virtual Keyboard. This method is mandatory in a Boot2Qt environment, but can be used in desktop applications too.

The integration method is automatically selected by the project files. However, in desktop environments, it is possible to override the desktop integration method and use the application integration method instead. This happens by adding the CONFIG+=disable-desktop to the qmake command line.

Note: The desktop integration method is not currently available in Boot2Qt environments.

Loading the Plugin

In both integration methods, the application must use the QT_IM_MODULE environment variable to load the plugin. For example:


  $ QT_IM_MODULE=qtvirtualkeyboard myapp

or in the main() function:


  qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

In the desktop integration method, this step is all that is required to use Qt Virtual Keyboard. In the application integration method, the application is required to create an instance of InputPanel as explained in the following chapter.

Creating InputPanel

The following example shows how to create an InputPanel and how to divide the screen area with the application container.


  import QtQuick 2.0
  import QtQuick.VirtualKeyboard 2.1

  Item {
      id: root
      Item {
          id: appContainer
          anchors.left: parent.left
          anchors.top: parent.top
          anchors.right: parent.right
          anchors.bottom: inputPanel.top
          ...
      }
      InputPanel {
          id: inputPanel
          y: Qt.inputMethod.visible ? parent.height - inputPanel.height : parent.height
          anchors.left: parent.left
          anchors.right: parent.right
      }
  }

The input panel must be a sibling element next to the application container. It is important not to put the input panel within the application container, as it would then overlap with the contents of the application. Also, the input panel height will be automatically updated according to the available width; the aspect ratio of the input panel is constant.

Environment Variables

There are several environment variables defined by the module that are listed below:

VariablePurpose
QT_VIRTUALKEYBOARD_HUNSPELL_DATA_PATHOverrides the location of the Hunspell data files.

The default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/hunspell.

See Hunspell Integration for more information.

QT_VIRTUALKEYBOARD_PINYIN_DICTIONARYOverrides the location of the Pinyin dictionary.

The default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/pinyin/dict_pinyin.dat.

QT_VIRTUALKEYBOARD_CANGJIE_DICTIONARYOverrides the location of the Cangjie dictionary.

The default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/tcime/dict_cangjie.dat.

QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARYOverrides the location of the Zhuyin dictionary.

The default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/tcime/dict_zhuyin.dat.

QT_VIRTUALKEYBOARD_PHRASE_DICTIONARYOverrides the location of the phrase dictionary.

The default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/tcime/dict_phrases.dat.

QT_VIRTUALKEYBOARD_STYLESpecifies the location of the style to use with the virtual keyboard.

This can also be specified in QML by setting VirtualKeyboardSettings::styleName, or at build time by using the qmake configuration options.

LIPI_ROOTSpecifies the location of lipi-toolkit.

The default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/lipi_toolkit.

LIPI_LIBSpecifies the location of lipi-toolkit plugins.

The default location depends on LIPI_ROOT:

  • LIPI_ROOT + "/lib" if LIPI_ROOT is set.
  • QLibraryInfo::location(QLibraryInfo::PluginsPath) + "/lipi_toolkit" if LIPI_ROOT is not set.