<sect>Tables<label id="tables"><p>

<sect1>Tables de texte<label id="table-text"><p>
Les fichiers ayant un nom sous la forme <tt/*.ttb/ sont des tables de texte,
et ceux avec des noms de la forme <tt/*.tti/ sont des sous-tables de texte.
Elles sont utilisées par BRLTTY pour traduire les caractères à l'écran
dans les représentations brailles qui correspondent à l'informatique 8 points.

Au départ, BRLTTY est configuré pour utiliser la table de texte
<ref id="nabcc" name="North American Braille Computer Code">
(NABCC) (code informatique braille nord-américain).
En plus de celle-ci par défaut, les alternatives suivantes sont fournies:

<table loc="h">
  <tabular ca="ll">
    Nom|Langue@
    &TextTables
  </tabular>
</table>

Voir l'option <ref id="options-text-table" name="-t"> en ligne de commande,
la ligne <ref id="configure-text-table" name="text-table"> du fichier de
configuration, et l'option de compilation
<ref id="build-text-table" name="--with-text-table"> pour des détails
concernant la façon d'utiliser et de changer de table de texte.

<sect2>Format des tables de texte<p>
Une table de texte consiste en une séquence d'instructions, une par ligne,
qui définit comment chaque caractère doit être représenté en braille 
Vous devez utiliser l'encodage <tt/UTF-8/.
Un blanc (espaces, tabs) tant au début de la ligne qu'aavant et/ou après 
l'opérateur d'une instruction, est ignoré.

Les lignes ne contenant que des blancs sont ignorées.
Si le premier caractère non blanc d'une ligne est "&num;", cette ligne est
un commentaire et est ignorée.

<sect2>Instructions des tables de texte<p>
Les instructions suivantes sont fournies:
<descrip>
  <tag><tt/char/ <em/caractère/ <em/points/ &num; <em/commentaire/</tag>
    Utilise l'instruction <tt/char/ pour spécifier la façon dont un caractère 
    Unicode sera représenté en braille. Les caractères définis par cette
    instruction peuvent également être saisies au clavier braille. Si plusieurs
    caractères ont la même représentation braille, vous ne devriez en définir
    qu'un avec la ligne <tt/char/ - vous devriez définir l'autre avec la ligne
    <tt/glyph/ (dont la syntaxe est identique). Si plus d'un caractère ayant la
    même représentation braille est défini avec l'instruction <tt/char/
    (ce qui est actuellement possible pour des questions de rétrocompatibilité),
    c'est la première qui est sélectionnée. 

    <descrip>
      <tag><em/caractère/</tag>
        Le caractère Unicode qui sera défini. Cela peut être:
        <itemize>
          <item>
            Tout caractère différent d'un antislash ou d'un caractère blanc.
          <item>
            Un caractère spécial précédé d'un anti-slash.
            Ce sont:
            <descrip>
            - <tag/\b/Le caractère Effacement
            - <tag/\f/Le caractère formfeed
            - <tag/\n/Le caractère Nouvelle ligne.
            - <tag/\o&num;&num;&num;/La représentation octale à 3 chiffres d'un caractère.
            - <tag/\r/Le caractère retour chariot
            - <tag/\s/Le caractère Espace
            - <tag/\t/Le caractère Tab horizontal
            - <tag/\u&num;&num;&num;&num;/La représentation hexadécimale à quatre chiffres d'un caractère.
            - <tag/\U&num;&num;&num;&num;&num;&num;&num;&num;/La représentation hexadécimale à huit chiffres d'un caractère.
            - <tag/\v/Le caractère tab vertical
            - <tag/\x&num;&num;/La représentation hexadécimale à deux chiffres d'un caractère.
            - <tag/\X&num;&num;/... (la casse du X et des chiffres n'a pas de signification)
            - <tag/\&num;/Signe d'un nombre littéral.
            - <tag/\&lt;name&gt;/Le nom Unicode d'un caractère (utilisez _ pour l'espace).
            - <tag/\\/Un antislash littéral.
            </descrip>
        </itemize>
      <tag><em/dots/</tag>
        La représentation braille du caractère Unicode. C'est une séquence d'un
        à huit nombres de points. Si la séquence du nombre de points est entourée
        de parenthèses, vous pouvez séparer les numéros des points l'un de l'autre
        par des blancs. Un numéro de point est un chiffre compris entre <tt/1/-<tt/8/ 
        tels que définis par la
        <ref id="dots" name="Standard Braille Dot Numbering Convention"> (convention
        standard de numérotation de points brailles). Le numéro de point spécial <tt/0/
        est reconnu quand il n'est pas entouré de parenthèses, et il signifie aucun
        point; il ne peut être utilisé parallèlement à un autre numéro de point.
    </descrip>

    Exemples:
    <itemize>
      <item><tt/char a 1/
      <item><tt/char b (12)/
      <item><tt/char c ( 4  1   )/
      <item><tt/char \\ 12567/
      <item><tt/char \s 0/
      <item><tt/char \x20 ()/
      <item><tt/char \&lt;LATIN_SMALL_LETTER_D&gt; 145/
    </itemize>
  <tag><tt/glyph/ <em/caractère/ <em/dots/ &num; <em/comment/</tag>
    Utilisez l'instruction <tt/glyph/ pour spécifier la façon dont doit être
    représenté en braille un caractère Unicode. Les caractères définis avec
    cette instruction peuvent uniquement être affichés. On ne peut pas les
    saisir au clavier braille. Voir la ligne <tt/char/ pour les détails sur
    la syntaxe et pour des exemples.
  <tag><tt/byte/ <em/byte/ <em/points/ &num; <em/commentaire/</tag>
    Utilisez l'instruction <tt/byte/ pour spécifier comment un caractère en encodage local
    doit être représenté en braille. Il a été retenu pour des raisons de
    compatibilité mais ne devrait pas être utilisé.

    Les caractères Unicode devraient être définis
    (via l'instruction <tt/char/) de telle sorte que la table de texte demeure
    valide par rapport à l'encodage local.

    <descrip>
      <tag><em/byte/</tag>
        Le caractère local défini. Il peut être spécifié de la même manière que
        l'opérateur <em/caractère/ de l'instruction <tt/char/ sauf que les formes
        spécifiques à l'Unicode (\u, \U, \&lt;) ne peuvent pas être utilisées.
      <tag><em/points/</tag>
        La représentation braille du caractère local.
        Il peut être spécifié de la même manière que
        l'opérateur <em/points/ de l'instruction <tt/char/.
    </descrip>
  <tag><tt/include/ <em/fichier/ &num; <em/commentaire/</tag>
    Utilisez l'instruction <tt/include/ pour inclure le contenu d'une sous-table de
    texte. Elle est récursive, ce qui signifie que toute sous-table de texte peut
    inclure elle-même une autre sous-table de texte. Prenez soin de vous
    assurer de ne pas créer une "inclusion en boucle".

    <descrip>
      <tag><em/fichier/</tag>
        Le fichier à inclure. Cela peut être un chemin relatif ou absolu. Si c'est
        relatif, il est ancré au répertoire contenant le fichier qui inclut.
    </descrip>
</descrip>

<sect1>Tables d'attributs<label id="table-attributes"><p>
Les fichiers aux noms sous la forme *.atb sont des tables d'attributs et ceux
aux noms sous la forme *.ati sont des sous-tables d'attributs. Ils sont
utilisés quand BRLTTY affiche les
attributs de l'écran au lieu du contenu de l'écran (voir la commande
<ref id="command-DISPMD" name="DISPMD">).
Chacun des huit points braille représente l'un des huit bits d'attributs
<tt>VGA</tt>.
Les tables d'attributs suivantes sont fournies:
<descrip>
  <tag/left_right/
    La colonne à gauche représente les couleurs de premier plan:
    <descrip>
      <tag/Point 1/Bleu
      <tag/Point 2/Vert
      <tag/Point 3/Rouge
      <tag/Point 7/Brillant
    </descrip>
    La colonne à droite représente les couleurs de fond:
    <descrip>
      <tag/Point 4/Bleu
      <tag/Point 5/Vert
      <tag/Point 6/Rouge
      <tag/Point 8/Clignotant
    </descrip>
    Un point est affiché quand son bit d'attribut correspondant est actif.
    C'est la table d'attributs par défaut car c'est la plus
    intuitive. Cependant, l'un de ses problèmes est qu'il est difficile de
    distinguer la différence entre la vidéo normale (noir sur blanc) et inversée
    (blanc sur noir).
  <tag/invleft_right/
    La colonne à gauche représente les couleurs de premier plan: 
    <descrip>
      <tag/Point 1/Bleu
      <tag/Point 2/Vert
      <tag/Point 3/Rouge
      <tag/Point 7/Brillant
    </descrip>
    La colonne à droite représente les couleurs de fond:
    <descrip>
      <tag/Point 4/Bleu
      <tag/Point 5/Vert
      <tag/Point 6/Rouge
      <tag/Point 8/Clignotant
    </descrip>
    Un bit de fond est actif pour générer ses points correspondant, tandis
    qu'un bit de premier plan est inactif pour générer son point correspondant.
    Cette logique non intuitive facilite en fait la lecture de la plupart des
    combinaisons d'attributs communément utilisées.
  <tag/upper_lower/
    Le carré supérieur représente les couleurs de premier plan:
    <descrip>
      <tag/Point 1/Rouge
      <tag/Point 4/Vert
      <tag/Point 2/Bleu
      <tag/Point 5/Brillant
    </descrip>
    Le carré inférieur représente les couleurs d'arrière-plan:
    <descrip>
      <tag/Point 3/Rouge
      <tag/Point 6/Vert
      <tag/Point 7/Bleu
      <tag/Point 8/Clignotant
    </descrip>
    Un point s'affiche quand le bit de l'attribut qui y correspond est actif.
</descrip>
Voir l'option <ref id="options-attributes-table" name="-a"> en ligne de
commande, la ligne <ref id="configure-attributes-table" name="attributes-table">
du fichier de configuration, et l'option de compilation
<ref id="build-attributes-table" name="--with-attributes-table"> pour des
détails concernant l'utilisation et le changement de table
d'attributs.

<sect2>Format des tables d'attributs<p>
Une table d'attributs est une séquence de lignes de commande, avec une
commande par ligne, qui définit comment doit être représenté en braille les
combinaisons des attributs <tt/VGA/. Vous devez utiliser un encodage de caractères
<tt/UTF-8/.
Les espaces blancs (les vides, tabulations) au début d'une ligne, ou avant
et/ou après l'opérateur d'une ligne de commande, sont ignorés.
Les lignes ne contenant que des espaces sont ignorées.
Si le premier caractère non-blanc d'une ligne est "&num;" cette ligne est un
commentaire et est ignorée.

<sect2>Lignes de commande des tables d'attributs<p>
Les lignes de commande suivantes sont fournies:
<descrip>
  <tag><tt>dot</tt> <em>point</em> <em>etat</em> &num; <em>commentaire</em></tag>
    Utilisez l'instruction <tt>dot</tt> pour spécifier ce que représente un point 
    particulier.

    <descrip>
      <tag><em>point</em></tag>
        Le point qui est défini. C'est une seule case allant de 
        <tt>1</tt> à <tt>8</tt> comme défini par la
	<ref id="dots" name="Convention standard du nombre de points brailles">.
      <tag><em>état</em></tag>
        Ce que représente le point. Il peut s'agir:
        <descrip>
          <tag><tt>on</tt></tag>D'un point élevé si l'attribut nommé est actif.
          <tag><tt>off</tt></tag>D'un point enfoncé si l'attribut nommé est inactif.
        </descrip>

        Les noms des bits des attributs sont:
        <descrip>
          <tag/0X01/<tt/bleu premier plan/
          <tag/0X02/<tt/vert premier plan//
          <tag/0X04/<tt/rouge premier plan//
          <tag/0X08/<tt/brillant premier plan//
          <tag/0X10/<tt/fond bleu/
          <tag/0X20/<tt/fond vert/
          <tag/0X40/<tt/fond rouge/
          <tag/0X80/<tt/fond clignotant/
        </descrip>
    </descrip>

    Exemples:
    <itemize>
      <item><tt/dot 1 =fg-red/
      <item><tt/dot 2 &tilde;bg-blue/
    </itemize>

  <tag><tt/include/ <em/fichier/ &num; <em/commentaire/</tag>
    Utilisez la ligne  <tt/include/ pour inclure le contenu d'une sous-table d'attributs. 
    Il est récursif, ce qui signifie que toute sous-table d'attributs peut
    inclure elle-même une autre sous-table d'attributs. Prenez soin de vous
    assurer de ne pas créer une "inclusion en boucle".

    <descrip>
      <tag><em/fichier/</tag>
        Le fichier à inclure. Cela peut être un chemin relatif ou absolu. Si c'est
        relatif, il est ancré au répertoire contenant le fichier qui inclut.
    </descrip>
</descrip>

<sect1>Tables de braille abrégé<label id="table-contraction"><p>
Les fichiers aux noms sous la forme <tt/*.ctb/ sont des tables de braille abrégé 
et ceux aux noms sous la forme <tt/*.cti/ sont des sous-tables de braille abrégé. 
Ils sont utilisés par BRLTTY pour traduire des séquences de caractères à l'écran 
en leurs représentations correspondantes en braille abrégé. 

BRLTTY présente du braille abrégé si:
<itemize>
  <item>
    Une table de braille abrégé a été sélectionnée.
    Voir l'option <ref id="options-contraction-table" name="-c"> en ligne
    de commande et la ligne
    <ref id="configure-contraction-table" name="contraction-table"> du
    fichier de configuration pour des détails.
  <item>
    La fonction braille 6 points a été activée. Voir la commande
    <ref id="command-SIXDOTS" name="SIXDOTS"> et la préférence
    <ref id="preference-text-style" name="Text Style"> pour des détails.
</itemize>
Cette possibilité n'est pas disponible si vous avez spécifié l'option de
compilation
<ref id="build-contracted-braille" name="--disable-contracted-braille">.

Les tables d'abrégé suivantes sont fournies:

<table loc="h">
  <tabular ca="ll">
    Nom|Langue@
    &ContractionTables
 </tabular>
</table>
Voir l'option <ref id="options-contraction-table" name="-c"> en ligne de commande
et la ligne <ref id="configure-contraction-table" name="contraction-table"> du fichier de 
configuration pour des détails sur la façon d'utiliser une table d'abrégé.

<sect2>Format des tables de braille abrégé<p>
Une table de braille abrégé est une séquence de lignes de commande, avec une
commande par ligne, qui définit comment les séquences de caractères vont être
représentées en braille. Vous devez utiliser un encodage de caractères
<tt/UTF-8/.

Les espaces blancs (les vides, tabulations) au début d'une ligne, ou avant
et/ou après l'opérateur d'une ligne de commande, sont ignorés.
Les lignes ne contenant qu'à des espaces sont ignorées.
Si le premier caractère non-blanc d'une ligne est "&num;" cette ligne est un
commentaire et est ignorée.

Le format d'une entrée de table de braille abrégé est:
<tscreen><em/directive/ <em/opérateur/ ... [<em/commentaire/]</tscreen>
Chaque ligne a un nombre d'opérateurs spécifique.
Tout texte au-delà du dernier opérateur d'une ligne est interprété comme un commentaire.
L'ordre des entrées à l'intérieur de la table de braille abrégé est, en général, selon la
convenance de son/ses mainteneur(s).
Une entrée qui définit une entité, comme <tt/class/,
doit précéder toutes les références de cette entité.

Les entrées qui correspondent à des séquences de caractères 
sont automatiquement réorganisées de la plus longue à la plus courte
afin que des correspondances plus longues soient toujours préférées.
Si plus d'une entrée correspond à la même séquence de caractères, 
leur organisation d'origine dans la table est maintenue. 
Ainsi, la même séquence peut être traduite différemment dans des circonstances
différentes. 

<sect2>Opérateurs des tables de braille abrégé<p>
<descrip>
  <tag><em/characters/</tag>
    Le premier opérateur d'une séquence de caractères correspondant à une ligne
    est la séquence de caractères à laquelle elle doit correspondre.
    Chaque caractère dans la séquence peut être:
    <itemize>
      <item>
            Tout caractère différent d'un antislash (barre oblique inversée) ou d'un caractère blanc.
          <item>
            Un caractère spécial précédé d'une barre oblique inversée.
            Ce sont:
            <descrip>
            - <tag/\b/Le caractère Effacement
            - <tag/\f/Le caractère formfeed
            - <tag/\n/Le caractère Nouvelle ligne.
            - <tag/\o&num;&num;&num;/La représentation octale à 3 chiffres d'un caractère.
            - <tag/\r/Le caractère retour chariot
            - <tag/\s/Le caractère Espace
            - <tag/\t/Le caractère Tab horizontale
            - <tag/\u&num;&num;&num;&num;/La représentation hexadécimale à quatre chiffres d'un caractère.
            - <tag/\U&num;&num;&num;&num;&num;&num;&num;&num;/La représentation hexadécimale à huit chiffres d'un caractère.
            - <tag/\v/Le caractère tab verticale
            - <tag/\x&num;&num;/La représentation hexadécimale à deux chiffres d'un caractère.
            - <tag/\X&num;&num;/... (la casse du X et des chiffres n'a pas de signification)
            - <tag/\&num;/Signe d'un nombre littéral.
            - <tag/\&lt;name&gt;/Le nom Unicode d'un caractère (utilisez _ pour l'espace).
            - <tag/\\/Un antislash littéral.
            </descrip>
        </itemize>
  <tag><em/representation/</tag>
    Le second opérateur de ces lignes correspondant à la séquence de caractères
    qui en a une est la représentation braille de la séquence.
    Chaque cellule braille est spécifiée comme une séquence d'un à huit numéros
    de points. Un numéro de point est un chiffre compris entre <tt/1/-<tt/8/ 
    tels que définis par la
    <ref id="dots" name="Standard Braille Dot Numbering Convention"> (convention standard
    de numérotation de points brailles). Le numéro de point spécial <tt/0/
    est reconnu quand il n'est pas entouré de parenthèses, et il signifie aucun
    point; il ne peut pas être utilisé parallèlement à un autre numéro de point.
</descrip>

<sect2>Opcodes<label id="contraction-opcodes"><p>
Un opcode est un mot-clé qui dit au traducteur comment interpréter les
opérateurs. Les opcodes sont groupés ici par leur fonction.

<sect3>Administration de la table<label id="contraction-opcodes-administration"><p>
Ces opérateurs facilitent l'écriture des tables de braille abrégé.
Ils n'ont pas d'effet direct sur la traduction de caractère.
<descrip>
  <tag><tt>include</tt> <em>chemin</em><label id="contraction-opcode-include"></tag>
    Inclut le contenu d'un autre fichier.
    L'inclusion peut se faire à n'importe quel niveau.
    Les chemins relatifs sont déterminés par rapport au répertoire du fichier inclu.
  <tag><tt>locale</tt> <em>locale</em><label id="contraction-opcode-locale"></tag>
    Définit la locale pour l'interprétation d'un caractère (minuscule,
    majuscule, numérique, etc). La locale peut être définie comme:
    <descrip>
      <tag><em>langue</em>[<tt>_</tt><em>pays</em>][<tt>.</tt><em>charset</em>][<tt>@</tt><em>modifier</em>]</tag>
        La composante <em>langue</em> est requise et devrait être un code de
	langue à deux lettres <tt>ISO-639</tt>.
        La composante <em>pays</em> est facultative et devrait être un code de
	pays à deux lettres <tt>ISO-3166</tt>.
        La composante <em>charset</em> est optionnelle et devrait être le nom
	d'une table de caractères, comme <tt>ISO-8859-1</tt>.
      <tag>C</tag>
        7-bit ASCII.
      <tag>-</tag>
        Aucune locale.
    </descrip>
    La dernière spécification de locale s'applique à toute la table. Si
    vous n'utilisez pas cet opcode, la locale <tt>C</tt> est utilisée.
</descrip>

<sect3>Définition d'un symbole spécial<label id="contraction-opcodes-symbols"><p>
Ces opcodes définissent les caractères spéciaux qui doivent être insérés dans
le texte braille afin de le rendre plus clair.
<descrip>
  <tag><tt>capsign</tt> <em>points</em><label id="contraction-opcode-capsign"></tag>
    Le symbole qui met en majuscule une seule lettre.
  <tag><tt>begcaps</tt> <em>points</em><label id="contraction-opcode-begcaps"></tag>
    Le symbole qui commence un bloc de lettres en majuscule à l'intérieur d'un
    mot.
  <tag><tt>endcaps</tt> <em>points</em><label id="contraction-opcode-endcaps"></tag>
    Le symbole qui termine un bloc de lettres en majuscules à l'intérieur
    d'un mot.
  <tag><tt>letsign</tt> <em>points</em><label id="contraction-opcode-letsign"></tag>
    Le symbole qui désigne une lettre ne faisant pas partie du mot.
  
  <tag><tt/numsign/ <em/points/<label id="contraction-opcode-numsign"></tag>  
    Le symbole marquant le début d'un nombre.
  <tag><tt>lastlargesign</tt> <em>points</em><label id="contraction-opcode-numsign"></tag>
    Traduit les caractères quel que soit l'endroit où ils apparaissent.
    Supprime les espaces qui les précède si le mot précédent a été marqué
    par le code "largesign".
</descrip>

<sect3>Traduction de caractère<label id="contraction-opcodes-translation"><p>
Ces opcodes définissent les représentations braille des séquences de caractères.
Chacun d'eux définit une entrée à l'intérieur de la table de braille abrégé.
Ces entrées peuvent être définies dans n'importe quel ordre, sauf, comme
remarqué ci-dessous, lorsqu'elles définissent des représentations
alternatives de la même séquence de caractères.

Chacun de ces opcodes a un opérateurs <em>caractères</em> (qui doit être
spécifié comme une <em>chaîne</em>), et une condition de configuration dirigeant
son utilisation.
Le texte est traduit strictement de la gauche vers la droite, caractère par
caractère, avec l'entrée la plus acceptable pour chaque position utilisée.
S'il y a plus d'une entrée acceptable pour une position donnée, celle ayant la
chaîne de caractères la plus longue est utilisée. S'il y a plus d'une
entrée acceptable pour la même chaîne de caractères, celle définie le plus
au début de la table est utilisée (c'est la seule dépendance de l'ordre).

Beaucoup de ces opcodes ont un opérateur <em>points</em> qui définit la
représentation braille de son opérateur <em>caractères</em>. Il peut
être aussi spécifié comme un signe égal (<tt>=</tt>), au quel cas il
signifie l'une des deux choses. Si l'entrée est pour un seul caractère,
cela signifie que la représentation du braille informatique sélectionnée
(voir l'option <ref id="options-text-table" name="-t"> en ligne de
commande et la ligne <ref id="configure-text-table" name="text-table">
du fichier de configuration) de ce caractère doit être utilisée. Si
c'est pour une séquence multi-caractères, la représentation par défaut
de chaque caractère (voir <ref id="contraction-opcode-always"
name="always">) dans une séquence doit être utilisée.

Certains termes spéciaux sont utilisés à l'intérieur des descriptions de ces
opcodes.
<descrip>
  <tag>word</tag>
    Une séquence maximale d'une ou plusieurs lettres à la suite.
</descrip>

Enfin, voici maintenant la description des opcodes eux-mêmes:
<descrip>
  <tag><tt>literal</tt> <em>caractères</em><label id="contraction-opcode-literal"></tag>
    Traduit ce qui est lié à l'espace et qui contient une séquence de
    caractères en braille informatique (voir l'option
    <ref id="options-text-table" name="-t"> en ligne de commande et la ligne
    <ref id="configure-text-table" name="text-table"> du fichier de
     configuration).
  <tag><tt>replace</tt> <em>caractères</em> <em>caractères</em><label id="contraction-opcode-replace"></tag>
    Remplace la première valeur des caractères, quel que soit l'endroit où ils
    apparaissent, par la seconde. Les caractères remplacés ne sont pas
    réinsérés.
  <tag><tt>always</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-always"></tag>
    Traduit les caractères quel que soit l'endroit où ils apparaissent.
    S'il n'y a qu'un caractère, alors, en plus, définit la représentation par
    défaut de ce caractère.
  <tag><tt>repeatable</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-repeated"></tag>
    Traduit les caractères quel que soit l'endroit où ils apparaissent. Ignore toute
    répétition immédiate de la même séquence.
  <tag><tt>largesign</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-largesign"></tag>
    Traduit les caractères quel que soit l'endroit où ils apparaissent. Supprime les
    espaces entre les mots qui se suivent et qui sont gérés par cet opcode.
  <tag><tt>word</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-word"></tag>
    Traduit les caractères s'ils forment un mot.
  <tag><tt>joinword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-joinword"></tag>
    Traduit les caractères s'ils forment un mot. Supprime l'espace suivant si
    le premier caractère qui le suit est une lettre.
  <tag><tt>lowword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-lowword"></tag>
    Traduit les caractères s'ils forment un mot lié à un espace. 
  <tag><tt>contraction</tt> <em>caractères</em><label id="contraction-opcode-contraction"></tag>
    Fait précéder les caractères d'un signe-lettre (voir
    <ref id="contraction-opcode-letsign" name="letsign">) s'ils forment un mot.
  <tag><tt>sufword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-sufword"></tag>
    Traduit les caractères s'ils forment soit un mot, soit s'ils sont au
    début d'un mot.
  <tag><tt>prfword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-prfword"></tag>
    Traduit les caractères s'ils forment soit un mot, soit s'ils sont à la
        fin d'un mot.
  <tag><tt>begword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-begword"></tag>
    Traduit les caractères s'ils sont au début d'un mot.
  <tag><tt>begmidword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-begmidword"></tag>
    Traduit les caractères s'ils sont au début ou au milieu d'un mot.
  <tag><tt>midword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-midword"></tag>
    Traduit les caractères s'ils sont au milieu d'un mot.
  <tag><tt>midendword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-midendword"></tag>
    Traduit les caractères s'ils sont au milieu ou à la fin d'un mot.
  <tag><tt>endword</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-endword"></tag>
    Traduit les caractères s'ils sont à la fin d'un mot.
  <tag><tt>prepunc</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-prepunc"></tag>
    Traduit les caractères s'ils font partie de la ponctuation au début d'un
    mot.
  <tag><tt>postpunc</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-postpunc"></tag>
    Traduit les caractères s'ils font partie de la ponctuation à la fin d'un
    mot.
  <tag><tt>begnum</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-begnum"></tag>
    Traduit les caractères s'ils sont au début d'un nombre.
  <tag><tt>midnum</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-midnum"></tag>
    Traduit les caractères s'ils sont au milieu d'un nombre.
  <tag><tt>endnum</tt> <em>caractères</em> <em>points</em><label id="contraction-opcode-endnum"></tag>
    Traduit les caractères s'ils sont à la fin d'un nombre.
</descrip>

<sect3>Classes de caractère<label id="contraction-opcodes-classes"><p>
Ces opcodes définissent et utilisent des classes de caractères. Une classe de
caractères associe un type de caractère à un nom. Le nom se réfère alors à
n'importe quel caractère à l'intérieur de la classe. Un caractère peut
appartenir à plus d'une classe.

Les classes de caractère suivantes sont automatiquement prédéfinies, basées sur
la locale sélectionnée.
<descrip>
  <tag>digit</tag>
    Caractères numériques.
  <tag>letter</tag>
    Les caractères alphabétiques majuscule ou minuscule.
    Certaines locales ont des lettres supplémentaires qui ne sont ni en majuscule
    ni en minuscule.
  <tag>lowercase</tag>
    Les caractères alphabétiques minuscules.
  <tag>punctuation</tag>
    Caractères imprimables qui ne sont ni des espaces ni alphanumériques.
  <tag>space</tag>
    Caractères d'espacement.
    Dans la locale par défaut, il s'agit de: espace, tabulation horizontale, tabulation
    verticale, retour chariot, nouvelle ligne, saut de page.
  <tag>uppercase</tag>
    Caractères alphabétiques en majuscules.
</descrip>

Les opcodes qui définissent et utilisent des classes de caractères sont:
<descrip>
  <tag><tt>class</tt> <em>nom</em> <em>caractères</em><label id="contraction-opcode-class"></tag>
    Définit une nouvelle classe de caractère. L'opérateur <em>caractères</em>
    doit être spécifié comme une <em>chaîne</em>. Une classe de caractère ne peut
    pas être utilisée tant qu'elle n'est pas définie.
  <tag><tt>after</tt> <em>class</em> <em>opcode</em> ...<label id="contraction-opcode-after"></tag>
    L'opcode spécifié est assez contraint dans le sens où la séquence de
    caractères adéquat doit être immédiatement précédée par un caractère
    appartenant à la classe spécifiée.
    Si vous utilisez plus d'une fois cet opcode sur la même ligne, l'union des
    caractères de toute la classe est utilisée.
  <tag><tt>before</tt> <em>class</em> <em>opcode</em> ...<label id="contraction-opcode-before"></tag>
    L'opcode spécifié est assez contraint dans le sens où la séquence de
    caractères adéquat doit être immédiatement suivie par un caractère
    appartenant à la classe spécifiée.
    Si vous utilisez plus d'une fois cet opcode sur la même ligne, l'union des
    caractères de toute la classe est utilisée.
</descrip>

<sect1>Tables de touches<label id="table-key"><p>
Les fichiers aux noms ayant la forme <tt/*.ktb/ sont des tables de touches, et ceux
aux noms ayant la forme <tt/*.kti/ sont des sous-tables de touches.
Ils sont utilisés par BRLTTY pour associer des combinaisons de touches
de l'afficheur braille et du clavier à des commandes BRLTTY.

Les noms de fichier de table de touches de l'afficheur braille commencent par
<tt/brl-/<em/xx/<tt/-/", où <em/xx/ représente le
<ref id="drivers" name="code d'identification de pilote"> à deux lettres. Le reste
du nom identifie le(s) modèle(s) pour le(s)quel(s) la table de touches est
utilisée.

Les noms de fichier de table de touches du clavier commencent par <tt/kbd-/.
Le reste du nom décrit le type de clavier pour lequel a été conçue la table
de touches.

Les tables de touches suivantes sont fournies:
<descrip>
  <tag/braille/associations pour les claviers braille
  <tag/desktop/associations pour les claviers complets
  <tag/keypad/associations pour la navigation à partir du pavé numérique
  <tag/laptop/associations pour les claviers sans pavé numérique
  <tag/sun_type6/associations pour les claviers Sun Type 6
</descrip>
      Voir l'option <ref id="options-key-table" name="-k"> en ligne de commande
      et la ligne 
      <ref id="configure-key-table" name="key-table"> du fichier de
      configuration pour plus de détails concernant la manière de sélectionner
      une table de touches de clavier.
      
      <sect2>Format des tables de touches<p>
Une table de touches consiste en une séquence d'instructions, une par ligne,
qui définit comment les touches et les combinaisons de touches seront interprétées.
Vous devez utiliser l'encodage <tt/UTF-8/.
Un blanc (espaces, tabs) tant au début de la ligne qu'aavant et/ou après n'importe quel opérateur,
est ignoré.

Les lignes ne contenant que des blancs sont ignorées.
Si le premier caractère non blanc d'une ligne est un nombre ("&num;"), cette ligne est
un commentaire et est ignorée.

L'ordre de résolution de chaque appui de touche/événement qui se produit
est le suivant:
<enum>
  <item>
    Un appui sur une touche de raccourci ou une action définie dans le contexte actuel.
    Voir la ligne 
    <ref id="key-table-hotkey" name="hotkey">
    pour des détails.
  <item>
    Une combinaison de touches définie dans le contexte actuel.
    Voir la ligne
    <ref id="key-table-bind" name="bind">
    pour des détails.
  <item>
    Une commande du clavier braille définie dans le contexte actuel.
    Voir les lignes
    <ref id="key-table-map" name="map">
    et
    <ref id="key-table-superimpose" name="superimpose">d
    pour des détails.
  <item>
    Une combinaison de touches définie dans le contexte par défaut.
    Voir la ligne
    <ref id="key-table-bind" name="bind">
    pour des détails.
</enum>

      Les lignes suivantes sont fournies:

<sect3>La ligne Assign<label id="key-table-assign"><p>
Crée ou met à jour une variable associée au niveau include actuel.
La variable est visible aux niveaux include actuel et inférieur, mais pas aux
niveaux include supérieurs.

<tt/assign/ <em/variable/ [<em/valeur/]
      <descrip>
 <tag><em/variable/</tag>
    Le nom de la variable.
    Si la variable n'existe pas déjà au niveau include actuel, elle sera créée.
  <tag><em/valeur/</tag>
    La valeur qui sera associée à la variable.
    Si on ne la fournit pas, une valeur zéro (null) est affectée.
</descrip>

La séquence d'échappement \{variable} est remplacée par la valeur de la
variable nommée dans les accolades. La variable doit être définie au niveau 
include actuel ou supérieur.

Exemples:
<itemize>
  <item><tt/assign nullValue/
  <item><tt/assign ReturnKey Key1/
  <item><tt/bind \{ReturnKey} RETURN/
</itemize>

<sect3>La ligne Bind<label id="key-table-bind"><p>
Définit la commande qui est BRLTTY est exécutée quand on appuie sur une ou plusieurs
combinaisons de touches particulières.
L'association est définie dans le contexte actuel.

        <tt/bind/ <em/touches/ <em/commande/
            <descrip>
              <tag><em/touches/</tag>
                La combinaison de touches à associer.
               C'est une séquence d'un ou plusieurs noms de touches séparés par 
               des signes plus (<tt/+/). Le nom de touche à la fin (ou seulement)
               peut être éventuellement précédé d'un point d'exclamation
               (<tt/!/). Vous pouvez appuyer sur les touches dans
               n'importe quel ordre sauf si le nom de la touche à la fin est
               précédé d'un point d'exclamation, alors on doit appuyer dessus
               en dernier.
               Le préfixe du point d'exclamation signifie que la commande est
               exécutée dès qu'on appuie sur cette touche. S'il n'est pas
               utilisé, la commande est exécutée dès qu'on effectue
               une des touches.
              <tag><em/commande/</tag>
                Le nom d'une commande BRLTTY. Un ou plusieurs modificateurs
                peuvent éventuellement être associé au nom de la commande en 
                utilisant un signe plus (<tt/+/) comme séparateur.
                <itemize>
      <item>
        Pour les commandes qui activent/désactivent une fonctionnalité:
         <itemize>
           <item>
            Si vous spécifiez le modificateur <tt/+on/, la fonctionnalité est
            alors activée.
          <item>
            Si vous spécifiez le modificateur <tt/+off/, la fonctionnalité est
            alors désactivée.
          <item>
            Si vous ne spécifiez ni <tt/+on/ ni <tt/+off/, l'état de la fonctionnalité
            est activable/désactivable en bascule.
</itemize>
      <item>
        Pour les commandes qui déplacent la plage braille:
        <itemize>+          <item>
            Si vous spécifiez le modificateur <tt/+route/, si nécessaire,
            le curseur est automatiquement routé afin d'être toujours visible
            sur l'afficheur braille.
        </itemize>
      <item>
        Pour les commandes qui déplacent la plage braille vers une ligne
        spécifique de l'écran:
        <itemize>
          <item>
            Si vous spécifiez le modificateur <tt/+toleft/,
            la plage braille est alors également déplacée au début de cette
            ligne.
          <item>
            Si vous spécifiez le modificateur <tt/+scaled/, l'ensemble de
            touches associé à la commande est interprété comme si c'était une
            barre de défilement. Si vous ne le spécifiez pas, il y a une
            correspondance une à une entre les touches et les lignes.
        </itemize>
      <item>
        Pour les commandes qui demandent un complément (offset):
        <itemize>
          <item>
            Vous pouvez spécifier le modificateur +<em/offset/, où
            <em/offset/ est un entier non négatif.
            Si vous ne le fournissez pas, <tt/+0/ est supposé.
        </itemize>
    </itemize>
</descrip>

Exemples:
<itemize>
  <item><tt/bind Key1 CSRTRK/
  <item><tt/bind Key1+Key2 CSRTRK+off/
  <item><tt/bind Key1+Key3 CSRTRK+on/
  <item><tt/bind Key4 TOP/
  <item><tt/bind Key5 TOP+route/
  <item><tt/bind VerticalSensor GOTOLINE+toleft+scaled/
  <item><tt/bind Key6 CONTEXT+1/
</itemize>

<sect3>La ligne Context<label id="key-table-context"><p>
Définit des façons alternatives d'interpréter certains événements et/ou
combinaisons de touches. Un contexte contient des définitions créées avec les
lignes 
<ref id="key-table-bind" name="bind">, 
<ref id="key-table-hotkey" name="hotkey">,
<ref id="key-table-map" name="map">,
et
<ref id="key-table-superimpose" name="superimpose">.

<tt/context/ <em/identificateur/ [<em/titre/]
<descrip>
  <tag><em/identificateur/</tag>
    À l'intérieur du contexte sous-jacent dans lequel doivent être créées les définitions.
    Cela peut être:

<itemize>
      <item>
        Un de ces noms spéciaux:
        <descrip>
          <tag/default/
            Le contexte par défaut. Si une combinaison de touches n'a pas été définie
            dans le contexte actuel, c'est alors sa définition dans le contexte
            par défaut qui sera utilisée. Cela ne s'applique qu'aux définitions
            créées par la ligne
            <ref id="key-table-bind" name="bind">.
          <tag/menu/
            Ce contexte est utilisé quand on est à l'intérieur du menu des
            préférences de BRLTTY.
        </descrip>
      <item>
        Un entier compris entre <tt/0/ et <tt/252/.
        Le contexte <tt/0/ est une façon alternative de se référer au contexte
        par défaut. Vous devriez éviter les numéros de contexte supérieurs car 
        le numéro le plus élevé autorisé est susceptible de changer sans signalement,
        si, par exemple, on ajoute davantage de contextes nommés.

    </itemize>

  <tag><em/titre/</tag>
    Une description lisible par un humain du  contexte.
    Il peut contenir des espaces et vous devriez utiliser les conventions de
    mise en majuscules standards. 
    Cet opérande est facultatif. Si on le fournit lors de la sélection d'un
    contexte ayant déjà un titre, les deux doivent correspondre.
    Les contextes nommés ont déjà des titres internes attribués.
    
    Les contextes numériques sont créés au départ sans titres.
</descrip>

Un contexte est créé la première fois qu'il est sélectionné.

Il peut être ensuite sélectionné autant de fois que nécessaire.

Toutes les définitions sous-jacentes jusqu'à la prochaine ligne
<ref id="key-table-context" name="context"> ou à la fin du niveau include
actuel sont créées à l'intérieur du contexte sélectionné.

Le contexte initial du premier niveau de la table de touches est <tt/default/.
Le contexte initial d'une sous-table de touches incluse est le contexte qui
a été sélectionné lorsqu'il a été inclu.

Les changements de contexte dans les sous-tables de touches incluses n'affectent
pas le contexte de la table de touches qui inclut ou de la sous-table.

Si un contexte a un titre (tous les contextes nommés et les contextes numériques 
pour lesquels on a fourni l'opérande <em/title/), il demeure en place.

Quand un événement de touches entraîne l'activation d'un contexte permanent,
ce contexte reste actuel jusqu'à ce qu'un événement de touches subséquent
entraîne l'activation d'un contexte permanent différent. 

Si un contexte n'a pas de titre (les contextes numériques pour lesquels on n'a
pas fourni l'opérande <em/title/), il est temporaire.

Quand un événement de touche provoque l'activation d'un contexte temporaire,
ce contexte n'est utilisé que pour interpréter le tout prochain événement de
touche.

Exemples:
<itemize>
  <item><tt/context menu/
  <item><tt/context 1 Braille Input/
  <item><tt/context 2/
</itemize>

<sect3>La ligne Hide<label id="key-table-hide"><p>
Spécifie si des définitions (voir les lignes
<ref id="key-table-bind" name="bind">,
<ref id="key-table-hotkey" name="hotkey">,
<ref id="key-table-map" name="map">,
et
<ref id="key-table-superimpose" name="superimpose">) et les remarques (voir
la ligne <ref id="key-table-note" name="note">) sont incluses ou pas 
dans le texte d'aide de la table de touches.
 
<tt/hide/ <em/state/
<descrip>
  <tag><em/state/</tag>
    Un de ces mots-clés:
     <descrip>
      <tag/on/Elles sont exclues.
      <tag/off/Elles sont incluses.
     </descrip>
</descrip>

L'état spécifié s'applique à toutes les définitions et les notes qui en découlent
jusqu'à la prochaine ligne <tt/hide/ ou jusqu'à la fin du niveau include actuel.
L'état initial du premier niveau de la table de touches est <tt/off/.
L'état initial d'une sous-table de touches incluse est l'état qui a été
sélectionné quand elle a été incluse. 

Les changements d'état à l'intérieur des sous-tables de touches incluses
n'affectent pas l'état de la table de touche ou de la sous-table qui inclut.

Exemples:
<itemize>
  <item><tt/hide on/
</itemize>

<sect3>La ligne Hotkey<label id="key-table-hotkey"><p>
Associe l'appui ou la survenance d'un événement d'une touche spécifique
à deux commandes BRLTTY distinctes.

Les associations sont définies dans le contexte actuel.

<tt/hotkey/ <em/touche/ <em/appui/ <em/effectuer/
<descrip>
  <tag><em/touche/</tag>
    Le nom de la touche qui sera associée.
  <tag><em/appui/</tag>
    Le nom de la commande BRLTTY qui sera exécutée à chaque fois qu'on appuiera
    sur la touche. 

  <tag><em/Effectuer/</tag>
    Le nom de la commande BRLTTY qui sera exécutée à chaque fois qu'on effectuera
    la touche. 
</descrip>

On peut coller des modificateurs aux noms de commande.

Voir l'opérande <em/command/ de la ligne 
<ref id="key-table-bind" name="bind"> pour des
détails.

Spécifiez <tt/NOOP/ si aucune commande ne sera exécutée.
Spécifier <tt/NOOP/ pour deux commandes désactive la touche dans les faits.

Exemples:
<itemize>
  <item><tt/hotkey Key1 CSRVIS+off CSRVIS+on/
  <item><tt/hotkey Key2 NOOP NOOP/
</itemize>

<sect3>La ligne IfKey<label id="key-table-ifkey"><p>
Applique une ligne de la table de touches à la condition que
le périphérique ait une touche particulière.

<tt/ifkey/ <em/touche/ <em/ligne/
<descrip>
  <tag><em/touche/</tag>
    Le nom de la touche dont la disponibilité doit être testée.
  <tag><em/ligne/</tag>
    La ligne de la table de touches qui doit être appliquée sous condition.
</descrip>

Exemples:
<itemize>
  <item><tt/ifkey Key1 ifkey Key2 bind Key1+Key2 HOME/
</itemize>

<sect3>La ligne Include<label id="key-table-include"><p>
Exécute les lignes à l'intérieur d'une sous-table de touches.

Cela est récursif, ce qui signifie que n'importe quelle table de touches
peut s'inclure elle-même dans une autre sous-table.

Il faut faire attention à bien s'assurer qu'une "boucle d'inclusion" ne soit
pas créée.

<tt/include/ <em/fichier/
<descrip>
  <tag><em/file/</tag>
    La sous-table de touche qui doit être incluse.
    Il peut s'agir d'un chemin soit relatif soit absolu.
    S'il est relatif, il est ancré au répertoire contenant la table de touches
    qui inclut ou la sous-table.
</descrip>

Exemples:
<itemize>
  <item><tt/include common.kti/
  <item><tt>include /chemin/vers/mes/touches.kti</tt>
</itemize>

<sect3>La ligne Map<label id="key-table-map"><p>
Fait correspondre une touche à une fonction de clavier braille.
La correspondance est définie à l'intérieur du contexte actuel.

<tt/map/ <em/touche/ <em/fonction/
<descrip>
  <tag><em/touche/</tag>
    Le nom de la touche qui doit être associée. Vous pouvez associer plus d'une
    touche à la même fonction de clavier braille.
  <tag><em/fonction/</tag>
    Le nom de la fonction de clavier braille. Cela peut être un des
    mots-clés suivants:
    <descrip>
      <tag/DOT1/Le point braille standard en haut à gauche.
      <tag/DOT2/Le point braille standard au milieu à gauche
      <tag/DOT3/Le point braille standard en bas à gauche.
      <tag/DOT4/Le point braille standard en haut à droite.
      <tag/DOT5/Le point braille standard au milieu à droite.
      <tag/DOT6/Le point braille standard en bas à droite.
      <tag/DOT7/Le point braille informatique en bas à gauche.
      <tag/DOT8/Le point braille informatique en bas à droite.
      <tag/SPACE/La barre d'espace.
      <tag/SHIFT/La touche shift.
      <tag/UPPERCASE/
        Si on doit entrer une lettre minuscule, la traduit alors dans son
        équivalent en majuscule.
      <tag/CONTROL/La touche contrôle.
      <tag/META/La touche alt gauche.
    </descrip>
</descrip>

Si une combinaison de touches ne consiste qu'en des touches qui ont été
associées à des fonctions du clavier braille, et si ces fonctions, lorsqu'elles
sont combinées, constituent une commande de clavier braille valide, la commande
est alors exécutée dès que les touches sont utilisées.
Une commande de clavier braille valide doit inclure soit n'importe quelle
combinaison de points, soit la barre d'espace (mais pas les deux).
Si on inclut au moins un point braille, les fonctions du clavier braille
spécifiée par les lignes
<ref id="key-table-superimpose" name="superimpose">
dans le même contexte sont aussi incluses implicitement.

Exemples:
<itemize>
  <item><tt/map Key1 DOT1/
</itemize>

<sect3>La ligne Note<label id="key-table-note"><p>

Ajoute une explication lisible par un humain au texte d'aide de la table de
touches. 

Les remarques sont utilisées en général, par exemple, pour décrire la place,
les tailles et les formes des touches d'un périphérique.

<tt/note/ <em/texte/
<descrip>
  <tag><em/texte/</tag>
    L'explication qui doit être ajoutée.
    Elle peut contenir des espaces et devrait être grammaticalement correcte.
</descrip>

Chaque remarque comporte exactement une ligne de texte d'explication.
Le grand espace est ignoré donc on ne peut spécifier l'indentation.

Il n'y a pas de limite au nombre de remarques que vous pouvez spécifier.
Toutes sont regroupées et présentées dans un seul bloc au début du texte d'aide
de la table de touches.

Exemples:
<itemize>
  <item><tt/note Key1 est la touche ronde tout à gauche de la partie frontale./
</itemize>

<sect3>La ligne Superimpose<label id="key-table-superimpose"><p>
Inclut implicitement une fonction de clavier braille à chaque fois qu'une
commande de clavier braille d'au moins un point esst exécutée.

L'inclusion implicite est définie dans le contexte actuel.

Vous pouvez spécifier n'importe quel numéro parmi elles.

<tt/superimpose/ <em/fonction/
<descrip>
  <tag><em/fonction/</tag>
    Le nom de la fonction de clavier braille. Voir l'opérande <em/function/
    de la ligne <ref id="key-table-map" name="map"> pour des détails.
</descrip>

Exemples:
<itemize>
  <item><tt/superimpose DOT7/
</itemize>

<sect3>La ligne Title<label id="key-table-title"><p>
Fournit un résumé lisible par un humain de l'objectif de la table de touches.

<tt/title/ <em/texte/
<descrip>
  <tag><em/texte/</tag>
   Un résumé d'une ligne de la raison pour laquelle est utilisée la table de 
   touches. Il peut contenir des espaces et vous devriez utiliser les
   conventions de mise en majuscules standards.

</descrip>

Le titre d'une table de touches ne peut être spécifié qu'une fois.

Exemples:
<itemize>
  <item><tt/title Bindings for Keypad-based Navigation/
</itemize>

<sect2>Propriétés du clavier<label id="keyboard-properties"><p>
Par défaut, tous les claviers sont pris en charge. 
Un sous-paramètre des claviers peut être sélectionné en spécifiant une ou plusieurs des
propriétés suivantes (voir l'option <ref id="options-keyboard-properties" name="-K">
en ligne de commande et la ligne <ref id="configure-keyboard-properties" name="keyboard-properties"> du fichier de configuration):
<descrip>
<tag/type/
Le type de bus, spécifié en tant que mots-clés  parmi ceux suivants:
<tt/any/,
<tt/ps2/,
<tt/usb/,
<tt/bluetooth/.
<tag/vendor/
L'identificateur du vendeur, spécifié comme une entier non-signé 16-bit.
<tag/product/
L'identificateur du produit, spécifié comme une entier non signé 16 bits.
</descrip>

Les identificateurs du vendeur et du produit peuvent être spécifiés en décimal
(pas de préfixe), octal (préfixé par <tt/0/), ou hexacécimal (préfixé par <tt/0x/).
La spécification de <tt/0/ signifie que cela correspond à toute valeur (comme si
la propriété n'était pas spécifiée).
