Qtバーチャルキーボードの構築

概要

このドキュメントでは、Qt Virtual Keyboard プラグインのビルド方法について説明します。

プロジェクトは以下のサブプロジェクトに分かれています:

examples/virtualkeyboard/basicQt Virtual Keyboardデモアプリケーション
src/components/Qt Virtual Keyboard Components QML プラグイン (QtQuick.VirtualKeyboard.Components)
src/plugin/Qt Virtual Keyboard プラットフォーム入力コンテキストプラグインです。このプラグインはQPlatformInputContextインターフェースを提供し、QML入力コンテキストとプラットフォームの間のレイヤーとして動作します。
src/plugins/HunspellInputMethod のような複雑な入力メソッドを実装する Qt Virtual Keyboard プラグイン (QtQuick.VirtualKeyboard.Plugins) を含むディレクトリです。ビルド時の設定は、どのプラグインをビルドし、実行時にロードするかを指定します。
src/settings/Qt Virtual Keyboard Settings QML プラグイン (QtQuick.VirtualKeyboard.Settings )。このプラグインは、アプリケーションで設定可能な仮想キーボードの設定を提供します。
src/styles/Qt Virtual Keyboard Styles QML プラグイン (QtQuick.VirtualKeyboard.Styles)。
src/virtualkeyboard/Qt Virtual Keyboard モジュールと QML プラグイン。

設定オプション

以下の表は、仮想キーボード機能を設定するためのトップレベルのオプションです。これらのオプションはconfigureツールに渡されます。

オプション引数説明備考
-vkb-enable<code>[,<code>]*"を指定するサポートされている言語コードまたは 'all'指定された言語を有効にする。指定された言語は、このオプションを使用して明示的に有効にすることができます。各言語コードはlanguage[_country]という書式を持つ:
  • languageは小文字の2文字で、ISO 639言語コードです。
  • countryは大文字の2文字で、ISO 3166の国コードです。

このオプションを使って、必要に応じて言語サポートを定義することができます。仮想キーボードは一度に1つ以上の言語をサポートすることができます。

例えば、-vkb-enable de_DE,fi_FI はドイツ語とフィンランド語のサポートを有効にします。

他の言語が指定されていない場合、仮想キーボードは自動的にすべてのサポート言語を含みます。

-vkb-手書き[no|example-hwr|myscript-hwr|cerence-hwr]。手書き入力を有効または無効にするこのフラグは手書き入力を有効にする。デフォルトでは、このオプションを使わなくても、エンジンが適切な plugins フォルダにあれば自動的に有効になります。ただし、MyScript と Cerence SDK が共存する場合は、[no|myscript-hwr|cerence-hwr] のいずれかを設定する必要があります。example-hwrオプションは明示的に有効にする必要があります。これは、開発およびテスト目的で実行できます。
[no]-vkb-矢印キーナビゲーションキーボードの矢印キーナビゲーションを有効または無効にする。矢印キーとリターンキーを使ってキーボードを操作できるようにします。この機能はデフォルトではオフになっている。
-vkb-style[標準|レトロ]仮想キーボードのスタイルを選択します。Qt Virtual Keyboard は standard と retro の2つのスタイルをサポートしています。どちらのスタイルもパッケージに含まれていますが、このオプションで内蔵のデフォルトスタイルを変更できます。
[no]-vkb-cangjie繁体字中国語の Cangjie 入力メソッドを有効または無効にします。このオプションは、繁体字中国語の Cangjie 入力メソッドを有効または無効にします。この入力メソッドは、繁体字中国語のサポートが有効になっている場合、デフォルトで有効になります。
[no]-vkb-zhuyin繁体字中国語の朱印入力メソッドを有効または無効にします。このオプションは、繁体字中国語の Zhuyin 入力メソッドを有効または無効にします。この入力メソッドは、繁体字中国語のサポートが有効になっている場合、デフォルトで有効になります。
[no]-vkb-desktopデスクトップ統合を有効または無効にします。デフォルトでは、ターゲット環境がX11またはWindowsデスクトップの場合、デスクトップ統合が有効になります。このオプションを使用すると、デスクトップ統合を無効にできます。

注意: 組み込みの統合(InputPanel がアプリケーションによって即座に実行される)では、このオプションを明示的に使用する必要はありません。入力フィールドにフォーカスが設定される前にアプリケーションがInputPanel を作成した場合、仮想キーボードはデスクトップ入力パネルを作成しません。

[no]-vkb-layouts組み込みレイアウトを有効または無効にします。デフォルトでは、仮想キーボード・プラグインには英語キーボード・レイアウトが含まれています。no-vkb-layoutsを指定すると、組み込みレイアウトは仮想キーボード・プラグインから除外されます。

注意: このシナリオでは、アプリケーションを実行する前に、QT_VIRTUALKEYBOARD_LAYOUT_PATH 環境変数をカスタム・キーボード・レイアウトを含むファイル・システム・ディレクトリに設定する必要があります。

-vkb-hunspell[no|3rdparty|system]を選択します。Hunspell統合を選択Hunspellの統合方法を指定されたオプションに強制します。3rdpartyオプションは、仮想キーボードリポジトリ内のプロジェクトファイルを使用したHunspellソースコードのローカルビルドを選択します。このオプションでは、Hunspell gitリポジトリがsrc/plugins/hunspell/3rdparty/hunspellディレクトリにクローンされている必要があります。systemオプションはpkg-config経由でシステムパッケージを選択します。noオプションは Hunspell プラグインを無効にします。
-vkb-no-バンドル-ピンインn/aピンインリソースのバンドルを無効にします。このオプションはプラグインバイナリからピンインリソースを除外します。このオプションはプラグインバイナリのサイズを小さくするために使われます。
-vkb-no-bundle-tcimen/atcime リソースをバンドルしないこのオプションは、プラグインバイナリから tcime リソースを除外します。このオプションは、プラグインバイナリのサイズを小さくするために使用できます。
-vkb-cerence-sdkパス/to/cerence/sdkCerence SDK の場所を設定し、Cerence Handwriting および XT9 統合機能を有効にします。Cerence SDK の zip ファイルは、src/plugins/cerence/unpack.pyスクリプトを使用して解凍する必要があります。デフォルトでは、SDK はsrc/plugins/cerence/sdk に解凍され、ビルドスクリプトが自動的に取り込むようになっています。しかし、unpack.py スクリプトの 2 番目のパラメータを使用することで、SDK に異なる場所を使用することができます。この場合、-vkb-cerence-sdk コマンドラインパラメーターを使用して、ビルドスクリプトに場所を渡す必要があります。
-vkb-cerence-static手書きCerence Handwriting エンジンの静的リンクを有効にします。Cerence Handwriting エンジンはデフォルトで動的にリンクされます。静的リンクを強制するには-vkb-cerence-staticを使用します。
-vkb-bundle-cerence-hwrまたは-vkb-bundle-cerencen/aCerence Handwriting リソースのバンドルを有効にします。このオプションは、プラグインバイナリに Cerence Handwriting リソースをバンドルします。
-vkb-bundle-xt9または-vkb-bundle-cerencen/aXT9 リソースのバンドルを有効にするこのオプションは、プラグインバイナリに XT9 リソースをバンドルします。
-vkb-myscript-sdkパス/to/myscript/sdkMyScript Text SDK の場所を設定し、MyScript Handwriting 統合を有効にします。src/plugins/myscript/sdk に解凍された MyScript Text SDK (zip) は、ビルドスクリプトによって自動的に取り込まれます。ただし、SDK を別の場所に配置することもできます。その場合、-vkb-myscript-sdk コマンドラインパラメーターを使用して、ビルドスクリプトに場所を渡す必要があります。
-vkb-myscript-arch[x86|x64|armv7hf|armv7|arm64]ターゲット CPU アーキテクチャを設定します。MyScript Text SDK は、Linux 用の[x86|x64|armv7hf|armv7|arm64]、Windows 用の[x86|x64]という異なる CPU アーキテクチャ用の共有 (動的) ライブラリを提供します。これは自動的に設定できる。ただし、-vkb-myscript-arch コマンドラインパラメータを使用して、ターゲット CPU アーキテクチャを指定することもできます。

Hunspellの統合

デフォルトでは、Hunspellライブラリと開発ヘッダーが見つからない限り、HunspellInputMethodは利用できない。Linux/X11ターゲットでは、libhunspell-devパッケージをインストールすることで、Hunspellライブラリを提供できます。あるいは、Hunspell gitリポジトリをsrc/plugins/hunspell/3rdparty/hunspellディレクトリにクローンすることもできます。ソースはqmakeによって自動的に検出され、プロジェクトはローカルのHunspellを使用するように設定されます。Hunspellソースを使用する場合、辞書ファイルもsrc/plugins/hunspell/3rdparty/hunspell/dataディレクトリにコピーする必要があります。

Hunspell ソースと辞書ファイルを設定した後のディレクトリ構造の例を以下に示します:

3rdparty
└── hunspell
    ├── data
    │   ├── en_GB.aff
    │   └── en_GB.dic
    ├── hunspell <-- Hunspell git repository
    └── CMakeLists.txt

Cerence Handwriting 統合

Cerence Handwriting Integration は、Alphabetic および CJK (Chinese Japanese Korean) エンジンをサポートします。どちらのエンジンも T9WriteInputMethod を介して統合されます。入力メソッドは、一度に 1 つのエンジンで初期化されます。エンジンの選択は、現在の入力ロケールに基づいて自動的に行われます。

セレンスの手書き文字との互換性

Qt Virtual Keyboard は Cerence Handwriting v8.7 以降と互換性があります。

Cerence Handwriting ビルドの準備

SDK のコンテンツは、cerenceディレクトリにあるunpack.pyスクリプトを使用して解凍する必要があります。これにより、CMake がコンテンツを見つけるための正しいディレクトリ構造が確保されます。

$ cd src/plugins/cerence/
$ python unpack.py filename.zip

これにより、src/plugins/cerence/sdkディレクトリにコンテンツが解凍され、CMake が自動的にコンテンツをピックアップできるようになります。

また、コマンドラインに追加のパラメータを追加することで、他のディレクトリに解凍することもできます。この場合、SDK の場所をconfigureスクリプトに渡す必要があります。

configure ... -vkb-cerence-sdk /path/to/cerence/sdk

セレンス SDK のレイアウト

解凍されたSDKの中身は以下のようになっています:

sdk
├───t9write
│   ├───api
│   ├───data
│   │   ├───arabic
│   │   ├───hebrew
│   │   └───thai
│   └───lib
│       ├───linux
│       │   ├───arm64
│       │   │   ├───shared
│       │   │   │   ├───alphabetic
│       │   │   │   └───cjk
│       │   │   └───static
│       │   │       ├───alphabetic
│       │   │       └───cjk
│       │   └───x86_64
│       │       ├───shared
│       │       │   ├───alphabetic
│       │       │   └───cjk
│       │       └───static
│       │           ├───alphabetic
│       │           └───cjk
│       └───win32
│           ├───x86
│           │   ├───shared
│           │   │   ├───alphabetic
│           │   │   └───cjk
│           │   └───static
│           │       ├───alphabetic
│           │       └───cjk
│           └───x86_64
│               ├───shared
│               │   ├───alphabetic
│               │   └───cjk
│               └───static
│                   ├───alphabetic
│                   └───cjk
└───xt9
    ├───api
    ├───data
    └───lib
        ├───linux
        │   ├───arm64
        │   │   ├───shared
        │   │   └───static
        │   └───x86_64
        │       ├───shared
        │       └───static
        └───win32
            ├───x86
            │   ├───shared
            │   └───static
            └───x86_64
                ├───shared
                └───static

各ディレクトリの内容は次のとおりです:

ディレクトリディレクトリ 説明備考
apiこのディレクトリにはすべてのAPIファイルが含まれます。APIファイルは通常SDKの "api "と "public "ディレクトリにありますが、"demo "ディレクトリにあることもあります。

AlphabeticエンジンとCJKエンジンを同時に使用する場合、重複するファイルはどちらのSDKからでもコピーできます。

データこのディレクトリには、すべてのHWRデータベースと、オプションでXT9データベースが含まれている必要があります。Cerence Handwriting Alphabetic 用の HWR データベース:
  • databas_le.bin

Cerence Handwriting CJK 用 HWR データベース:

  • cjk_HK_std_le.hdb香港中国語
  • cjk_J_std_le.hdb日本語
  • cjk_K_mkt_le.hdb韓国語
  • cjk_S_gb18030_le.hdb簡体字中国語
  • cjk_T_std_le.hdb繁体字中国語

言語データベース:

  • ファイル拡張子は.ldbまたは.phdです。
lib/<ターゲット>/<リンケージ>/<エンジン-バリアントサポートされているターゲットビルドを保持するディレクトリ構造。これらのディレクトリには、必要なターゲットライブラリが格納されていなければなりません。共有ライブラリと静的ライブラリの両方が見つかった場合は、共有ライブラリを優先する。

Cerence SDK が検出されると、Cerence Handwriting および XT9 統合コードが自動的に有効になります。

実行時に競合する動作を避けるため、Cerence 拡張をビルドする前に、[qtbase]/plugins/virtualkeyboardディレクトリから他の拡張をすべてクリーンアップする必要があります。Cerence 拡張は、他の仮想キーボードプラグインを必要としません。

XT9 用の手書きデータベースと言語データベースは[qtbase]/qtvirtualkeyboard/cerenceディレクトリにインストールされます。さらに、これらのファイルの場所として、他に2つの選択肢がある:

  • 環境変数で定義されたカスタムランタイムの場所
  • プラグインバイナリにリソースを埋め込む-vkb-bundle-cerenceコマンドラインオプション

MyScript Text SDK の統合

MyScript Text は、手書きテキストの認識を可能にするアプリケーションを構築するために設計されています。MyScript Text では、孤立文字、草書体、印刷物、および重ね書きの認識をサポートしています。MyScript スーパーインポーズドライティングは、Qt Virtual Keyboard に統合されています。この機能により、連続する断片を明示的に区切ることなく、文字、単語、または単語の一部を重ねて認識することができます。メモリと CPU に制約のあるデバイスで実行できます。

MyScript Text SDK の入力手書きスタイル

エンドユーザーは、次の図のように、単語を 1 つずつ重ねて書いたり、文字を 1 つずつ重ねて書いたりできます。書き込まれた 2 つの単語の間にはスペースが自動的に追加されるため、明示的なジェスチャーは必要ありません。

文字を重ねて書く
単語の断片を他の文字の上に書く

MyScript Text SDK の対応言語

MyScript Superimposed は 72 の言語をサポートしています。

MyScript Text SDK パッケージのインストール

MyScript 配送チームでは、さまざまな.zip アーカイブを含むパッケージを提供しています。独自の手書きアプリケーションのビルドに必要なすべてのコード、ツール、およびリソースにアクセスするには、すべてのパッケージを src/plugins/myscript/sdk同じ保存先フォルダに解凍します。

また、他のディレクトリにパッケージを展開することもできます。この場合、SDKの場所をconfigureスクリプトに渡す必要があります。

configure ... -vkb-myscript-sdk /path/to/myscript/sdk

ファイル階層は以下のようになります:

myscript
└── sdk
    ├─── conf
    ├─── doc
    ├─── edk
    ├─── engine
    │   └─── bin
    │       ├─── lin-arm64
    │       │   └─── *.so
    │       ├─── lin-armv7
    │       │   └─── *.so
    │       ├─── lin-armv7hf
    │       │   └─── *.so
    │       ├─── lin-x64
    │       │   └─── *.so
    │       ├─── lin-x86
    │       │   └─── *.so
    │       ├─── win-x64
    │       │   └─── *.dll
    │       ├─── win-x86
    │       │   └─── *.dll
    │       (etc.)
    ├─── rdk
    ├─── resources
    │   ├─── ar
    │   │   └─── *.res
    │   ├─── en_GB
    │   │   └─── *.res
    │   ├─── ja_JP
    │   │   └─── *.res
    │   ├─── ko_KR
    │   │   └─── *.res
    │   ├─── zh_CN
    │   │   └─── *.res
    │   (etc.)
    ├─── tools
    └─── voim
        ├─── api
        ├─── bin
        │   ├─── lin-arm64
        │   │   └─── *.so
        │   ├─── lin-armv7
        │   │   └─── *.so
        │   ├─── lin-armv7hf
        │   │   └─── *.so
        │   ├─── lin-x64
        │   │   └─── *.so
        │   ├─── lin-x86
        │   │   └─── *.so
        │   ├─── win-x64
        │   │   └─── *.dll
        │   ├─── win-x86
        │   │   └─── *.dll
        │   (etc.)
        └─── conf

各ディレクトリの内容の説明は以下の通りです:

ディレクトリ説明
confエンジンが言語リソースの設定に使用する言語設定ファイルが含まれます。
docHTML ドキュメント ファイルが含まれます。ファイルindex.html はメイン ページを表示します。
edkコード サンプルを含む、サポートされている各プログラミング言語 API 用の Engine Development Kit および手書きプログラミング エレメントが含まれます。
エンジン各エンジン オブジェクトのライブラリが含まれます。ターゲット プラットフォームによっては、SO、A、または DLL になります。
rdkリソース開発キット、つまりカスタムリソースを作成するためのツールとサンプルが含まれています。
リソース拡張子 /c .res のリソースファイルが含まれます。これは、さまざまな MyScript テクノロジがさまざまな認識タスクを実行する際に使用するバイナリ資産です。
ツールインクテスト用のInkToolなど、便利なプログラマーツールが含まれています。
voimMyScript テキスト入力メソッドのライブラリが含まれています。これは、MyScript テキスト認識システムの拡張 SDK であり、手書き認識を使用した入力メソッドを簡単かつ迅速に構築できるように設計されています。

MyScript Text SDK の証明書の設定

MyScript Text SDK を使用するには、有効な証明書が必要です。これは、MyScript テクノロジの正規のお客様であることを一意に識別するセキュリティ対策です。証明書は、MyScript が顧客の身元と購入した製品を追跡するのに役立ちます。

[your_login].vo.zip packageこのパッケージを解凍すると、証明書は自動的に適切な場所に置かれます。これにより、提供されたサービスやコードサンプル内で証明書が即座に動作するようになります。

MyScript Text SDK を使用して Qt Virtual Keyboard を構築する方法

MyScript Text SDK が検出されると、MyScript 統合コードが自動的に有効になります。

MyScript Text SDK 用の言語リソースは[qtbase]/qtvirtualkeyboard/myscriptディレクトリにインストールされます。

静的ビルド

仮想キーボードは、アプリケーションに対して静的にビルドおよびリンクすることができます。これは Qt も静的にビルドされることを意味します(configure コマンドラインで -static オプションを使用します)。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。