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/basic | Qt 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.
| Option | Argumente | Beschreibung | Anmerkungen |
|---|---|---|---|
| -vkb-enable <code>[,<code>]*" | Unterstützte Sprachcodes oder „all“ | Aktiviert die angegebene Sprache | Die angegebenen Sprachen können mit dieser Option explizit aktiviert werden. Jeder Sprachcode hat das Format „Sprache[_Land]“, wobei:
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 „ 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 Handschrifteingabe | Dieses 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-keynavigation | Aktiviert oder deaktiviert die Navigation mit den Pfeiltasten auf der Tastatur | Ermö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 aus | Qt 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-effects | Aktiviert oder deaktiviert Soundeffekte | Diese 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-cangjie | Aktiviert 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-zhuyin | Aktiviert 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-desktop | Aktiviert oder deaktiviert die Desktop-Integration | Standardmäß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-layouts | Aktiviert oder deaktiviert integrierte Tastaturlayouts | Standardmäß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 „ | |
| -vkb-hunspell | [no|3rdparty|system] | Hunspell-Integration auswählen | Erzwingt 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-pinyin | n/a | Deaktiviert die Bündelung von Pinyin-Ressourcen | Diese 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-tcime | n/a | Deaktiviert die Einbindung von TCIME-Ressourcen | Diese 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-sdk | Pfad/zu/Cerence/SDK | Konfiguriert 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-static | handwriting | Aktiviert 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-cerence | n/a | Aktiviert die Bündelung der Cerence-Handschrift-Ressourcen | Diese Option bündelt die Cerence-Handschrift-Ressourcen in der Plugin-Binärdatei. |
| -vkb-bundle-xt9 oder -vkb-bundle-cerence | n/a | Aktiviert die Bündelung von XT9-Ressourcen | Diese Option bündelt die XT9-Ressourcen in der Plugin-Binärdatei. |
| -vkb-myscript-sdk | Pfad/zu/MyScript/SDK | Konfiguriert 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-Architektur | Das 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.txtCerence-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.zipDadurch 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/sdkAufbau 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
└───staticDie Inhalte der einzelnen Verzeichnisse sind wie folgt:
| Verzeichnis | Beschreibung | Anmerkungen |
|---|---|---|
| api | Dieses Verzeichnis sollte alle API-Dateien enthalten | Die 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. |
| data | Dieses Verzeichnis sollte alle HWR-Datenbanken und optional XT9-Datenbanken enthalten. | HWR-Datenbank für die Cerence Handwriting Alphabetic:
HWR-Datenbank für das „Cerence Handwriting CJK“:
Sprachdatenbank:
|
| 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.
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/sdkDie 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.)
└─── confDie Beschreibung des Inhalts der einzelnen Verzeichnisse lautet wie folgt:
| Verzeichnis | Beschreibung |
|---|---|
| conf | Enthält die Sprachkonfigurationsdateien, die die Engine zur Konfiguration der Sprachressourcen verwendet. |
| doc | Enthält die HTML-Dokumentationsdateien. Die Datei „ index.html “ zeigt die Hauptseite an. |
| edk | Enthält das Engine Development Kit sowie Elemente zur Handschriftprogrammierung für jede unterstützte Programmiersprachen-API, einschließlich Code-Beispielen. |
| engine | Enthält Bibliotheken für jedes Engine-Objekt; je nach Zielplattform kann es sich um SO-, A- oder DLL-Dateien handeln. |
| rdk | Enthält das Resource Development Kit, d. h. Werkzeuge und Beispiele zum Erstellen benutzerdefinierter Ressourcen. |
| Ressourcen | Enthä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. |
| Tools | Enthält nützliche Programmierwerkzeuge, darunter InkTool zum Testen von Handschriften. |
| voim | Enthä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.