Auf dieser Seite

Aufbau Qt Virtual Keyboard

Übersicht

Dieses Dokument beschreibt, wie das „ Qt Virtual Keyboard “-Plugin erstellt wird.

Das Projekt ist in folgende Teilprojekte unterteilt:

examples/virtualkeyboard/basicQt Virtual Keyboard Demo-Anwendung
src/components/Qt Virtual Keyboard QML-Plugin für Komponenten (QtQuick.VirtualKeyboard.Components)
src/plugin/Qt Virtual Keyboard Plugin für den Plattform-Eingabekontext. Dieses Plugin stellt die Schnittstelle `QPlatformInputContext` bereit und fungiert als Vermittlungsschicht zwischen dem QML-Eingabekontext und der Plattform.
src/plugins/Ein Verzeichnis, das „ Qt Virtual Keyboard “-Plugins (QtQuick.VirtualKeyboard.Plugins) enthält, die komplexe Eingabemethoden wie beispielsweise die „HunspellInputMethod“ implementieren. Die Konfiguration während der Kompilierung legt fest, welche Plugins kompiliert und zur Laufzeit geladen werden.
src/settings/Qt Virtual Keyboard QML-Plugin „Settings“ (QtQuick.VirtualKeyboard.Settings). Dieses Plugin stellt anwendungsspezifisch konfigurierbare Einstellungen für die virtuelle Tastatur bereit.
src/styles/Qt Virtual Keyboard QML-Plugin „Styles“ (QtQuick.VirtualKeyboard.Styles).
src/virtualkeyboard/Qt Virtual Keyboard Modul und QML-Plugin.

Konfigurationsoptionen

Die folgende Tabelle enthält die übergeordneten Optionen zur Konfiguration der Funktionen der virtuellen Tastatur. Diese Optionen werden an das Konfigurationswerkzeug übergeben.

OptionArgumenteBeschreibungAnmerkungen
-vkb-enable <code>[,<code>]*"Unterstützte Sprachcodes oder „all“Aktiviert die angegebene SpracheDie angegebenen Sprachen können mit dieser Option explizit aktiviert werden. Jeder Sprachcode hat das Format „Sprache[_Land]“, wobei:
  • „language“ ein aus zwei Kleinbuchstaben bestehender ISO-639-Sprachcode ist
  • „country“ ein zweistelliger Ländercode nach ISO 3166 in Großbuchstaben ist

Mit dieser Option lässt sich die Sprachunterstützung nach Bedarf festlegen. Die virtuelle Tastatur kann gleichzeitig eine oder mehrere Sprachen unterstützen.

Beispielsweise aktiviert „ -vkb-enable de_DE,fi_FI “ die Unterstützung für Deutsch und Finnisch.

Die virtuelle Tastatur enthält automatisch alle unterstützten Sprachen, sofern keine anderen Sprachen angegeben werden.

-vkb-handwriting[no|example-hwr|myscript-hwr|cerence-hwr]Aktiviert oder deaktiviert die HandschrifteingabeDieses Flag aktiviert die Handschrifteingabe. Standardmäßig wird die Engine automatisch aktiviert, wenn sie sich im entsprechenden Plugins-Ordner befindet, auch ohne Verwendung dieser Option. Falls jedoch MyScript und Cerence SDK nebeneinander vorhanden sind, muss eine der Optionen [no|myscript-hwr|cerence-hwr] konfiguriert werden. Die Option „example-hwr“ muss explizit aktiviert werden. Dies kann zu Entwicklungs- und Testzwecken erfolgen.
[-no]-vkb-arrow-keynavigationAktiviert oder deaktiviert die Navigation mit den Pfeiltasten auf der TastaturErmöglicht die Steuerung der Tastatur mithilfe der Pfeiltasten und der Eingabetaste. Diese Funktion ist standardmäßig deaktiviert.
-vkb-style[standard|retro]Wählen Sie den Stil der virtuellen Tastatur ausQt Virtual Keyboard unterstützt zwei Stile: „Standard“ und „Retro“. Beide Stile sind im Paket enthalten, aber mit dieser Option können Sie den integrierten Standardstil ändern.
[-no]-vkb-sound-effectsAktiviert oder deaktiviert SoundeffekteDiese Option aktiviert oder deaktiviert die Unterstützung für Soundeffekte. Sie hängt vom Multimedia-Modul ab und ist implizit aktiviert, wenn dieses Modul verfügbar ist. Beachten Sie, dass die eigentlichen Soundeffektdateien im Tastaturstil definiert sind, sodass die Soundeffekte durch das bloße Aktivieren dieser Option allein nicht hörbar werden.
[-no]-vkb-cangjieAktiviert oder deaktiviert die Cangjie-Eingabemethode für traditionelles Chinesisch.Diese Option aktiviert oder deaktiviert die Cangjie-Eingabemethode für traditionelles Chinesisch. Die Eingabemethode ist standardmäßig aktiviert, wenn die Unterstützung für traditionelles Chinesisch aktiviert ist.
[-no]-vkb-zhuyinAktiviert oder deaktiviert die Zhuyin-Eingabemethode für traditionelles Chinesisch.Diese Option aktiviert oder deaktiviert die Zhuyin-Eingabemethode für traditionelles Chinesisch. Die Eingabemethode ist standardmäßig aktiviert, wenn die Unterstützung für traditionelles Chinesisch aktiviert ist.
[-no]-vkb-desktopAktiviert oder deaktiviert die Desktop-IntegrationStandardmäßig ist die Desktop-Integration aktiviert, wenn die Zielumgebung X11 oder ein Windows-Desktop ist. Mit dieser Option kann die Desktop-Integration deaktiviert werden.

Hinweis: Bei der eingebetteten Integration, bei der die „ InputPanel “ von der Anwendung instanziiert wird, muss diese Option nicht explizit verwendet werden. Die virtuelle Tastatur erstellt kein Desktop-Eingabefeld, wenn die Anwendung „ InputPanel “ erstellt, bevor der Fokus auf ein Eingabefeld gesetzt wird.

[-no]-vkb-layoutsAktiviert oder deaktiviert integrierte TastaturlayoutsStandardmäßig enthält das Plugin für die virtuelle Tastatur das englische Tastaturlayout. Durch die Angabe von -no-vkb-layouts werden die integrierten Layouts aus dem Plugin für die virtuelle Tastatur ausgeschlossen.

Hinweis: In diesem Fall sollte die Umgebungsvariable „ QT_VIRTUALKEYBOARD_LAYOUT_PATH “ vor dem Ausführen der Anwendung auf das Verzeichnis im Dateisystem gesetzt werden, das die benutzerdefinierten Tastaturlayouts enthält.

-vkb-hunspell[no|3rdparty|system]Hunspell-Integration auswählenErzwingt die Hunspell-Integrationsmethode gemäß der angegebenen Option. Die Option „3rdparty“ wählt die lokale Kompilierung des Hunspell-Quellcodes unter Verwendung der Projektdateien im Repository der virtuellen Tastatur aus. Diese Option setzt voraus, dass das Hunspell-Git-Repository in das Verzeichnis „src/plugins/hunspell/3rdparty/hunspell“ geklont wurde. Die Option „system“ wählt das Systempaket über pkg-config aus. Die Option „no“ deaktiviert das Hunspell-Plugin.
-vkb-no-bundle-pinyinn/aDeaktiviert die Bündelung von Pinyin-RessourcenDiese Option schließt Pinyin-Ressourcen aus der Plugin-Binärdatei aus. Diese Option kann verwendet werden, um die Größe der Plugin-Binärdatei zu reduzieren.
-vkb-no-bundle-tcimen/aDeaktiviert die Einbindung von TCIME-RessourcenDiese Option schließt TCIME-Ressourcen aus der Plugin-Binärdatei aus. Diese Option kann verwendet werden, um die Größe der Plugin-Binärdatei zu verringern.
-vkb-cerence-sdkPfad/zu/Cerence/SDKKonfiguriert den Speicherort des Cerence-SDK und aktiviert die Integrationen für Cerence Handwriting und XT9.Die ZIP-Datei des Cerence-SDK muss mit dem Skript „src/plugins/cerence/unpack.py“ entpackt werden. Standardmäßig wird das SDK in den Ordner „src/plugins/cerence/sdk“ entpackt, wo es von den Build-Skripten automatisch erkannt wird. Durch Verwendung des zweiten Parameters des Skripts „unpack.py“ ist es jedoch möglich, einen anderen Speicherort für das SDK zu verwenden. In diesem Fall muss der Speicherort über den Befehlszeilenparameter -vkb-cerence-sdk an das Build-Skript übergeben werden.
-vkb-cerence-statichandwritingAktiviert die statische Verknüpfung der Cerence-Handschrifterkennung.Die Cerence-Handschrift-Engine wird standardmäßig dynamisch verknüpft. Verwenden Sie -vkb-cerence-static, um die statische Verknüpfung zu erzwingen.
-vkb-bundle-cerence-hwr oder -vkb-bundle-cerencen/aAktiviert die Bündelung der Cerence-Handschrift-RessourcenDiese Option bündelt die Cerence-Handschrift-Ressourcen in der Plugin-Binärdatei.
-vkb-bundle-xt9 oder -vkb-bundle-cerencen/aAktiviert die Bündelung von XT9-RessourcenDiese Option bündelt die XT9-Ressourcen in der Plugin-Binärdatei.
-vkb-myscript-sdkPfad/zu/MyScript/SDKKonfiguriert den Speicherort des MyScript Text SDK und aktiviert die MyScript-Handschrift-Integration.Das MyScript Text SDK (zip), das in den Ordner „src/plugins/myscript/sdk“ entpackt wird, kann von den Build-Skripten automatisch erkannt werden. Das SDK kann jedoch auch an einem anderen Speicherort abgelegt werden. In diesem Fall muss der Speicherort mithilfe des Befehlszeilenparameters „ -vkb-myscript-sdk “ an das Build-Skript übergeben werden.
-vkb-myscript-arch[x86|x64|armv7hf|armv7|arm64]Konfiguriert die Ziel-CPU-ArchitekturDas MyScript Text SDK bietet gemeinsam genutzte (dynamische) Bibliotheken für verschiedene CPU-Architekturen – [x86|x64|armv7hf|armv7|arm64] für Linux und [x86|x64] für Windows. Die Konfiguration erfolgt automatisch. Der Benutzer kann die Ziel-CPU-Architektur jedoch auch mithilfe des Befehlszeilenparameters „ -vkb-myscript-arch “ festlegen.

Hunspell-Integration

Standardmäßig ist „HunspellInputMethod“ nur verfügbar, wenn die Hunspell-Bibliothek und die Entwicklungs-Header vorhanden sind. Für Linux/X11-Ziele kann die Hunspell-Bibliothek durch die Installation des Pakets „libhunspell-dev“ bereitgestellt werden. Alternativ kann das Hunspell-Git-Repository in das Verzeichnis ` src/plugins/hunspell/3rdparty/hunspell ` geklont werden. Die Quellen werden automatisch von qmake erkannt, und das Projekt wird so konfiguriert, dass es das lokale Hunspell verwendet. Wenn Hunspell-Quellcode verwendet wird, müssen auch die Wörterbuchdateien in das Verzeichnis ` src/plugins/hunspell/3rdparty/hunspell/data ` kopiert werden.

Ein Beispiel dafür, wie die Verzeichnisstruktur nach dem Einrichten der Hunspell-Quelldateien und Wörterbuchdateien aussehen sollte, ist unten aufgeführt:

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

Cerence-Handschrifterkennung

Die Cerence-Handschrift-Integration unterstützt die Engines „Alphabetic“ und „CJK“ (Chinesisch, Japanisch, Koreanisch). Beide Engines werden über T9WriteInputMethod integriert. Die Eingabemethode wird jeweils mit einer Engine initialisiert. Die Auswahl der Engine erfolgt automatisch basierend auf der aktuellen Eingabe-Locale.

Kompatibilität von Cerence Handwriting

Qt Virtual Keyboard ist kompatibel mit Cerence Handwriting v8.7 oder höher.

Vorbereitungen für den Build von Cerence Handwriting

Der Inhalt des SDK muss mit dem Skript „unpack.py“ im Verzeichnis „cerence“ entpackt werden. Dadurch wird sichergestellt, dass die Verzeichnisstruktur korrekt ist, damit CMake den Inhalt finden kann.

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

Dadurch werden die Inhalte in das Verzeichnis „src/plugins/cerence/sdk“ entpackt, wo CMake sie automatisch erkennen kann.

Alternativ können Sie die Entpackung in ein beliebiges anderes Verzeichnis durchführen, indem Sie der Befehlszeile einen zusätzlichen Parameter hinzufügen. In diesem Fall muss der Pfad zum SDK an das Skript „configure“ übergeben werden.

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

Aufbau des Cerence-SDK

Der entpackte Inhalt des SDK sieht wie folgt aus:

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

Die Inhalte der einzelnen Verzeichnisse sind wie folgt:

VerzeichnisBeschreibungAnmerkungen
apiDieses Verzeichnis sollte alle API-Dateien enthaltenDie API-Dateien befinden sich in der Regel in den Verzeichnissen „api“ und „public“ des SDK, manchmal jedoch auch im Verzeichnis „demo“.

Wenn sowohl die Alphabetic- als auch die CJK-Engine gleichzeitig verwendet werden, können sich überschneidende Dateien aus einem der beiden SDKs kopiert werden.

dataDieses Verzeichnis sollte alle HWR-Datenbanken und optional XT9-Datenbanken enthalten.HWR-Datenbank für die Cerence Handwriting Alphabetic:
  • _databas_le.bin

HWR-Datenbank für das „Cerence Handwriting CJK“:

  • cjk_HK_std_le.hdb Hongkong-Chinesisch
  • cjk_J_std_le.hdb Japanisch
  • cjk_K_mkt_le.hdb Koreanisch
  • cjk_S_gb18030_le.hdb Vereinfachtes Chinesisch
  • cjk_T_std_le.hdb Traditionelles Chinesisch

Sprachdatenbank:

  • Die Dateiendung lautet entweder .ldb oder .phd
lib/<target>/<linkage>/<engine-variant>Verzeichnisstruktur, die unterstützte Ziel-Builds enthält.Diese Verzeichnisse sollten die gewünschten Zielbibliotheken enthalten. Werden sowohl gemeinsam genutzte als auch statische Bibliotheken gefunden, werden gemeinsam genutzte Bibliotheken bevorzugt.

Der Integrationscode für Cerence Handwriting und XT9 wird automatisch aktiviert, sobald das Cerence SDK erkannt wird.

Alle anderen Erweiterungen sollten vor dem Erstellen der Cerence-Erweiterungen aus dem Verzeichnis [qtbase]/plugins/virtualkeyboard entfernt werden, um Konflikte zur Laufzeit zu vermeiden. Die Cerence-Erweiterungen benötigen keine weiteren Plugins für die virtuelle Tastatur, um zu funktionieren.

Handschrifterkennungsdatenbanken und Sprachdatenbanken für XT9 werden im Verzeichnis [qtbase]/qtvirtualkeyboard/cerence installiert. Darüber hinaus gibt es zwei weitere Möglichkeiten, diese Dateien zu finden:

  • Ein benutzerdefinierter Laufzeitspeicherort, der über Umgebungsvariablen festgelegt wird
  • Die Befehlszeilenoption -vkb-bundle-cerence zum Einbetten von Ressourcen in die Plugin-Binärdateien

Integration des MyScript Text SDK

MyScript Text wurde für die Entwicklung von Anwendungen konzipiert, die die Erkennung von handgeschriebenem Text ermöglichen. MyScript Text unterstützt die Erkennung von Einzelzeichen, Kursivschrift, Druckschrift und übereinander geschriebener Schrift. Die MyScript-Funktion für übereinander geschriebene Schrift ist in „ Qt Virtual Keyboard “ integriert. Sie ermöglicht die Erkennung von Buchstaben, Wörtern oder Wortteilen, die übereinander geschrieben wurden, ohne dass eine explizite Trennung zwischen aufeinanderfolgenden Fragmenten erforderlich ist. Sie kann auf Geräten mit begrenztem Arbeitsspeicher und begrenzter Rechenleistung ausgeführt werden.

Handschriftstile für die Eingabe mit dem MyScript Text SDK

Der Endbenutzer kann ein Wortfragment über ein anderes oder ein Zeichen über ein anderes schreiben, wie unten dargestellt. Der Abstand zwischen zwei geschriebenen Wörtern wird automatisch eingefügt, sodass keine explizite Geste erforderlich ist.

Ein Zeichen über ein anderes schreiben
Schreiben von Wortfragmenten übereinander

Sprachunterstützung des MyScript Text SDK

MyScript Superimposed unterstützt 72 Sprachen.

Installation der MyScript Text SDK-Pakete

Das MyScript-Lieferteam kann Ihnen die Pakete in verschiedenen „ .zip “-Archiven zur Verfügung stellen. Um auf den gesamten Code, die Tools und die Ressourcen zuzugreifen, die Sie zum Erstellen Ihrer eigenen Handschrifterkennunganwendung benötigen, entpacken Sie alle Pakete in denselben Zielordner wie „ src/plugins/myscript/sdk “, wo CMake sie automatisch erkennen kann.

Alternativ können Sie die Pakete auch in ein beliebiges anderes Verzeichnis entpacken. In diesem Fall muss der Speicherort des SDK an das Konfigurationsskript übergeben werden.

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

Die Dateihierarchie sollte wie folgt aussehen:

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

Die Beschreibung des Inhalts der einzelnen Verzeichnisse lautet wie folgt:

VerzeichnisBeschreibung
confEnthält die Sprachkonfigurationsdateien, die die Engine zur Konfiguration der Sprachressourcen verwendet.
docEnthält die HTML-Dokumentationsdateien. Die Datei „ index.html “ zeigt die Hauptseite an.
edkEnthält das Engine Development Kit sowie Elemente zur Handschriftprogrammierung für jede unterstützte Programmiersprachen-API, einschließlich Code-Beispielen.
engineEnthält Bibliotheken für jedes Engine-Objekt; je nach Zielplattform kann es sich um SO-, A- oder DLL-Dateien handeln.
rdkEnthält das Resource Development Kit, d. h. Werkzeuge und Beispiele zum Erstellen benutzerdefinierter Ressourcen.
RessourcenEnthält Ressourcendateien mit der Erweiterung /c .res. Dabei handelt es sich um binäre Assets, die zur Laufzeit von den verschiedenen MyScript-Technologien verwendet werden, um die unterschiedlichen Erkennungsaufgaben zu erfüllen.
ToolsEnthält nützliche Programmierwerkzeuge, darunter InkTool zum Testen von Handschriften.
voimEnthält Bibliotheken der MyScript-Texteingabemethode. Es handelt sich um ein Erweiterungs-SDK für das MyScript-Texterkennungssystem, das dafür konzipiert ist, Eingabemethoden mit Handschrifterkennung einfach und schnell zu erstellen.

Einrichten des Zertifikats für das MyScript Text SDK

Für die Nutzung des MyScript Text SDK ist ein gültiges Zertifikat zwingend erforderlich. Dies ist eine Sicherheitsmaßnahme, die Sie eindeutig als legitimen Kunden von MyScript-Technologien identifiziert. Das Zertifikat hilft MyScript dabei, die Identität der Kunden und die gekauften Produkte nachzuverfolgen.

Das Zertifikat wird im „ [your_login].vo.zip package “ bereitgestellt. Wenn Sie dieses Paket entpacken, wird das Zertifikat automatisch an den entsprechenden Speicherort kopiert. Dadurch wird sichergestellt, dass das Zertifikat sofort in den bereitgestellten Diensten und Code-Beispielen funktioniert.

So erstellen Sie „ Qt Virtual Keyboard “ mit dem MyScript Text SDK

Der MyScript-Integrationscode wird automatisch aktiviert, sobald das MyScript Text SDK erkannt wird.

Sprachressourcen für das MyScript Text SDK werden im Verzeichnis [qtbase]/qtvirtualkeyboard/myscript installiert.

Statische Kompilierungen

Das Qt Virtual Keyboard kann statisch kompiliert und mit der Anwendung verknüpft werden. Dies setzt voraus, dass Qt ebenfalls statisch kompiliert wird (unter Verwendung der Option -static in der Befehlszeile von configure).

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.