  The Linux Keyboard HOWTO
  Andries Brouwer, aeb@cwi.nl
  v2.1, 8 Novembre 1995 - version francaise Bruno Viaris

  Ce  document  traite  de l'utilisation du clavier, de la console et de
  caracteres non ASCII sous Linux.

  11..  PPrrooggrraammmmeess uuttiilleess

  Les paquetages suivants contiennent des programmes en rapport avec  le
  clavier ou la console.

  kbd-0.90.tar.gz  contient  loadkeys,  dumpkeys,  showkey, setmetamode,
  setleds,  setfont,  showfont,  mapscrn,  kbd_mode,  chvt,  resizecons,
  disalloc, getkeycodes, setkeycodes.

  util-linux-2.5 contient setterm, kbdrate.

  shellutils-1.8 (ou stty.tar.gz) contient stty.

  open-1.1.tgz contient open. (Voir aussi dynamic-vc-1.1.tar.gz.)

  SVGATextMode-0.9.tar.gz contient SVGATextMode.

  La distribution standard de X contient xmodmap, xset, kbd_mode.  (Voir
  aussi X386keybd(1).)

  22..  LLee ccllaavviieerr -- ggeenneerraalliitteess

  Quand on appuie sur une  touche,  le  controleur  clavier  envoie  des
  scancodes   au   pilote  clavier  du  noyau.  Certains  claviers  sont
  programmables, mais en general les scancodes  sont  fixes.   Quand  le
  pilote  clavier est en _m_o_d_e _s_c_a_n_c_o_d_e (dit aussi _m_o_d_e _r_a_w), le noyau se
  contente de transmettre les codes tels quels a l'application, c'est ce
  qui  se  passe  sous  X.  Sinon  le flux de scancodes est decompose en
  keycodes correspondant a l'appui ou au relachement d'une  touche.  (Le
  simple   fait  d'appuyer  sur  une  touche  peut  produire  jusqu'a  6
  scancodes, reduits ici en un seul keycode.) Si le pilote  clavier  est
  en _m_o_d_e _k_e_y_c_o_d_e (ou _m_o_d_e _m_e_d_i_u_m_r_a_w), l'application recoit les keycodes
  (ce mode est utilise, par exemple, par showkey).  Sinon, les  keycodes
  sont  traduits  d'apres une table (keymap), ensuite, soit un caractere
  (ou un chaine)  est  envoye  a  l'application,  soit  une  action  est
  declenchee.  (Exemple: si on appuie et relache la touche q, le clavier
  envoie les scancodes 0x1E et 0x9E, ce qui est converti en keycodes  30
  et  158,  puis en la valeur 113, qui est le code ASCII ou Latin-1 de q
  (avec un clavier Azerty et une  keymap  adaptee).   Si  on  appuie  et
  relache  la  touche  Suppr,  le clavier envoie les scancodes 0xE0 0x53
  0xE0 0xD3, convertis en keycodes 111 et 239, ce qui  donne  finalement
  la  sequence  ESC [ 3 ~. Ctrl-Alt-Suppr est une combinaison de touches
  qui declenche une action.)

  La conversion de scancodes exotiques en keycodes peut etre  programmee
  avec  l'utilitaire setkeycodes, mais peu de gens ont besoin.  La table
  de traduction des keycodes en caracteres, chaines ou actions, i.e.  la
  keymap,  se  manipule  grace  a  loadkeys.  Pour plus de details, voir
  getkeycodes(8), setkeycodes(8), dumpkeys(1), loadkeys(1).

  Dans ce paragraphe, le terme `envoye a l'application' signifie en fait
  `transmis  au  pilote  du terminal'. Le texte est ensuite traite de la
  meme facon que s'il venait  d'une  ligne  serie.  Les  details  de  ce
  traitement sont ajustes par le programme stty.

  33..  LLaa ccoonnssoollee -- ggeenneerraalliitteess

  A  l'inverse,  quand  on  envoie  des  caracteres  a  la  console, ils
  subissent un traitement standard (regle par stty), puis  sont  envoyes
  au  pilote  de  la console.  Le pilote de la console emule un terminal
  VT100, et scrute les donnees recues  pour  intercepter  les  sequences
  escape (du genre deplacement du curseur, effacement de l'ecran, etc.).
  Les autres octets sont, apres une eventuelle conversion par  la  table
  de  conversion  de  la console, ecrits dans la memoire video. La carte
  video affiche ces caracters en utilisant une police  stockee  dans  sa
  memoire.  On  peut  changer  cette  police en utilisant setfont, et la
  table de conversion de la console peut  etre  modifiee  avec  mapscrn.
  Pour plus de details, voir plus bas.

  44..  RReeiinniittiiaalliisseerr llee tteerrmmiinnaall

  L'ecran  est  plein  de cochonneries, tout ce qu'on tape apparait sous
  forme de petits dessins. Que faire ?

  De nombreux programmes retracent l'ecran quand on tape ^L, ce qui peut
  etre  utile  en  cas  de  modem  bruite  ou de messages intempestifs a
  l'ecran. La commande clear efface l'ecran.

  La commande reset reinitialise le pilote de la console. Elle est  bien
  utile  quand  l'ecran  est  plein  de  ces jolis caracteres graphiques
  illisibles, ou quand l'affichage est reduit a la  ligne  du  bas.   Si
  vous  ne  disposez pas de cette commande, ou si elle fait autre chose,
  voici le remede: mettez ces deux lignes  dans  un  fichier  executable
  reset quelque part dans votre PATH:

       #!/bin/sh
       echo -e \\033c

  ce qui envoie la sequence ESC c a la console.  Si vous avez charge une
  police bizarre et que vous voulez revenir a la police par defaut,

       % setfont

  fera l'affaire (a condition que la police par defaut soit a sa place).
  Sur  de vieux terminaux, l'utilisation de tabs peut demander un delai,
  executer alors

       % stty tab3

  (voir stty(1)). Pour changer de mode  video,  utiliser  resizecons  ou
  SVGATextMode.   Ceci  regle  generalement  la  partie affichage.  Cote
  clavier, il peut y avoir encore pas mal de problemes. Si  X,  DOOM  ou
  tout autre programme travaillant en mode raw (ou mediumraw) se plante,
  le clavier peut rester dans ce mode et il est alors  difficile  d'exe-
  cuter  la  moindre  commande.  (Voir "Comment sortir du mode raw" plus
  loin.)

  44..11..  KKeeyybbooaarrdd hhaarrddwwaarree rreesseett

  Le probleme peut parfois se situer a un niveau encore plus bas.  Il  y
  a  au moins deux niveaux (le clavier et le controleur clavier) ou l'on
  peut envoyer la commande "desactiver le clavier" au materiel.  De plus
  les  claviers  ont  souvent  trois  tables de scancodes utilisables au
  choix.

  Je n'ai cependant jamais entendu parler de cas ou  cela  ait  pose  un
  probleme.

  Certains  claviers  ont  une  fonction de reprogrammation des touches.
  Stormy Henderson (stormy@Ghost.Net) ecrit:

       `Si votre clavier a ete accidentellement  reprogramme,  vous
       pouvez (avec un clavier Gateway AnyKey) appuyer sur control-
       alt-suspend_macro pour remettre les choses en place.'

  55..  DDeelleettee eett BBaacckkssppaaccee

  55..11..  CCoommmmeenntt cchhooiissiirr llee ccaarraacctteerree aa uuttiilliisseerr ppoouurr eeffffaacceerr llee  ddeerrnniieerr
  ccaarraacctteerree ttaappee

       % stty erase ^?

  Si le caractere est efface, mais d'une maniere bizarre, c'est que  les
  parametres du terminal sont mauvais. Si echoprt est active, les carac-
  teres effaces s'affichent entre \ et /.  Si echoe est  desactive,  les
  caracteres  ne  sont  plus effaces a l'ecran, mais leur effacement est
  signale  par   l'affichage   du   caractere   d'effacement,   exemple:
  Libux###nux (avec # comme caractere d'effacement).

  On  utilisera  donc generalement stty echoe -echoprt. La commande stty
  sane activera ces parametres et bien d'autres.  La  commande  stty  -a
  affiche  les  parametres  actuels. Pourquoi ces parametres ne sont pas
  actives par defaut ? Il suffit d'utiliser le bon getty.

  Il est a noter que beaucoup de programmes (comme bash, emacs etc.) ont
  leur   propres  assignations  de  touches  (definis  dans  ~/.inputrc,
  ~/.emacs, etc.) et  ne  tiennent  pas  compte  de  ces  parametres  de
  terminal.

  55..11..11..  ``GGeettttyy ccoommpprreennaaiitt bbiieenn DDEELL eett BBSS,, mmaaiiss pplluuss mmaaiinntteennaanntt ??''

  Jadis,  la  console  traduisait   DEL   (\177)   en   BS   Espace   BS
  (\010\040\010).

  Les DEL sont desormais ignores (comme le devrait toute emulation vt100
  fidele). Choisissez un meilleur getty, i.e.,  qui  n'affiche  pas  les
  DEL.

  55..11..22..   ``LLooggiinn  nnee  ffaaiitt  ppaass llaa mmeemmee cchhoossee aauu pprreemmiieerr eett aauu ddeeuuxxiieemmee
  eessssaaii??''

  Au  premier  essai,  on  parle  a  getty,  au  deuxieme  a login, deux
  programmes distincts qui peuvent se comporter differemment.

  55..22..  CCoommmmeenntt ddiirree aa LLiinnuuxx qquueell ccooddee ggeenneerreerr aa ll''aappppuuii ssuurr uunnee ttoouucchhee

  Quand  on  utilise  la  console, ou plus precisement, quand le clavier
  n'est pas en mode (medium)raw, il faut utiliser:

       % loadkeys monclavier.map

  Sous X, utiliser:

       % xmodmap monclavier.xmap

  Remarque: depuis XFree86-2.1, X initialise son clavier a partir de  la
  configuration  du clavier de la console. Bien que les deux systemes ne
  soient pas 100% compatibles, cette technique rend generalement l'util-
  isation de xmodmap superflue.

  Si, par exemple, si vous voulez que la touche Backspace genere le code
  BackSpace (^H), au lieu du code par defaut (Delete), faites:

       % loadkeys
       keycode 14 = BackSpace
       %

  55..22..11..  ``PPoouurrqquuooii llaa ttoouucchhee BBaacckkSSppaaccee  nnee  ggeenneerree  ppaass  BBaacckkSSppaaccee  ppaarr
  ddeeffaauutt ??''

  (i) Parce que les terminaux VT100 ont une touche Delete au  dessus  de
  la touche Entree.

  (ii) Parce que Linus en a decide ainsi.

  55..33..  CCoommmmeenntt ddiirree aa XX dd''eecchhaannggeerr DDeelleettee eett BBaacckkssppaaccee

       % xmodmap -e "keysym BackSpace = Delete" -e "keysym Delete = BackSpace"

  Ou, si vous voulez juste que Backspace genere le code BackSpace:
       % xmodmap -e "keycode 22 = BackSpace"

  Ou, si vous voulez juste que Delete genere le code Delete:

       % xmodmap -e "keycode 107 = Delete"

  (mais generalement c'est deja la disposition par defaut).

  55..44..   CCoommmmeenntt  ddiirree  aa  eemmaaccss ccee qquu''iill ddooiitt ffaaiirree ddeess ccooddeess DDeelleettee eett
  BBaacckkssppaaccee

  Mettez dans votre .emacs les lignes:

         (global-set-key "\?" 'delete-backward-char)
         (global-set-key "\C-h" 'help-command)

  Bien  sur,  vous pouvez associer d'autres commandes a d'autres touches
  de la meme maniere.

  55..55..  CCoommmmeenntt ddiirree aa eemmaaccss ddee ppeerrmmuutteerr DDeelleettee eett BBaacckkssppaaccee

  Mettez dans votre .emacs les lignes:

         (setq keyboard-translate-table (make-string 128 0))
         (let ((i 0))
         (while (< i 128)
             (aset keyboard-translate-table i i)
             (setq i (1+ i))))
         (aset keyboard-translate-table ?\b ?\^?)
         (aset keyboard-translate-table ?\^? ?\b)

  55..66..  CCoommmmeenntt ddiirree aa kkeerrmmiitt dd''eecchhaannggeerr DDeelleettee eett BBaacckkssppaaccee

  Mettez dans votre .kermrc les lignes:

         set key \127 \8
         set key \8 \127

  55..77..  CCoommmmeenntt rreegglleerr xxtteerrmm sseelloonn vvooss mmooddeess ddee tteerrmmiinnaall pprreeffeerreess

  Normalement  xterm  herite  des  modes  de  terminal  du processus qui
  l'appelle.  Pour xdm, les caracteres erase et kill sont # et @,  comme
  sur  les  bons  vieux  Unix  Version 6.  Si ca ne vous plait pas, vous
  pouvez mettre

         XTerm*ttymodes: erase ^? kill ^U intr ^C quit ^\ eof ^D susp ^Z start ^Q stop ^S eol ^@

  dans /usr/lib/X11/app-defaults/XTerm ou dans $HOME/.Xresources, a con-
  dition d'executer la commande

         xrdb $HOME/.Xresources

  dans votre $HOME/.xinitrc.

  55..88..  CCoommmmeenntt ddiirree aa xxmmoossaaiicc qquuee llaa ttoouucchhee BBaacckkssppaaccee ggeenneerree uunnee DDEELL

  Mettre

         *XmText.translations: #override\n\
                <Key>osfDelete: delete-previous-character()
         *XmTextField.translations: #override\n\
                 <Key>osfDelete: delete-previous-character()

  dans votre $HOME/.Xresources devrait faire l'affaire.

  Cependant, la FAQ de netscape dit:

          Pourquoi ma touche Backspace ne marche pas dans les boites texte ?
          Par defaut, Linux et XFree86 ont leur touches Backspace et Delete
          mal configurees. Tous les programmes Motif (y compris Netscape
          Navigator) auront les memes problemes.

          Les specifications Motif disent que Backspace doit effacer le
          caractere precedent et Delete le caractere suivant. Par defaut sous
          Linux et XFree86 Backspace et Delete generent le code DEL.

          Le probleme peut etre resolu en utilisant un programme tel que
          xmodmap, xkeycaps, ou loadkeys pour que la touche Backspace
          genere le code BackSpace au lieu de Delete.

          Une autre solution consiste a avoir un fichier .motifbind;
          voir la page de manuel de VirtualBindings(3).

          Note: n'utilisez pas les ressources *XmText.translations ou
          *XmTextField.translations pour essayer de resoudre ce probleme.
          Si vous le faites, vous annulez toutes les autres programmations
          de touches dans les boites textes de Netscape Navigator.

  55..99..  EEtt lleess ffiicchhiieerr tteerrmmccaapp eett tteerrmmiinnffoo??

  Les gens qui ont des problemes avec backspace  ont  tendance  a  aller
  voir  dans  leur  fichier  termcap  (ou terminfo), et effectivement la
  ressource kb (ou kbs) decrit le code genere par la  touche  Backspace.
  Cependant  peu  de  programmes  utilisent  ces  bases  de donnees pour
  rechercher le code envoye par backspace, donc, a moins de n'avoir  des
  problemes  qu'avec  certains  programmes,  il faut en general chercher
  ailleurs.  Cela dit, il vaut mieux de toute facon avoir un termcap (ou
  terminfo) correct. Voir aussi "La variable TERM" plus loin.

  66..  LLeess ttaabblleess ddee ccaarraacctteerreess ddee llaa ccoonnssoollee

  Le  noyau  a quatre tables de conversion des octets en symboles ecran:
  a) Latin1 ->  PC,   b)  VT100  graphique  ->  PC,  c)  PC  ->  PC,  d)
  utilisateur.

  Il y a deux tables de caracteres, appelees G0 et G1, dont l'une est la
  table courante. (Initialement G0.)  Taper ^N fait passer  a  la  table
  G1, ^O a la table G0.

  Ces  variables  G0  et  G1  pointent  sur  des tables de conversion et
  peuvent etres changees par l'utilisateur. Initialement, elles pointent
  respectivement sur les tables a) et b).  Les sequences ESC ( B , ESC (
  0 , ESC ( U et ESC ( K font respectivement pointer G0 sur  les  tables
  de conversion a), b), c) et d).  Les sequences ESC ) B , ESC ) 0 , ESC
  ) U et ESC ) K font  respectivement  pointer  G0  sur  les  tables  de
  conversion a), b), c) et d).

  La  sequence ESC c provoque une reinitialisation complete du terminal,
  ce qui peut etre necessaire si l'ecran est tout brouille. La  commande
  echo  ^V^O, souvent conseillee, ne fera que rappeler la table G0, mais
  rien  ne  garantit  que  G0  pointe  sur  la  table   a).    Certaines
  distributions  ont  un  programme reset(1) qui fait juste un echo ^[c.
  Si votre termcap pour  la  console  est  correcte  (et  a  une  entree
  :rs=\Ec:), alors vous pouvez utiliser setterm -reset.

  La  table  de  conversion  d)  peut  etre  definie par mapscrn(8).  Le
  resultat est que si un symbole c est affiche, c'est  le  symbole  s  =
  map[c]  qui  est mis dans la memoire video.  L'image du caractere s se
  trouve dans la memoire de la carte video et peut  etre  modifiee  avec
  setfont(8).

  77..  CChhaannggeerr ddee ccoonnssoollee

  Par  defaut,  le changement de console se fait par Alt-Fn ou Ctrl-Alt-
  Fn.  Sous X (ou les versions recentes de dosemu), seule la combinaison
  Ctrl-Alt-Fn marche.

  XFree86  1.3  ne  sait  pas  que  la  touche Alt est enfoncee quand on
  rappelle la fenetre X. Il faut donc  relacher  Alt  avant  de  pouvoir
  rechanger  de  console.   Pourtant,  ca  pourrait  marcher:  le  noyau
  memorise toujours l'etat appuye/relache des touches. (Autant que faire
  se  peut:  certains clavier n'emettent pas de scancode quand on appuie
  dessus (ex: les touches PFn d'un FOCUS 9000) ou quand on  les  relache
  (ex: la touche Pause de la plupart des claviers).)

  XFree86 1.3 sauve les polices chargees sur la carte video quand il est
  demarre, et les restaure lors d'un  changement  de  console.  Donc  le
  resultat  d'un  setfont  sur  une  console virtuelle est annule par un
  aller retour dans la fenetre X.  L'utilisation de setfont sous X donne
  des resultats bizarres...

  Le  changement  de  console  par  programme  est  possible  grace a la
  commande chvt.

  77..11..  CChhaannggeerr llee nnoommbbrree ddee CCoonnssoolleess VViirrttuueelllleess

  Cette question est toujours posee de temps en temps, mais  la  reponse
  est:  il  y en a deja suffisament.  Depuis la version 1.1.54 du noyau,
  il y a entre 1 et 63 consoles virtuelles.  Une  nouvelle  console  est
  creee des qu'elle est ouverte.  Elle peut etre supprimee avec disalloc
  (mais il faut que plus aucun processus ne lui soit associe).

  Pour les vieux noyaux, changer la ligne

       #define NR_CONSOLES     8

  dans include/linux/tty.h (ne pas depasser 63), et recompiler.  Il  est
  possible  que  vous  ayez  a  creer le peripherique correspondant avec
  MAKEDEV ou mknod ttyN c 4 N ou N est le numero du terminal.   Si  vous
  voulez  avoir des getty sur ces nouvelles consoles, ajoutez des lignes
  dans /etc/inittab.

  Quand les consoles sont allouees dynamiquement,  il  est  generalement
  plus  simple  de  n'avoir  qu'un ou deux getty. D'autres consoles sont
  ouvertes par open -l -s bash. Les consoles inutilisees (sans processus
  associe) sont desallouees par disalloc.

  Si  vous  disposez de spawn_login (inclus dans kbd-0.90.tar.gz) et que
  vous mettez

               loadkeys << EOF
               alt keycode 103 = Spawn_Console
               EOF
               spawn_login &

  dans /etc/rc.local, taper Alt-FlecheHaute creera  (et  affichera)  une
  nouvelle console avec un login. Voir aussi open-1.3.tgz.

  Vous  ne  pouvez  vous  loger sous "root" que sur les terminaux listes
  dans /etc/securetty.

  88..  CCttrrll--AAlltt--DDeell eett aauuttrreess ccoommbbiinnaaiissoonnss ssppeecciiaalleess

  88..11..  CCttrrll--AAlltt--DDeell ((BBoooott))

  Quand on  appuie  sur  Ctrl-Alt-Del  (ou  toute  autre  combinaison  a
  laquelle  loadkeys  associe  le keycode Boot), soit la machine reboote
  immediatement (sans sync), soit le signal SIGINT est envoye a init (ce
  qui  est  le  comportement  par defaut, changeable par l'appel systeme
  reboot(), voir ctrlaltdel(8)).  Certains init changent le  defaut.  Ce
  qui  se  produit quand init recoit SIGINT depend de la version du init
  utilisee  et  est  souvent  determine  par  le  ligne  pf  du  fichier
  /etc/inittab  (on  peut  dans ce cas lancer n'importe quel programme).
  Dans les versions actuelles du noyau Ctrl-AltGr-Del n'est plus assigne
  par defaut a Boot.

  88..22..  AAuuttrreess ccoommbbiinnaaiissoonnss

  Combinaisons par defaut avant utilisation de loadkeys, donc en qwerty.

  Nom du keycode  Combinaison
  -------------------------------
  Show_Memory     Shift-Scrollock
  Show_Registers  AltGr-ScrollLock
  Show_State      Ctrl-ScrollLock
  Console_n       Alt-Fn and Ctrl-Alt-Fn  (1 <= n <= 12)
  Console_{n+12}  AltGr-Fn                (1 <= n <= 12)
  Incr_Console    Alt-FlecheDroite
  Decr_Console    Alt-FlecheGauche
  Last_Console    Alt[Gr]-ImprEcran
  Scroll_Backward Shift-PgPrec
  Scroll_Forward  Shift-PgSuiv
  Compose         Ctrl-.          (Ctrl-: sur clavier azerty)
  Caps_On         <pas defini>    (Par defaut CapsLock est un va-et-vient,
  Caps_Shift      <pas defini>    ces Keycodes servent a recreer le desagreable
                                  comportement MS-Keyb Fr)

  88..33..  CCoommbbiinnaaiissoonnss ssoouuss XX

  Ctrl-Alt-Fn             Affiche la console virtuelle n
  Ctrl-Alt-KP+            Resolution suivante
  Ctrl-Alt-KP-            Resolution precedente
  Ctrl-Alt-Backspace      Tue le serveur X

  Sur certaines cartes-meres, Ctrl-Alt-KP- et  Ctrl-Alt-KP+  emulent  le
  bouton Turbo. Ces sequences produisent les scancodes 1d 38 4a ca b8 9d
  et 1d 38 4e ce b8 9d, et toutes deux changent la vitesse de Turbo  (>=
  25MHz) a non-Turbo (8 or 12 MHz) et vice-versa.  (souvent ce comporte-
  ment peut etre desactive par un cavalier sur la carte-mere.)

  Perry F Nguyen (pfnguyen@netcom22.netcom.com) ecrit:

       Les BIOS AMI permettent de bloquer le clavier  et  de  faire
       clignoter les LEDs quand on appuie sur Ctrl-Alt-Backspace et
       qu'un mot de passe BIOS est defini, et  ce  jusqu'a  ce  que
       celui-ci soit tape.

  88..44..  CCoommbbiinnaaiissoonnss ssoouuss DDoosseemmuu

  Ctrl-Alt-Fn     Rappelle la console n (versions >0.50; avant Alt-Fn)
  Ctrl-Alt-PgDn   Tue dosemu (quand le calvier est en mode RAW)
  (et bien d'autres, voir la documentation de dosemu)

  88..55..  CCoommppoossiittiioonn ddee ssyymmbboolleess

  Un symbole peut etre construit en utilisant plusieurs frappes.

  +o  En  mode  Ascii,  taper  un  code  Ascii  en  decimal  sur  le pave
     numerique, tout en maintenant la touche Alt  enfoncee,  produit  le
     caractere  en  question  quand on relache Alt. (En mode Unicode, il
     faut taper le code hexadecimal a 4 chiffres du symbole)

  +o  L'appui sur un accent mort puis sur une lettre produit cette lettre
     accentuee  (si  possible,  sinon l'accent suivi de la lettre).  Les
     touche  mortes  sont  definissables  par  l'utilisateur  (grace   a
     loadkeys(1)). Il y a cinq possibilites:

     accent                  keycode mort            keycode normal
     ------------------------------------------------------
     accent grave            dead_grave              grave
     accent aigu             dead_acute              apostrophe
     accent circonflexe      dead_circumflex         asciicircum
     tilde                   dead_tilde              asciitilde
     trema                   dead_diaeresis          diaeresis

  Par  defaut  aucune  touche  du  clavier n'est morte.  Le resultat est
  celui de Compose + accent + lettre (et  est  donc  redefinissable,  cf
  plus bas).

       NDT:  pour  des francophones utilisant un clavier Azerty, il
       vaut  generalement  mieux  se  contenter  de  definir  comme
       touches mortes l'accent circonflexe et le trema de la touche
       a droite du `P'.  Il  est  sinon  fastidieux  voire  parfois
       impossible  (en  particulier  sous  X) de taper les symboles
       tilde et apostrophe, bien utiles sous Unix.  Or  les  tables
       standard pour clavier Latin-1 activent en general toutes les
       touches mortes possibles. Il faut donc pour ressusciter  ces
       touches,  remplacer  le  keycode  mort par le keycode normal
       dans la table chargee au demarrage par loadkeys.

  +o  Compose suivi de deux symboles produit une  combinaison  des  deux.
     Cette  combinaison  est  redefinissable.  Il  y  a  a  ce  jour  68
     combinaisons par defaut qui peuvent etre affichees par  dumpkeys  |
     grep compose.

  +o  Depuis  la  version  1.3.33  du  noyau, il est possible d'avoir des
     touches "collantes" (plus ou moins comme Escape)  grace  aux  codes
     SControl et SAlt. Par exemple, on peut taper ^C par Scontrol puis C
     et Ctrl-Alt-BackSpace  par SControl puis SAlt puis BackSpace.

  Il est a noter qu'il existe au moins trois mecanismes  de  composition
  distincts:

  1. Le pilote clavier de Linux, configure par loadkeys.

  2. Le mecanisme de X - voir X386keybd(1), ou XFree86kbd(1).
     Sous X11R6 : editer /usr/X11R6/lib/X11/locale/iso8859-1/Compose.

  3. Le mecanisme d'emacs, active en chargeant iso-insert.el.

     Pour X, l'ordre des deux symboles n'a pas d'importance: Compose-,-c
     et Compose-c-, donnent tous deux un c-cedille; pour Linux et emacs,
     seule  la  premiere combinaison est correcte. Les combinaisons de X
     sont fixes, celles de Linux et  emacs  sont  reconfigurables.   Les
     trois listes par defaut sont assez similaires, mais il y a quelques
     differences.

  99..  DDiivveerrsseess pprroopprriieetteess ddee llaa ccoonnssoollee

  Voir loadkeys(1), setleds(1), setmetamode(1) pour  les  codes  generes
  par  les diverses touches et l'utilisation des leds quand on n'est pas
  sous X. Sous X, voir xmodmap(1).

  Voir  setterm(1),  kbdrate(8)  pour  les  proprietes  telles  que  les
  couleurs de l'ecriture et du fond, l'economiseur d'ecran et la vitesse
  de repetition des touches quand on n'est pas sous  X.   Sous  X,  voir
  xset(1), qui s'occupe aussi du clic des touches et du volume des bips.

  Le fichier /etc/termcap definit les sequences escape utilisees par  de
  nombreux programmes utilisant la console (ou tout autre terminal). Une
  version  plus  moderne  se  trouve   dans   /usr/lib/terminfo.   (voir
  terminfo(5).  Les  fichiers  terminfo  sont  crees  par le compilateur
  terminfo /usr/lib/terminfo/tic, voir tic(1).)

  (Sur ma machine) /dev/console est lien symbolique sur /dev/tty0, et le
  noyau  considere  /dev/tty0  comme un synonyme de la console virtuelle
  courante.  XFree86 1.3 change le proprietaire de /dev/tty0, mais ne le
  restaure  qu'a  la  sortie.  Or  dumpkeys  risque de ne pas marcher si
  quelqu'un d'autre est  proprietaire  de  /dev/console;  dans  ce  cas,
  lancer X et en sortir peut arranger les choses.

  1100..  CCoommmmeenntt ssoorrttiirr dduu mmooddee RRAAWW

  Si  un  programme  utilisant  le mode K_RAW du clavier se termine sans
  remettre le calvier en mode K_XLATE, alors il est  tres  difficile  de
  faire  quoi que ce soit - meme  Ctrl-Alt-Del. Cependant il est parfois
  possible d'eviter  d'appuyer  sur  Reset  (et  meme  souhaitable:  vos
  utilisateurs risquent de ne pas apprecier qu'on leur tue leur Nethack,
  et surtout il est possible d'endommager le systeme de fichiers).   Les
  solutions  simples  consistent a se loger a partir d'un autre terminal
  ou une autre machine et faire  kbd_mode  -a.   La  procedure  suivante
  suppose  que  X ne tourne pas, que l'ecran est en mode texte, que vous
  etes a un prompt shell, que Ctrl-C est le caractere d'interruption  et
  que vous n'avez pas un clavier trop exotique (i.e. la touche `=' est 2
  touches a droite de `0').

  1ere etape: Lancer X.  Appuyez sur la combinaison  2-F12-=  :  appuyez
  sur  2  puis  F12  (sans  lacher  2)  et  puis = (sans lacher les deux
  autres), le tout assez  rapidement!  Ca  lance  X.   (Explication:  si
  l'appui  sur  une  touche  produit le keycode K, alors son relachement
  produit K+128. Votre shell risque de na pas apprecier ces  caracteres,
  donc  on  evite  de les lui envoyer en ne lachant pas les touches. `2'
  produit un ^C qui annule tout ce qui a ete tape avant. F12 produit  un
  X  et `=' le code entree. Et tout ca vite fait avant que la repetition
  des touches ne commence...)

  Votre ecran est alors probablement gris, puisqu'aucun .xinitrc n'a ete
  specifie.  Cependant  Ctrl-Alt-Fn  marche,  et vous pouvez appeler une
  autre console. (Ctrl-Alt-Backspace  marche  aussi,  mais  ca  restaure
  l'etat initial du clavier qui justement n'est pas bon.)

  2eme  etape:  Programmer  le  changement  de  mode  du  clavier.  (Par
  exemple, avec sleep 5; kbd_mode -a.)

  3eme etape: Quitter X.   Alt-Fx  (souvent  Alt-F7)  retourne  sous  X,
  ensuite  Ctrl-Alt-Backspace  tue  X.  Dans  les  5 secondes le clavier
  redevient utilisable.

  Si vous voulez vous preparer pour cette occasion, faites de  \215A\301
  (3  symboles)  un  alias de kbd_mode -a.  Desormais, l'appui sur F7 en
  mode RAW remettra tout en ordre.

  1111..  LLaa vvaarriiaabbllee TTEERRMM

  De nombreux programmes utilisent  la  variable  TERM  et  la  base  de
  donnees /etc/termcap ou /usr/lib/terminfo/* pour trouver quelle chaine
  de commande efface l'ecran, deplace le curseur, etc., et parfois  pour
  savoir  quelle  chaine  est  envoyee  par  la touche backspace, ou les
  touches de fonction, etc. Cette variable est d'abord  definie  par  le
  noyau (pour la console). Generalement elle est redefinie par getty, en
  utilisant  /etc/ttytype  ou  l'argument  specifie  dans  /etc/inittab.
  Parfois elle est encore changee par /etc/profile.

  Les anciens systemes utilisent TERM=console ou TERM=con80x25. Les plus
  recents (avec ncurses  1.8.6)  utilisent  la  valeur  plus  specifique
  TERM=linux  ou  TERM=linux-80x25.  Cependant, les vieilles versions de
  setterm cherchent une valeur du type TERM=con* et ne marchent donc pas
  avec TERM=linux.

  Depuis la version 1.3.2 du noyau, la valeur par defaut est TERM=linux.

  Si votre termcap n'a pas d'entree `linux', il suffit d'ajouter l'alias
  linux dans la description de `console':

               console|con80x25|linux:\

  et de copier (ou faire un lien symbolique) /usr/lib/terminfo/c/console
  en /usr/lib/terminfo/l/linux.

  1111..11..  TTeerrmmiinnffoo

  Il manque, dans le fichier terminfo de la console  linux  fourni  avec
  ncurses   1.8.6,   la   ligne:   kich1=\E[2~,  necessaire  a  certains
  programmes.  Editez ce fichier et compilez-le avec tic.

  1122..  CCoommmmeenntt ffaaiirree ppoouurr qquuee dd''aauuttrreess pprrooggrraammmmeess aacccceepptteenntt  lleess  ccaarraacc--
  tteerreess nnoonn--AASSCCIIII

  C'etait  jadis  un   veritable   calvaire.   Il   fallait   convaincre
  individuellement chaque programme de travailler en 8 bits.  Les choses
  ne sont pas encore ideales, mais recemment de nombreux utilitaires GNU
  ont   appris   a  reconnaitre  les  variables  LC_CTYPE=iso_8859_1  ou
  LC_CTYPE=iso-8859-1.  Essayez d'abord ca,  et  si  ca  ne  suffit  pas
  essayez les trucs ci-dessous.

  Tout  d'abord,  le huitieme bit doit survivre au processus d'entree du
  noyau, assurez-vous-en donc avec stty cs8 -istrip -parenb.

  A. Pour emacs, mettez les lignes

          (standard-display-european t)
          (set-input-mode nil nil 1)
          (require 'iso-syntax)

  et peut-etre aussi

               (load-library "iso-insert.el")
               (define-key global-map [?\C-.] 8859-1-map)

  dans votre $HOME/.emacs.  (Cette derniere ligne marche dans un  xterm,
  en utilisant emacs -nw, mais il faut alors mettre

               XTerm*VT100.Translations:       #override\n\
               Ctrl <KeyPress> . : string("\0308")

  dans  votre  .Xresources.)  NDT: fichiers pour clavier Qwerty, a veri-
  fier pour azerty.

  B. Pour less, mettez LESSCHARSET=latin1 dans l'environment.

  C. Pour ls, mettez l'option -N. (A priori en faisant un alias.)

  D. Pour bash (version 1.13.*), mettez

               set meta-flag on
               set convert-meta off

  et, selon le Danish-HOWTO,

               set output-meta on

  dans votre $HOME/.inputrc.

  E. Pour tcsh, definissez les variables:

               setenv LANG     fr_FR   (ou fr_CA, fr_CH, fr_BE...)
               setenv LC_CTYPE iso_8859_1

  Si nls est installe,  les  routines  correspondantes  sont  utilisees.
  Sinon  tcsh  agit en iso_8859_1, quelle que soit les valeurs donnees a
  LANG et LC_CTYPE. voir la section NATIVE LANGUAGE SYSTEM  de  tcsh(1).
  (d'apres le Danish-HOWTO: setenv LC_CTYPE ISO-8859-1; stty pass8)

  F.  Pour  flex, donnez l'option -8 si l'analyseur genere doit accepter
  les entrees 8-bits. (Bien sur qu'il doit le faire !)

  G. Pour elm,  mettez  displaycharset  a  ISO-8859-1.   (Danish  HOWTO:
  LANG=C et LC_CTYPE=ISO-8859-1)

  H. Pour les programmes utilisant curses (comme lynx) David Sibley dit:

       La version standard de curses utilise le huitieme  bit  pour
       la  video  inversee  (voir  le  flag  _STANDOUT  defini dans
       /usr/include/curses.h).  Cependant ncurses semble  fonction-
       ner en 8-bits et affiche le iso-latin-8859-1 correctement.

  I.  Pour  les  programmes  utilisant  groff  (comme  man), utilisez le
  -Tlatin1 au lieu de -Tascii. Les vieilles versions  de  man  utilisent
  aussi col, et le point suivant s'applique aussi.

  J.  Pout  col,  assurez-vous  1)  qu'il  a  ete  corrige  et  fait  un
  setlocale(LC_CTYPE,""); et  2)  de  definir  LC_CTYPE=ISO-8859-1  dans
  l'environment.

  K. Pour rlogin, utilisez l'option -8.

  L.                              Pour                              joe,
  sunsite.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz devrait
  marcher apres edition du fichier de configuration. J'ai aussi lu: joe:
  mettez l'option -asis dans /usr/lib/joerc en premiere colonne.

  M. Pour LaTeX: \documentstyle[isolatin]{article}.
  Pour    LaTeX2e:    \documentclass{article}\usepackage{isolatin}    ou
  isolatin.sty est disponible a
   <ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit>.

  Une  belle  discussion  sur  le  theme  de l'ISO-8859-1 et sur comment
  manipuler les caracteres 8-bits est disponible dans
   <ftp://grasp.insa-lyon.fr/pub/faq/fr/accents>  (en  francais).    Une
  autre, en anglais, peut etre trouvee a
   <ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/character-
  sets/iso-8859-1-faq>.           Encore          une          autre(?):
  <ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/FAQ-ISO-8859-1>.

  1133..  QQuuee ffaaiitt eexxaacctteemmeenntt XXFFrreeee8866--22..11 aa ll''iinniittiiaalliissaattiioonn ddee ssaa  kkeeyymmaapp??

  Depuis  la  version 2.1, XFree86 initialise sa keymap d'apres celle de
  Linux, dans les limites du possible. Linux a 16  entrees  par  touches
  (une pour chaque combinaison de Shift, AltGr, Ctrl, Alt; en fait il en
  a meme 256), alors que X n'en a que 4 (une pour chaque combinaison  de
  Shift et Mod), il y a donc forcement des informations perdues.

  D'abord  X  lit  le  fichier Xconfig, ou il trouve les correspondances
  entre les touches Control, Alt et ScrollLock avec les  codes  X  Meta,
  ModeShift,  Compose,  ModeLock  et  ScrollLock - voir X386keybd(1), ou
  XFree86kbd(1).

  Par defaut, c'est la colonne  LeftAlt  qui  sert  pour  Mod,  sauf  si
  CtlDroit  est  defini comme ModeShift ou ModeLock, dans ce cas ce sont
  les entrees RightCtl qui servent pour Mod. (Sauf si AltGr  est  defini
  comme  Mod  dans  Xconfig,  auquel  cas  c'est la colonne RightAlt qui
  sert.)  Ceci determine comment les 4 entrees de XFree86 sont  choisies
  parmi  les  16  de  Linux.  Notons que par defaut Linux ne fait pas la
  difference  entre  les  deux  touche  Control  ou  Shift.  X  fait  la
  dufference.
  Les   touches   "action"   Show_Memory,   Show_State,  Show_Registers,
  Last_Console, Console_n, Scroll_Backward, Scroll_Forward,  Caps_On  et
  Boot  sont  ignorees,  de  meme  pour  les  touches  mortes,  NumLock,
  ScrollLock et Alt+code-ASCII.

  Ensuite,  les  definitions  de  Xconfig  sont  utilisees.  (Donc   une
  definition  de  Compose  dans  Xconfig  annulera celle trouvee dans la
  keymap du noyau.)

  Que deviennent les chaines associees aux touches des fonctions ? Rien,
  ce  concept  n'existe pas sous X. (Mais il est possible de definir des
  chaines associees aux touches de fonction dans xterm - mais  elles  ne
  doivent pas etre interceptees par le gestionnaire de fenetres.)

  Je  ne  sais  pas  comment  convaincre xterm qu'il devrait utiliser la
  keymap de X quand Alt est enfonce. Il semble qu'il ne  reagisse  qu'en
  fonction de sa ressource eightBitInput, et selon qu'elle est a vrai ou
  faux, soit il met a 1 le huitieme bit, soit  il  genere  un  caractere
  escape  devant  le  caractere  (comme  le  fait setmetamode(1) pour la
  console).

  1144..  TToouucchheess eett ccllaavviieerrss ppaarrttiiccuulliieerrss

  Les deux touches ImprEcran/Syst et Pause/Attn sont speciales car elles
  ont  deux  keycodes:  la  premiere produit le keycode 84 quand Alt est
  enfonce et 99 sinon; la seconde 101 si Ctrl est  enfonce,  119  sinon.
  (Il est donc inutile d'assigner des fonctions a Alt-Keycode99 ou Ctrl-
  Keycode119.)

  Si votre clavier a des touches etranges qui  ne  generent  aucun  code
  sous   Linux   (ou   generent  des  messages  du  genre  "unrecognized
  scancode"),  vous  pouvez,  a  partir  du   noyau   1.1.63,   utiliser
  setkeycodes(1) pour dire au noyau quel keycode assigner a ces touches.
  (Leur  utilisation  sous  X  sera  cependant  impossible.)   Une  fois
  qu'elles ont un keycode grace a setkeycodes, on peut leur associer une
  fonction avec loadkeys.

  1155..  EExxeemmpplleess dd''uuttiilliissaattiioonn ddee llooaaddkkeeyyss aanndd xxmmooddmmaapp

  Permuter ScrollLock et Control (en  suposant  que  vous  utilisez  les
  keymaps 0-15; verifiez avec dumpkeys | head -1)

         % loadkeys
         keymaps 0-15
         keycode 58 = Control
         keycode 29 = Caps_Lock
         %

  Les permuter sous X seulement:

         % xmodmap .xmodmaprc

  ou .xmodmaprc contient les lignes

    remove Lock = Caps_Lock
    remove Control =  Control_L
    keysym  Control_L  =  Caps_Lock
    keysym  Caps_Lock  = Control_L
    add Lock = Caps_Lock
    add Control = Control_L

  Qu'en  est-il de la numerotation des touches? Backspace a le numero 14
  sous Linux et 22 sous X... En fait, la numerotation est plus ou  moins
  arbitraire.  Le numero sous Linux peut etre visualise avec showkey(1),
  et le numero sous X avec xev(1). Souvent le numero sous  X  est  8  de
  plus que le numero sous Linux.

  1155..11..  ``JJee nnee ppeeuuxx ttaappeerr qquu''aavveecc uunn sseeuull ddooiiggtt''

  Les  touches  Shift,  Ctrl  et Alt peuvent-elles etre des commutateurs
  stables ?  Oui, en faisant:

       % loadkeys
       keycode 29 = Control_Lock
       keycode 42 = Shift_Lock
       keycode 56 = Alt_Lock
       %

  les Control, Shift et Alt de gauche deviennent stables.  Les numeros a
  utiliser  sont donnes par showkey (et sont generalement 29 et 97 (Con-
  trol), 42 et 54 (Shift), 56 et 100 (Alt)) et les  fonctions  possibles
  sont Control_Lock, Shift_Lock, Alt_Lock, ALtGr_Lock.

  Et le touches `collantes'?  Il n'y a pas encore eu de nouvelle version
  du paquetage kbd depuis leur introduction dans  le  noyau  1.3.33,  il
  faut donc utiliser leurs codes hexa, par example:

       % loadkeys
       keymaps 0-15
       keycode 54 = 0x0c00
       keycode 97 = 0x0c02
       keycode 100 = 0x0c03
       %

  rend les Shift, Ctrl et Alt de droite collantes.

  1166..  CChhaannggeerr llee mmooddee vviiddeeoo

  Pour  autant  que  je  sache,  il  y  a  6 manieres de changer de mode
  resolution:

  1. A la compilation: changer la ligne

          SVGA_MODE=      -DSVGA_MODE=NORMAL_VGA

  dans /usr/src/linux/Makefile.

  1A. Apres la compilation: utiliser rdev -v - une  affreuse  magouille,
  mais bon, ca marche.

  2. Au demarrage: mettre vga=ask dans le fichier de config de lilo, qui
  demandera au boot le  mode  voulu.  Une  fois  decide,  remplacer  par
  vga=LePlusJoliMode.

  3.  En  cours  de route: A. Utiliser la commande resizecons. (C'est un
  programme tres primitif utilisant  l'ioctl  VT_RESIZE.)   B.  Utiliser
  SVGATextMode. (C'est une version moins primitive)

  4.  Pas  "sur  la  console": Sous dosemu, ou avec svgalib etc. on peut
  changer le mode video de la carte ecran  sans  que  le  pilote  de  la
  console s'en apercoive. C'est parfois utile pour configurer resizecons
  ou SVGATextMode:sous dosemu se mettre dans le mode video voulu grace a
  un  programme  DOS  utilisant  ce  mode,  puis dans une autre console,
  recuperer les parametres de ce mode. Il ne reste  plus  qu'a  utiliser
  ces  donnees pour l'initialisation de resizecons et SVGATextMode. Dans
  certains cas la carte video se retrouve dans un mode inutilisable,  le
  moyen  le  plus  simple  pour  se  sortir  de la est de lancer dosemu,
  laisser le BIOS mettre un mode video correct, puis tuer  dosemu  (avec
  kill -9).

  1166..11..  IInnssttrruuccttiioonnss ppoouurr ll''uuttiilliissaattiioonn ddee rreessiizzeeccoonnss

  Recuperer svgalib et compiler le programme restoretextmode.  Booter la
  machine dans tous les modes video possibles (en mettant  vga=ask  dans
  le  fichier  config  de lilo), et sauvegarder les registres video dans
  des fichiers CxL (C=Colonnes, L=Lignes), par  exemple  80x25,  132x44,
  etc.   Placer  ces  fichiers  dans /usr/lib/kbd/videomodes.  Desormais
  resizecons 132x44  changera  le  mode  video  (et  enverra  le  signal
  SIGWINCH  a  tous  les  processus  qui  ont  besoin  de  savoir que la
  resolution a change, et chargera une nouvelle police si necessaire).

  A present, resizecons ne change de mode que s'il y a assez de  memoire
  pour contenir a la fois l'ancienne et la nouvelle console.

  1177..  CChhaannggeerr llaa vviitteessssee ddee rreeppeettiittiioonn dduu ccllaavviieerr

  Au  demarrage,  le  noyau  met  la  vitesse  de repetition a sa valeur
  maximale. Pour la plupart des claviers  c'est  raisonnable,  mais  sur
  certains  il  devient quasiment impossible d'effleurer une touche sans
  avoir trois fois le meme caractere. Dans ce cas utiliser le  programme
  kbdrate(8)  pour  changer  la vitesse de repetition ou si ca ne suffit
  pas supprimer la section:

  ______________________________________________________________________
       ! set the keyboard repeat rate to the max

           mov     ax,#0x0305
           xor     bx,bx           ! clear bx
           int     0x16
  ______________________________________________________________________

  de /usr/src/linux/[arch/i386/]boot/setup.S.

  1188..  EEccoonnoommiisseeuurr dd''eeccrraann

  setterm -blank _n_n regle le delai d'extinction de l'ecran a  _n_n minutes
  d'inactivite. (Avec _n_n = 0, l'economiseur d'ecran est desactive.)

  L'option s de xset(1) regle les parametres de l'economiseur d'ecran de
  X.

  Les   modes   d'economie   d'energie   du   moniteur   peuvent    etre
  actives/desactives  par  le  programme  setvesablank  donne  dans  les
  commentaires          au          debut           du           fichier
  /usr/src/linux/drivers/char/vesa_blank.c.

  1199..  QQuueellqquueess pprroopprriieetteess dduu VVTT110000 -- mmooddee aapppplliiccaattiioonn

  : Parfois les touches de curseur produisent des codes bizarres?

  Quand  le  terminal  est  en  mode application, les touches de curseur
  produisent les codes Esc O x et sinon Esc [ x, avec x =  A,B,C  ou  D.
  Certains  programmes  mettent le termnial en mode application et si on
  les tue avec un kill -9, ou s'il se plantent, le terminal restera dans
  ce mode.

          % echo -e '\033c'

  reinitialise les proprietes du terminal courant.  Si on veut passer en
  mode application:

          % echo -e '\033[?1h'

  et si on veut en sortir:

          % echo -e '\033[?1l'

  2200..  IInnccoommppaattiibbiilliittee mmaatteerriieellllee

  Quelques personnes ont note des pertes de caracteres tapes  lors  d'un
  acces disquette. Il semblerait que ce soit un probleme avec les cartes
  meres Uni-486WB. (SVP envoyez moi un mail pour confirmer [Oui, j'ai le
  meme  probleme], infirmer [Non, tout va bien avec ma carte Uni-486WB],
  ou modifier [Ma machine Xyzzy a le meme probleme].)

  Certaines personnes ont  eu  des  blocages  aleatoires  du  clavier  -
  parfois associes a une activite disque dur ou une autre entree/sortie.

  ulf@rio70.bln.sni.de (Ulf Tietz) ecrit:

       `J'avais ce genre de problemes quand ma carte mere avait des
       reglages  trop  rapides. En remettant les delais (CLK, wait-
       states, etc.) a des valeurs plus raisonnables, tout est ren-
       tre dans l'ordre.'

  bhogan@crl.com (Bill Hogan) ecrit:

       `Si  vous avez un BIOS AMI, vous pouvez essayer de mettre le
       parametre Gate A20 emulation sur 'chipset' (si cette  option
       existe). Quand cette option etait sur n'importe quoi d'autre
       ('fast', 'both', 'disabled') j'avais souvent des blocages du
       clavier.'

  --------------------------------------------------------------------

  Additions et corrections sont les bienvenues.

  Andries Brouwer - aeb@cwi.nl

  (Bruno Viaris - Viaris@Yoko.ENS-Cachan.Fr pour la traduction)

