Offres Produits Études de cas Expertises À propos Nous contacter Blog Offres d'emploi
FR EN

Référence API

Composant VirtualKeyboard

À instancier une seule fois par application dans votre Window ou ApplicationWindow racine.

import Ln.VirtualKeyboard 1.0
VirtualKeyboard { width: parent.width }

Propriétés

PropriétéTypeDéfautDescription
maxWidthreal-1Largeur maximale du clavier
maxHeightreal-1Hauteur maximale du clavier
inputProfileslist<object>(profils embarqués)Optionnel ; omettre pour utiliser les 56 profils embarqués
activeProfileIdslist<string>["en-qwerty"]IDs de profils activés
currentProfileIdstring"en-qwerty"ID du profil actif
themeenumDarkLnvk.Dark / Lnvk.Light
numberRowEnabledboolfalseRangée de chiffres persistante
predictionEnabledbooltruePrédiction de mots
rememberLearningbooltrueConserver les mots appris
customPredictionModeenumLnvk.DisabledPolitique de prédiction personnalisée (Lnvk.Disabled, Lnvk.Replace, Lnvk.Supersede)
Surcharges de thème : voir Thèmes

Singleton Lnvk

Singleton global disponible après import Ln.VirtualKeyboard 1.0. Reflète l'état du clavier et expose les méthodes.

Propriétés

PropriétéTypeDéfautModifiableDescription
visibleboolfalseouiVisibilité du clavier
lastErrorobject(vide)nonDernière erreur API (LnvkError ; voir Gestion des erreurs)
inputProfileslist<object>(embarqués)nonListe complète des profils (utiliser setInputProfiles())
activeProfileIdslist<string>["en-qwerty"]nonIDs de profils activés (utiliser setActiveProfileIds())
activeProfileslist<object>(depuis les ids)nonObjets de profils activés (id, languageTag, layoutId, displayName, imeEngineId)
currentProfileIdstring"en-qwerty"nonID du profil actif (utiliser setCurrentProfileId())
currentLanguagestring"en"nonTag BCP 47 du profil actif
currentDisplayNamestring"English"nonNom d'affichage du profil actif
shiftStateintOffnonOff, Shifted ou CapsLock
layoutPageint0nonPage de disposition active
inputMethodHintsint0nonHints du champ actif
composingTextstring""nonTexte IME en cours
keyboardHeightreal260nonHauteur calculée actuelle
maxWidthreal600ouiLargeur maximale
maxHeightreal-1nonHauteur maximale
themeenumDarkouiLnvk.theme = Lnvk.Dark (ou Lnvk.Light) ; utiliser setTheme() pour un résultat bool
effectiveFontFamilystringnonFamille de rendu en lecture seule. Lier font.family: Lnvk.effectiveFontFamily
numberRowEnabledboolfalseouiRangée de chiffres persistante
predictionEnabledbooltrueouiPrédiction de mots
effectivePredictionEnabledbooltruenonPrédiction après masque de hints (inputMethodHints)
imeInteractionEnabledbooltruenonComposition IME et suggestions post-commit après masque de hints
rememberLearningbooltrueouiConserver les mots appris
customPredictionModeenumLnvk.DisabledouiPolitique de prédiction personnalisée

Méthodes

MéthodeRetourDescription
setInputProfiles(list profiles)boolRemplace la liste complète des profils
setActiveProfileIds(list ids)boolDéfinit les IDs de profils activés
setCurrentProfileId(string id)boolDéfinit le profil actif
selectProfile(string id)boolBascule vers un profil par ID
selectLanguage(string bcp47)boolPremier profil actif avec ce tag de langue
switchLayout(int page)boolChange de page de disposition
setTheme(enum theme)boolCharge le thème sombre/clair embarqué
setCustomPredictionDictionary(string languageTag, string predFilePath)boolDéfinit un fichier .pred personnalisé
clearCustomPredictionDictionary(string languageTag)boolEfface le dictionnaire personnalisé d'une langue/tag
clearError()Efface lastError après traitement par l'hôte
profilesForLanguageTag(string languageTag)listTous les profils avec ce languageTag exact
displayName(string bcp47)stringNom d'affichage générique pour un tag de langue
profileDisplayName(string id)stringNom d'affichage pour un ID de profil
clearCustomPredictionDictionaries()Efface tous les dictionnaires personnalisés
hide()Masque le clavier

Gestion des erreurs

Les APIs de configuration, disposition, prédiction et thème signalent les échecs via un slot structuré sur Lnvk :

ChampTypeDescription
Lnvk.lastError.categoryintLnvkErrors.LnvkErrorCategory.* (Config, Layout, Prediction, Theme)
Lnvk.lastError.codeintLnvkErrors.LnvkErrorCode.* (voir tableau ci-dessous)
Lnvk.lastError.messagestringExplication lisible
Lnvk.lastError.contextobjectDétails machine (par ex. requestedId, layoutId, path)
Lnvk.lastError.isValidbooltrue lorsqu'une erreur est définie

Les méthodes mutantes retournent un bool : true si la requête est entièrement acceptée ; false si elle est rejetée ou assainie (ids invalides retirés, profil courant corrigé, etc.). Inspectez Lnvk.lastError lorsque la valeur est false.

if (!Lnvk.setActiveProfileIds(["en-qwerty", "bad-id"])) {
    console.warn(Lnvk.lastError.code, Lnvk.lastError.message, Lnvk.lastError.context)
}

Connections {
    target: Lnvk
    function onErrorOccurred(err) {
        console.warn("LNVK error", err.code, err.message)
    }
}

// Après traitement, effacer le slot pour débloquer le panneau
Lnvk.clearError()

Équivalent C++ :

auto *km = lnvk::qt::KeyboardManager::instance();
if (!km->setActiveProfileIds({QStringLiteral("bad-id")})) {
    const lnvk::qt::LnvkError err = km->lastError();
    qWarning() << static_cast<int>(err.errorCode()) << err.message() << err.context();
}
km->clearError();

Comportement du panneau : VirtualKeyboard masque la grille de touches pour les erreurs Config ou Layout et affiche lastError.message. Les erreurs Prediction et Theme sont journalisées ; le clavier reste utilisable.

Codes d'erreur courants

CodeCatégorieCause typique
InvalidInputProfilesConfigProfil invalide (id manquant, disposition inconnue, imeEngineId invalide)
InvalidActiveProfileIdsConfigId inconnu ou dupliqué dans activeProfileIds
InvalidCurrentProfileIdConfigcurrentProfileId absent de la liste active
ProfileNotFoundConfigselectProfile() : id manquant ou inactif
LanguageNotFoundConfigselectLanguage() : tag absent des profils actifs
InvalidKeyboardRootConfigregisterKeyboardRoot() sans QQuickItem
LayoutLoadFailedLayoutJSON de disposition manquant
InvalidLayoutPageLayoutIndex de page hors limites
SwitchLayoutFailedLayoutPage indisponible pour switchLayout()
InvalidPredictionPathPredictionChemin .pred manquant ou extension incorrecte
ThemeLoadFailedThemeImpossible de charger le JSON de thème embarqué

La configuration invalide est toujours assainie (repli gracieux vers les défauts) ; lastError indique ce qui a été corrigé.

API C++

L'API C++ publique est exposée via un en-tête unique :

#include <lnvk>

Cela fournit lnvk::qt::FontPaths et lnvk::qt::KeyboardManager. Avec find_package(LNVK), ln_virtual_keyboard_deploy(myapp) ajoute le répertoire include/lnvk/ au chemin d'inclusion de votre cible.

Voir Langues pour les profils de saisie, Thème pour les polices et Configuration pour les dictionnaires de prédiction personnalisés.