E Les modes d'entrée

L'attribut inputmode fournit une indication à l'agent utilisateur afin qu'il puisse sélectionner un mode d'entrée approprié pour l'entrée de texte prévue dans une commande de formulaire associée. Le mode d'entrée peut être une configuration de clavier, un éditeur de méthode d'entrée (aussi appelé processeur frontal) ou tout autre paramètre qui affecte l'entrée sur l'appareil, ou les appareils, utilisé.

En se servant de l'attribut inputmode, l'auteur peut donner à l'agent des indications qui facilitent la saisie du formulaire pour l'utilisateur. Les auteurs devraient fournir des attributs inputmode chaque fois que c'est possible, en s'assurant que les valeurs utilisées couvrent un grand éventail d'appareils.

E.1 La syntaxe de la valeur de l'attribut inputmode

La valeur de l'attribut inputmode est une liste d'atomes, séparés par des blancs. Les atomes sont soit des séquences de lettres alphabétiques, soit des adresse URI absolues. On peut distinguer ces dernières des premières en notant que les adresse URI absolues contiennent un caractère deux-points :. Les atomes sont sensibles à la casse. Seuls les atomes qui se composent de lettres alphabétiques sont définis dans la présente spécification, dans E.3 La liste des atomes (ou une suite de cette spécification).

Cette spécification ne définit aucune adresse URI à employer comme atome, mais elle permet à d'autres spécifications de le faire pour des raisons d'extensibilité. Cela peut devenir nécessaire pour les appareils dont les modes d'entrée ne peuvent pas être couverts par les atomes fournis ici. L'adresse URI devrait se résoudre en une description, lisible par un humain, du mode d'entrée associé à l'utilisation de l'adresse URI comme atome. Cette représentation devrait décrire le mode d'entrée indiqué par cet atome, si et comment, le cas échéant, il modifie, ou est modifié par, d'autres atomes.

E.2 Le comportement de l'agent utilisateur

Dès qu'il entre dans une commande de formulaire vide avec un attribut inputmode, l'agent utilisateur devrait sélectionner le mode d'entrée indiqué par la valeur de inputmode. Les agents utilisateurs ne devraient pas se servir de l'attribut inputmode pour fixer le mode d'entrée lorsqu'ils entrent dans une commande de formulaire qui contient déjà du texte. Pour fixer le mode d'entrée approprié lors de l'entrée dans une commande de formulaire contenant déjà du texte, les agents utilisateurs devraient s'appuyer sur les conventions propres à la plateforme.

Les agents utilisateurs devraient mettre à disposition tous les modes d'entrée qui sont reconnus par le (ou les) système (d'exploitation)/appareil(s) sur lequels ils fonctionnent/auxquels ils ont accès, et qui sont installés par l'utilisateur pour un usage courant. Habituellement, il s'agit seulement d'un sous-ensemble restreint des modes d'entrée qui peuvent être décrits par les atomes définis ici.

Remarque :

On trouvera d'autres directives pour la mise en œuvre des agents utilisateur dans [UAAG 1.0].

L'algorithme simple suivant sert à définir comment les agents utilisateurs font correspondre les valeurs de l'attribut inputmode aux modes d'entrée offerts. Cet algorithme ne doit pas forcément être mis en œuvre tel quel : les agents utilisateurs doivent juste se comporter comme s'ils l'utilisaient. L'algorithme n'est pas conçu pour produire des résultats évidents ou souhaitables pour chaque combinaison d'atomes possible mais un comportement correct pour des combinaisons d'atomes fréquentes et un comportement prévisible dans tous les cas.

Premièrement, chacun des modes d'entrée disponibles est représenté par une ou plusieurs listes d'atomes. Un mode d'entrée peut correspondre à plusieurs listes d'atomes ; par exemple, sur un système paramétré pour un utilisateur grec, les valeurs "greek upperCase" et "user upperCase" correspondraient tous deux au même mode d'entrée. Deux listes ne seront pas identiques.

Deuxièmement, l'attribut inputmode est examiné d'avant en arrière. Pour chaque atome t dans l'attribut inputmode, si, dans le reste de la liste d'atomes représentant des modes d'entrée disponibles, il existe une liste d'atomes représentant des modes d'entrée disponibles qui contient t, alors toutes les listes d'atomes représentant des modes d'entrée disponibles qui ne contiennent pas t sont retirées. S'il n'y a pas de liste d'atomes restante qui contient t, alors t est ignoré.

Troisièmement, s'il reste une ou plusieurs listes d'atomes, toutes correspondant au même mode d'entrée, alors ce mode d'entrée est choisi. S'il ne reste aucune liste (ce qui veut dire qu'il n'y en avait aucune au départ), ou si les listes restantes correspondent à plus d'un mode d'entrée, alors aucun mode d'entrée n'est choisi.

Exemple : Supposons que la liste des listes d'atomes représentant les modes d'entrée disponibles soit {"cyrillic upperCase", "cyrillic lowerCase", "cyrillic", "latin", "user upperCase", "user lowerCase"} ; les valeurs suivantes de l'attribut inputmode sélectionneraient alors les modes d'entrée suivants : la valeur "cyrillic titleCase" sélectionne "cyrillic", "cyrillic lowerCase" sélectionne "cyrillic lowerCase", "lowerCase cyrillic" sélectionne "cyrillic lowerCase", "latin upperCase" sélectionne "latin", mais la valeur "upperCase latin" ne sélectionne pas "cyrillic upperCase", ni "user upperCase", si elle correspond au même mode d'entrée, et elle ne sélectionne pas de mode d'entrée si les listes "cyrillic upperCase" et "user upperCase" ne correspondent pas au même mode d'entrée.

E.3 La liste des atomes

Les atomes définis dans cette spécification se répartissent en deux catégories : les atomes d'écriture et les modificateurs. Dans les attributs inputmode, les atomes d'écriture devraient toujours être listés avant les modificateurs.

E.3.1 Les atomes d'écriture

Les atomes d'écriture apportent une indication générale du jeu de caractères couvert par un mode d'entrée. Dans la plupart des cas, les atomes d'écriture correspondent directement aux écritures Unicode [Unicode Scripts]. Certains atomes correspondent aux noms de bloc de la classe Java java.lang.Character.UnicodeBlock ([Java Unicode Blocks]) ou aux noms de bloc Unicode. Toutefois, cela ne signifie ni qu'un mode d'entrée doivent permettre l'entrée de tous les caractères dans l'écriture ou le bloc ni qu'un mode d'entrée se limite seulement aux caractères de cette écriture particulière. Par exemple, un clavier latin ne couvre pas tous les caractères de l'écriture latin et il inclut une ponctuation qui n'est pas assignée à l'écriture latin. Ces noms d'écriture sont issus de la version 3.2 du standard Unicode.

Atome de mode d'entrée Commentaires
arabic nom d'écriture Unicode
armenian nom d'écriture Unicode
bengali nom d'écriture Unicode
bopomofo nom d'écriture Unicode
braille sert à entrer des motifs braille (et non pour indiquer un appareil de saisie braille)
buhid nom d'écriture Unicode
canadianAboriginal nom d'écriture Unicode
cherokee nom d'écriture Unicode
cyrillic nom d'écriture Unicode
deseret nom d'écriture Unicode
devanagari nom d'écriture Unicode
ethiopic nom d'écriture Unicode
georgian nom d'écriture Unicode
greek nom d'écriture Unicode
gothic nom d'écriture Unicode
gujarati nom d'écriture Unicode
gurmukhi nom d'écriture Unicode
han nom d'écriture Unicode
hangul nom d'écriture Unicode
hanja sous-ensemble de han utilisée pour écrire en coréen
hanunoo nom d'écriture Unicode
hebrew nom d'écriture Unicode
hiragana nom d'écriture Unicode (peut inclure d'autres écritures japonaises produites par conversion à partir de l'hiragana)
ipa alphabet phonétique international (IPA)
kanji sous-ensemble de han utilisé pour écrire en japonais
kannada nom d'écriture Unicode
katakana nom d'écriture Unicode (en pleine chasse non en demi-chasse)
khmer nom d'écriture Unicode
lao nom d'écriture Unicode
latin nom d'écriture Unicode
malayalam nom d'écriture Unicode
math symboles mathématiques et caractères apparentés
mongolian nom d'écriture Unicode
myanmar nom d'écriture Unicode
ogham nom d'écriture Unicode
oldItalic nom d'écriture Unicode
oriya nom d'écriture Unicode
runic nom d'écriture Unicode
simplifiedHanzi sous-ensemble de han utilisé pour écrire en chinois simplifié
sinhala nom d'écriture Unicode
syriac nom d'écriture Unicode
tagalog nom d'écriture Unicode
tagbanwa nom d'écriture Unicode
tamil nom d'écriture Unicode
telugu nom d'écriture Unicode
thaana nom d'écriture Unicode
thai nom d'écriture Unicode
tibetan nom d'écriture Unicode
traditionalHanzi sous-ensemble de han utilisé pour écrire en chinois traditionnel
user valeur spéciale dénotant l'entrée indigène de l'utilisateur (par exemple, pour entrer son nom ou son texte dans sa langue d'origine).
yi nom d'écriture Unicode

E.3.2 Les atomes modificateurs

On peut ajouter des atomes modificateurs aux écritures sur lesquelles ils s'appliquent afin d'indiquer plus précisément le type de caractères attendu dans la commande de formulaire. Les claviers d'ordinateur personnel traditionnels n'ont pas besoin de la plupart des atomes modificateurs (en effet, leurs utilisateurs seraient dans une grande confusion si le programme décidait de changer la casse de son propre chef, avec l'exception possible de la touche de blocage en majuscules). Par contre, les atomes modificateurs peuvent se révéler très utiles pour fixer les modes d'entrée des petits appareils.

Atome de mode d'entrée Commentaires
lowerCase minuscules (pour les écritures bicamérales)
upperCase majuscules (pour les écritures bicamérales)
titleCase casse de titre (pour les écritures bicamérales) : les mots commencent par une lettre majuscule
startUpper commencer l'entrée par une lettre majuscule puis continuer par des lettres minuscules
digits chiffres d'une écriture particulière (par exemple, inputmode='thai digits')
symbols symboles, ponctuation (convenant à une écriture particulière)
predictOn prédiction de texte activée (par exemple, pour saisir du texte)
predictOff prédiction de texte désactivée (par exemple, pour les mots de passe)
halfWidth formes de compatibilité en demi-chasse (par exemple, Katakana ; à éviter)

E.4 Les relations avec les facettes des modèles du schéma XML

Les agents utilisateurs peuvent utiliser les informations disponibles dans une facette de modèle du schéma XML pour fixer le mode d'entrée. Remarquez qu'une facette de modèle est une restriction forte sur la valeur lexicale d'un nœud de donnée d'instance qui peut définir des restrictions diverses pour des parties différentes de l'élément de donnée. L'attribut inputmode est une indication faible à propos des sortes de caractères que l'utilisateur peut très probablement commencer à entrer dans la commande de formulaire. L'attribut inputmode est donné en plus des facettes de modèle pour les raisons suivantes :

  1. L'ensemble des caractères admissibles défini dans un modèle peut être si vaste qu'il n'est pas possible de déduire un paramètre de mode d'entrée raisonnable. Néanmoins, il y aura souvent une grande probabilité qu'un type de caractères soit entré par l'utilisateur. Auquel cas, l'attribut inputmode permet de fixer le mode d'entrée pour la commodité de l'utilisateur ;

  2. Dans certains cas, il peut être impossible de dériver le paramètre de mode d'entrée à partir du modèle parce que le jeu de caractères admis dans le modèle correspond étroitement à un jeu de caractères couvert par une valeur de l'attribut inputmode. Toutefois, une telle dérivation exigerait beaucoup de données et de calculs pour l'agent utilisateur ;

  3. Les petits appareils peuvent laisser la vérification des modèles au serveur mais pourront aisément basculer vers les modes d'entrée qu'ils gèrent. Que l'utilisateur puisse facilement entrer des données revêt une importance particulière pour les petits appareils.

E.5 Exemples

Voici l'exemple d'un formulaire pour entrer une adresse japonaise. Elle apparaît dans une forme tabulaire ; elle sera remplacée par une syntaxe réelle dans une version ultérieure de cette spécification.

Légende : inputmode
Nom de famille hiragana
(en kana) katakana
Prénom hiragana
(en kana) katakana
Code postal latin digits
Adresse hiragana
(en kana) katakana
Courriel latin lowerCase
Téléphone latin digits
Commentaires user predictOn