En esta página

Creación de Qt Virtual Keyboard

Visión general

Este documento describe cómo construir el plugin Qt Virtual Keyboard.

El proyecto está dividido en los siguientes subproyectos:

examples/virtualkeyboard/basicQt Virtual Keyboard Aplicación de demostración
src/componentes/Qt Virtual Keyboard Components QML plugin (QtQuick.VirtualKeyboard.Components)
src/plugin/Qt Virtual Keyboard plugin de contexto de entrada de plataforma. Este plugin proporciona la interfaz QPlatformInputContext y funciona como una capa entre el contexto de entrada QML y la plataforma.
src/plugins/Directorio que contiene los plugins de Qt Virtual Keyboard (QtQuick.VirtualKeyboard.Plugins), que implementan métodos de entrada complejos, como el HunspellInputMethod. La configuración en tiempo de compilación especifica qué plugins se compilan y cargan en tiempo de ejecución.
src/settings/Qt Virtual Keyboard Plugin QML de configuración (QtQuick.VirtualKeyboard.Settings). Este plugin proporciona ajustes configurables por la aplicación para el teclado virtual.
src/styles/Qt Virtual Keyboard Plugin QML de estilos (QtQuick.VirtualKeyboard.Styles).
src/tecladovirtual/Qt Virtual Keyboard y plugin QML.

Opciones de configuración

La siguiente tabla contiene las opciones de nivel superior para configurar las características del teclado virtual. Estas opciones se pasan a la herramienta de configuración.

OpciónArgumentosDescripciónObservaciones
-vkb-enable <código>[,<código>]*"Códigos de idioma admitidos o "todosHabilita el idioma especificadoLos idiomas especificados pueden habilitarse explícitamente mediante esta opción. Cada código de idioma tiene el formato idioma[_país], donde:
  • language es un código de idioma ISO 639 de dos letras en minúscula
  • country es un código de país ISO 3166 de dos letras en mayúscula

Esta opción permite definir el soporte lingüístico en función de las necesidades. El teclado virtual puede admitir uno o varios idiomas a la vez.

Por ejemplo, -vkb-enable de_DE,fi_FI permite utilizar los idiomas alemán y finlandés.

El teclado virtual incluye automáticamente todos los idiomas admitidos si no se especifican otros.

-vkb-escritura[no|ejemplo-hwr|myscript-hwr|cerencia-hwr]Habilita o deshabilita la entrada de escritura a manoEsta bandera activa la entrada de escritura a mano. Por defecto, el motor se activa automáticamente si se encuentra en la carpeta de plugins adecuada, incluso sin utilizar esta opción. Pero, en caso de que MyScript y Cerence SDK coexistan, una de las opciones [no|myscript-hwr|cerence-hwr] debe ser configurada. La opción example-hwr necesita ser activada explícitamente. Esto puede hacerse para propósitos de desarrollo y pruebas.
[-no]-navegación con flechas vkbActiva o desactiva la navegación del teclado mediante las teclas de flecha.Permite controlar el teclado mediante las teclas de flecha y retorno. Esta función está desactivada por defecto.
-vkb-style[estándar|retro]Elige el estilo del teclado virtualQt Virtual Keyboard soporta dos estilos, estándar y retro. Ambos estilos se incluirán en el paquete, pero esta opción le permite cambiar el estilo incorporado por defecto.
[-no]-vkb-efectos de sonidoActiva o desactiva los efectos de sonidoEsta opción activa o desactiva los efectos de sonido. Depende del módulo Multimedia y se activa implícitamente cuando dicho módulo está disponible. Tenga en cuenta que los archivos de efectos de sonido reales se definen en el estilo de teclado, por lo que activar esta opción por sí sola no hace que los efectos de sonido sean audibles.
[-no]-vkb-cangjieActiva o desactiva el método de entrada Cangjie para chino tradicional.Esta opción activa o desactiva el método de entrada Cangjie para el idioma chino tradicional. El método de entrada está activado por defecto si se ha habilitado la compatibilidad con el chino tradicional.
[-no]-vkb-zhuyinActiva o desactiva el método de entrada Zhuyin para el chino tradicional.Esta opción activa o desactiva el método de entrada Zhuyin para el idioma chino tradicional. El método de entrada está activado por defecto si se ha habilitado la compatibilidad con el chino tradicional.
[-no]-vkb-desktopActiva o desactiva la integración con el escritorioPor defecto, la integración con el escritorio está activada cuando el entorno de destino es X11 o el escritorio de Windows. Esta opción permite desactivar la integración con el escritorio.

Nota: Para la integración incrustada, donde el InputPanel es instanciado por la aplicación, no hay necesidad de utilizar esta opción explícitamente. El teclado virtual no creará el panel de entrada del escritorio si la aplicación crea InputPanel antes de que el foco se establezca en un campo de entrada.

[-no]-vkb-layoutsActiva o desactiva los diseños incorporadosPor defecto, el complemento de teclado virtual contiene la distribución de teclado en inglés. Al especificar -no-vkb-layouts, las distribuciones integradas se excluyen del complemento de teclado virtual.

Nota: En este caso, la variable de entorno QT_VIRTUALKEYBOARD_LAYOUT_PATH debe establecerse en el directorio del sistema de archivos que contiene las distribuciones de teclado personalizadas antes de ejecutar la aplicación.

-vkb-hunspell[no|3rdparty|system]Elegir integración HunspellFuerza el método de integración Hunspell a la opción especificada. La opción 3rdparty selecciona la construcción local del código fuente de Hunspell utilizando los archivos del proyecto en el repositorio del teclado virtual. Esta opción requiere que el repositorio git de Hunspell haya sido clonado en el directorio src/plugins/hunspell/3rdparty/hunspell. La opción system selecciona el paquete system a través de pkg-config. La opción no desactiva el plugin Hunspell.
-vkb-no-bundle-pinyinn/aDesactiva la agrupación de recursos pinyin.Esta opción excluye los recursos pinyin del binario del complemento. Esta opción puede utilizarse para reducir el tamaño del binario del complemento.
-vkb-no-bundle-tcimen/aDesactiva la agrupación de recursos tcimeEsta opción excluye los recursos tcime del binario del complemento. Esta opción puede utilizarse para reducir el tamaño del binario del complemento.
-vkb-cerence-sdkruta/para/cerence/sdkConfigura la ubicación del SDK de Cerence y habilita las integraciones de Cerence Handwriting y XT9.El archivo zip Cerence SDK debe descomprimirse utilizando el script src/plugins/cerence/unpack.py. Por defecto, el SDK se descomprime en src/plugins/cerence/sdk, donde los scripts de compilación pueden recogerlo automáticamente. Sin embargo, utilizando el segundo parámetro del script unpack.py, es posible utilizar una ubicación diferente para el SDK. En ese caso, la localización debe ser pasada al script de compilación usando el parámetro de línea de comandos -vkb-cerence-sdk.
-vkb-cerence-staticescrituraHabilita la vinculación estática del motor Cerence Handwriting.Por defecto, el motor Cerence Handwriting se vincula dinámicamente. Utilice -vkb-cerence-static para forzar la vinculación estática.
-vkb-bundle-cerence-hwr o -vkb-bundle-cerencen/aActiva la agrupación de los recursos de Cerence HandwritingEsta opción incluye los recursos de Cerence Handwriting en el binario del complemento.
-vkb-bundle-xt9 o -vkb-bundle-cerencen/aActiva la agrupación de recursos XT9Esta opción agrupa los recursos XT9 en el binario del complemento.
-vkb-myscript-sdkruta/a/myscript/sdkConfigura la ubicación de MyScript Text SDK y activa la integración de MyScript Handwriting.El SDK de MyScript Text (zip), que se descomprime en src/plugins/myscript/sdk, puede ser recogido automáticamente por los scripts de compilación. Sin embargo, el SDK puede colocarse en una ubicación diferente. En ese caso, la ubicación debe pasarse al script de compilación mediante el parámetro de línea de comandos -vkb-myscript-sdk.
-vkb-myscript-arch[x86|x64|armv7hf|armv7|arm64]Configura la arquitectura de la CPU de destinoEl SDK de MyScript Text ofrece bibliotecas compartidas (dinámicas) para diferentes arquitecturas de CPU - [x86|x64|armv7hf|armv7|arm64] para Linux y [x86|x64] para Windows. Puede configurarse automáticamente. Sin embargo, el usuario también puede especificar la arquitectura de CPU de destino utilizando el parámetro de línea de comandos -vkb-myscript-arch.

Integración de Hunspell

Por defecto, HunspellInputMethod no estará disponible a menos que se encuentren la biblioteca Hunspell y las cabeceras de desarrollo. Para objetivos Linux/X11, la biblioteca Hunspell se puede obtener instalando el paquete libhunspell-dev. Alternativamente, el repositorio git de Hunspell puede clonarse en el directorio src/plugins/hunspell/3rdparty/hunspell. Las fuentes son detectadas automáticamente por el qmake y el proyecto se configurará para utilizar el Hunspell local. Si se utilizan fuentes Hunspell, los archivos del diccionario también deben copiarse en el directorio src/plugins/hunspell/3rdparty/hunspell/data.

A continuación se muestra un ejemplo de cómo debería ser la estructura de directorios después de configurar las fuentes Hunspell y los archivos del diccionario:

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

Integración de Cerence Handwriting

La integración de Cerence Handwriting admite los motores alfabético y CJK (chino, japonés y coreano). Ambos motores se integran mediante T9WriteInputMethod. El método de entrada se inicializa con un motor cada vez. La selección del motor se realiza automáticamente en función de la configuración regional de entrada actual.

Compatibilidad con Cerence Handwriting

Qt Virtual Keyboard es compatible con Cerence Handwriting v8.7 o posterior.

Preparativos para la compilación de Cerence Handwriting

El contenido del SDK debe desempaquetarse utilizando el script unpack.py ubicado en el directorio cerence. Esto asegura la correcta estructura de directorios para que CMake encuentre el contenido.

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

Esto desempaquetará el contenido en el directorio src/plugins/cerence/sdk, donde CMake puede recogerlo automáticamente.

Alternativamente, usted puede desempaquetar a cualquier otro directorio mediante la adición de un parámetro adicional a la línea de comandos. En este caso, la ubicación del SDK debe pasarse al script configure.

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

Diseño del SDK de Cerence

El contenido extraído del SDK tiene el siguiente aspecto:

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

Donde está el contenido de cada directorio:

DirectorioDescripciónObservaciones
apiEste directorio debe contener todos los archivos de la APILos archivos API suelen encontrarse en los directorios "api" y "public" del SDK, pero a veces en el directorio "demo".

Si se utilizan simultáneamente los motores alfabético y CJK, los archivos que se solapen pueden copiarse de cualquiera de los dos SDK.

datosEste directorio debe contener todas las bases de datos HWR y, opcionalmente, las bases de datos XT9.Base de datos HWR para el Cerence Handwriting Alphabetic:
  • _databas_le.bin

Base de datos HWR para Cerence Handwriting CJK:

  • cjk_HK_std_le.hdb Chino de Hong Kong
  • cjk_J_std_le.hdb Japonés
  • cjk_K_mkt_le.hdb Coreano
  • cjk_S_gb18030_le.hdb Chino simplificado
  • cjk_T_std_le.hdb Chino tradicional

Base de datos de idiomas:

  • La extensión del archivo es .ldb o .phd
lib/<objetivo>/<vinculación>/<variante-motor>Estructura de directorios que contiene las compilaciones de destino compatibles.Estos directorios deben contener las bibliotecas de destino deseadas. Si se encuentran tanto bibliotecas compartidas como estáticas, se prefieren las compartidas.

El código de integración de Cerence Handwriting y XT9 se activa automáticamente cuando se detecta el SDK de Cerence.

Todas las demás extensiones deben limpiarse del directorio [qtbase]/plugins/virtualkeyboard antes de compilar las extensiones Cerence para evitar comportamientos conflictivos en tiempo de ejecución. Las extensiones Cerence no necesitan ningún otro plugin de teclado virtual para funcionar.

Las bases de datos de escritura y de idiomas para XT9 se instalan en el directorio [qtbase]/qtvirtualkeyboard/cerence. Además, existen otras dos alternativas para localizar estos archivos:

  • Una ubicación de tiempo de ejecución personalizada definida por las variables de entorno.
  • La opción de línea de comandos -vkb-bundle-cerence para incrustar recursos en los binarios del complemento

Integración del SDK de MyScript Text

MyScript Text está diseñado para crear aplicaciones que permitan el reconocimiento de texto manuscrito. MyScript Text admite el reconocimiento de caracteres aislados, cursivos, impresos y escritura superpuesta. La escritura superpuesta MyScript está integrada en Qt Virtual Keyboard. Permite reconocer letras, palabras o partes de palabras escritas unas sobre otras, sin separación explícita entre fragmentos consecutivos. Es capaz de funcionar en dispositivos con limitaciones de memoria y CPU.

Estilos de escritura de entrada de MyScript Text SDK

El usuario final puede escribir un fragmento de palabra sobre otro, o un carácter sobre otro, como se muestra a continuación. El espacio entre dos palabras escritas se añade automáticamente, por lo que no es necesario un gesto explícito.

Escribir un carácter sobre otro
Escribiendo fragmentos de palabra sobre los otros

Cobertura lingüística de MyScript Text SDK

MyScript Superimposed es compatible con 72 idiomas.

Instalación de los paquetes de MyScript Text SDK

El equipo de entrega de MyScript puede proporcionarle los paquetes con varios archivos .zip. Para acceder a todo el código, herramientas y recursos necesarios para construir tu propia aplicación de escritura a mano, extrae todos los paquetes en la misma carpeta de destino que src/plugins/myscript/sdk, donde el CMake puede recogerlo automáticamente.

Alternativamente, puedes extraer los paquetes en cualquier otro directorio. En este caso, la ubicación del SDK debe ser pasada al script configure.

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

La jerarquía de archivos debe parecerse a la siguiente:

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

La descripción de los contenidos de cada directorio son:

DirectorioDescripción
confContiene los archivos de configuración de idiomas que el motor utiliza para configurar los recursos lingüísticos.
docContiene los archivos de documentación HTML. El archivo index.html muestra la página principal.
edkContiene el kit de desarrollo de Engine y los elementos de programación de escritura para cada API de lenguaje de programación soportado, incluyendo ejemplos de código.
motorContiene las librerías de cada objeto motor, dependiendo de las plataformas de destino puede ser SO, A, o DLL.
rdkContiene el kit de desarrollo de recursos, es decir, herramientas y ejemplos para crear recursos personalizados.
recursosContiene archivos de recursos con la extensión /c .res. Son recursos binarios utilizados en tiempo de ejecución por las distintas tecnologías MyScript para realizar las distintas tareas de reconocimiento.
herramientasContiene herramientas útiles para el programador, como InkTool para la comprobación de tinta.
voimContiene bibliotecas del método de entrada de texto MyScript. Es un SDK de extensión del sistema de reconocimiento de texto MyScript y está diseñado para construir métodos de entrada utilizando el reconocimiento de escritura a mano de forma fácil y rápida.

Configuración del certificado de MyScript Text SDK

Es obligatorio disponer de un certificado válido para utilizar MyScript Text SDK. Se trata de una medida de seguridad que le identifica de forma única como cliente legítimo de las tecnologías MyScript. El certificado ayuda a MyScript a rastrear la identificación de los clientes y los productos que han sido adquiridos.

El certificado se entrega en [your_login].vo.zip package. Cuando usted descomprime este paquete, el certificado se coloca automáticamente en la ubicación apropiada. Esto asegura que el certificado funcione instantáneamente dentro de los servicios y ejemplos de código que se le han proporcionado.

Cómo construir Qt Virtual Keyboard con MyScript Text SDK

El código de integración de MyScript se activa automáticamente cuando se detecta MyScript Text SDK.

Los recursos de lenguaje para MyScript Text SDK se instalan en el directorio [qtbase]/qtvirtualkeyboard/myscript.

Construcciones estáticas

El teclado virtual se puede compilar y enlazar estáticamente con la aplicación. Esto implica que Qt también se construye estáticamente (utilizando la opción -static en la línea de comandos 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.