Configuration
Prédiction de mots
Activée par défaut. Désactivez-la globalement sur le composant ou à l'exécution via le singleton :
VirtualKeyboard { predictionEnabled: false }
// ou à l'exécution :
Lnvk.predictionEnabled = false
La prédiction est automatiquement désactivée pour les champs avec Qt.ImhNoPredictiveText, Qt.ImhSensitiveData, Qt.ImhHiddenText, ou tout hint numérique, de composition, de date ou d'heure. Les propriétés en lecture seule Lnvk.effectivePredictionEnabled et Lnvk.imeInteractionEnabled reflètent le masque de hints actif (voir Hints de méthode de saisie).
Dictionnaires de prédiction personnalisés
Fournissez des dictionnaires de prédiction métier (médical, juridique, noms de produits, etc.) par langue.
Étape 1 : compiler un fichier .pred
Utilisez le compilateur fourni dans votre bundle LNVK :
# Depuis la racine du package
./bin/lndict-compiler --flat my-words.txt prediction-en-custom.pred
Formats d'entrée acceptés par --flat :
- Liste de mots (un mot par ligne) :
word - Mot + fréquence :
word<TAB>frequency - TSV de prédiction complet :
word<TAB>word<TAB>frequency
Les lignes de type liste reçoivent automatiquement une fréquence par défaut élevée pour classer les entrées personnalisées en tête.
Étape 2 : enregistrer les dictionnaires dans votre app
Enregistrez un dictionnaire par langue/tag.
Depuis QML (via le singleton Lnvk) :
import Ln.VirtualKeyboard 1.0
Component.onCompleted: {
Lnvk.setCustomPredictionDictionary("en", "/opt/mydicts/prediction-en-custom.pred")
Lnvk.setCustomPredictionDictionary("en-US", "/opt/mydicts/prediction-en-us-custom.pred")
}
Depuis C++ :
#include <lnvk>
auto *kb = lnvk::qt::KeyboardManager::instance();
kb->setCustomPredictionDictionary("en", "/opt/mydicts/prediction-en-custom.pred");
kb->setCustomPredictionDictionary("en-US", "/opt/mydicts/prediction-en-us-custom.pred");
Les deux chemins référencent la même instance singleton ; les appels C++ sont visibles depuis QML et inversement.
Ordre de résolution des langues :
- tag BCP47 exact (par exemple
en-US) - repli sur le tag principal (par exemple
en)
Étape 3 : choisir le mode de fusion
VirtualKeyboard {
customPredictionMode: Lnvk.Supersede
}
// ou sur le singleton :
Lnvk.customPredictionMode = Lnvk.Supersede
Depuis C++ :
auto *kb = lnvk::qt::KeyboardManager::instance();
kb->setCustomPredictionMode(lnvk::qt::KeyboardManager::Supersede);
Modes :
Disabled: ignorer les dictionnaires personnalisés ; utiliser uniquement le dictionnaire intégréReplace: utiliser uniquement le dictionnaire personnalisé pour la langue/tag correspondante (repli sur l'intégré si absent/invalide)Supersede: candidats personnalisés en premier, puis candidats intégrés
Effacer les mappings à l'exécution :
Lnvk.clearCustomPredictionDictionary("en-US")
Lnvk.clearCustomPredictionDictionaries()
kb->clearCustomPredictionDictionary("en-US");
kb->clearCustomPredictionDictionaries();
Rangée de chiffres
Affichez une rangée persistante de touches numériques au-dessus de la rangée de lettres :
VirtualKeyboard { numberRowEnabled: true }
Lnvk.numberRowEnabled = true
Apprentissage
Le clavier apprend des mots saisis pour améliorer les prédictions futures. Désactivez la persistance entre sessions avec rememberLearning :
VirtualKeyboard { rememberLearning: false }
Lnvk.rememberLearning = false
rememberLearning: false, les mots appris sont effacés à la fermeture de l'application.
Hints de méthode de saisie
Le clavier s'adapte automatiquement aux inputMethodHints du TextInput ou TextEdit qui a le focus :
| Hint | Disposition | IME | Prédiction |
|---|---|---|---|
Qt.ImhNone | Disposition du profil | activé | activée (si activée) |
Qt.ImhDigitsOnly | Pavé numérique | désactivé | désactivée |
Qt.ImhDialableCharactersOnly | Clavier de numérotation | désactivé | désactivée |
Qt.ImhFormattedNumbersOnly | Nombres avec décimale/signes | désactivé | désactivée |
Qt.ImhDate | Saisie de date | désactivé | désactivée |
Qt.ImhTime | Saisie d'heure | désactivé | désactivée |
Qt.ImhPreferNumbers | Chiffres avec accès aux lettres | désactivé | désactivée |
Qt.ImhEmailCharactersOnly | Touches e-mail sur disposition alphabétique | désactivé | activée |
Qt.ImhUrlCharactersOnly | Touches URL sur disposition alphabétique | désactivé | activée |
Qt.ImhNoPredictiveText | Disposition du profil | désactivé | désactivée |
Qt.ImhSensitiveData | Disposition du profil | désactivé | désactivée |
Qt.ImhHiddenText | Mode mot de passe (numérique si aussi sensible) | désactivé | désactivée |
Lorsque l'IME est désactivé, toute composition active est effacée. La barre de candidats reste visible pour la prédiction de mots lorsque effectivePredictionEnabled est vrai. Lorsque imeInteractionEnabled est vrai, la barre apparaît aussi pendant la composition IME et les suggestions post-commit.