  Bip visuel mini-Howto (Visual bell mini-Howto)
  Alessandro Rubini, rubini@linux.it
  Traduction Jean-Albert Ferrez, Jean-Albert.Ferrez@epfl.ch
  v2.2, 11 Novembre 1997

  Ce  document  explique comment utiliser termcap pour configurer un bip
  visuel sur son systeme et comment  desactiver  a  la  demande  le  bip
  sonore.

  11..  IInnttrroodduuccttiioonn

  La  console  Linux  emet  un  bip sonore lorsqu'un caractere BEL (code
  ASCII 7) est produit. Bien que ce soit un choix  raisonnable  dans  la
  plupart   des  cas,  bien  des  utilisateurs  n'aiment  pas  que  leur
  ordinateur fasse du bruit. Ce mini-howto est cense  expliquer  comment
  indiquer  aux  applications  de  ne  pas produire de caractere BEL. Il
  explique egalement comment faire en sorte que le noyau et le serveur X
  Window  ne  sonnent  pas  en presence d'un caractere BEL. Notez que la
  plupart de ce document concerne la console texte, etant donne  que  la
  configuration du serveur X est triviale pour ceux qui travaillent dans
  un environnement graphique.

  A mon avis, la meilleure attitude  a  adopter  face  a  un  ordinateur
  bruyant  consiste a operer au niveau du materiel, le mien n'a meme pas
  de haut-parleur.

  22..  SSppeekkeeaarreeccttoommyy"",, aabbllaattiioonn dduu hhaauutt--ppaarrlleeuurr

  L'ablation du haut-parleur est de loin la solution la  plus  brillante
  au  probleme  du  bip sonore. Comme son nom l'indique, elle consiste a
  supprimer le  bip  a  la  source.  L'operation  est  simple,  elle  ne
  necessite pas d'anesthesie.

  Les  PC  sont  habituellement  equipes  d'un bouton ridicule servant a
  reduire la frequence du CPU. Ce bouton n'est jamais  utilise  dans  un
  environnement  multitache,  puisque l'on n'a jamais besoin de ralentir
  la  machine  pour  utiliser  des  jeux  bases  sur  des   boucles   de
  temporisation. Malheureusement, on ne peut pas utiliser ce bouton pour
  augmenter  la  frequence  du  CPU,  mais  on  peut   l'utiliser   pour
  activer/desactiver le haut-parleur. Parfois, ce dernier est utile meme
  si vous preferez un ordinateur silencieux, par exemple  pour  signaler
  la  fin  d'une  longue  compilation.  Pour  modifier la fonction de ce
  bouton, il suffit de le deconnecter de la carte-mere et de le brancher
  en serie avec le haut-parleur.

  Cela  dit,  les  possesseurs  de  portables  n'ont  pas acces au haut-
  parleur,  pas  plus  qu'ils  ne  disposent  d'un  bouton   inutile   a
  reassigner.   La   solution  pour  ces  utilisateurs  reside  dans  la
  configuration de leurs logiciels, comme indique ci-dessous.

  33..  CCoonnffiigguurraattiioonn dduu bbiipp ccoonnssoollee ppaarr ccoonnssoollee

  Depuis la version 1.3.43, Martin Mares a modifie console.c, y ajoutant
  la  possibilite  de  configurer  la hauteur et la duree du bip. Chaque
  console peut etre configuree pour avoir un bip de hauteur et/ou  duree
  differente.  Ce  but  est  atteint au moyen de sequences d'echappement
  interpretees par le gestionnaire de la console. Vous pouvez configurer
  vos  fichiers  ~/.profile  ou ~/.login pour choisir un bip particulier
  pour chaque console (ou, le cas echeant, pas de bip du tout).

  Les sequences d'echappement fonctionnent comme suit :

  +o  ESC-[10;xx] selectionne la hauteur du bip en Hertz. La valeur  doit
     etre dans la plage 21-32766, sinon le resultat est indetermine.  Si
     l'argument `xx' manque (ESC-[10]), la valeur par defaut est 750 Hz.

  +o  ESC-[11;xx]  selectionne la duree du bip en millisecondes.  Au dela
     de 2 secondes, la valeur par defaut de 125 ms est appliquee.  Cette
     derniere est egalement utilisee si l'argument 'xx' manque.

  Pour  avoir par exemple un bip a 50Hz durant une seconde, faites "echo
  -e "\\33[10;50]\\33[11;1000]"" avec bash (le "-e" signifie `digere les
  sequences   d'echappement'.   Avec  tcsh  la  commande  devient  "echo
  "\\033[10;50]\\033[11;1000]"".

  Bien que je ne connaisse aucune version de  la  commande  setterm  qui
  supporte  une  telle  configuration,  il  est  possible qu'une version
  future offre une option permettant de configurer le bip.

  Si vous  utilisez  Linux-1.3.43  ou  plus  recent,  vous  pouvez  vous
  contenter  des  sequences  d'echappement  et interrompre votre lecture
  ici. Si votre noyau est plus vieux, ou si vous desirez un bip  visuel,
  vous aller aimer le reste de ce document.

  44..  CCoonncceeppttss ddee bbaassee aauu ssuujjeett ddee TTeerrmmccaapp eett TTeerrmmiinnffoo

  Le  fichier  /etc/termcap est un fichier texte contenant les "terminal
  capabilities"   (capacites   des   terminaux,    N.d.T.).    Plusieurs
  applications  utilisent  les  informations de termcap pour deplacer le
  curseur sur l'ecran ou d'autres actions en relation avec  ce  dernier.
  tcsh,  bash, vi et toutes les applications basees sur curses utilisent
  la base de donnees termcap.

  La base de donnees decrit plusieurs types de  terminaux.  La  variable
  d'environnement  TERM  selectionne  le  comportement  correct  lors de
  l'execution en indiquant aux applications  quelle  entree  de  termcap
  utiliser.

  Dans la base de donnees, chaque capacite d'un terminal est representee
  par un code de deux lettres  et  une  representation  de  la  sequence
  d'echappement permettant d'obtenir l'effet desire. Les deux-points ":"
  servent de separateur entre les differentes capacites. Par exemple, le
  bip  sonore  dont le code est "bl" apparait generalement sous la forme
  "bl=^G", ce qui signifie que le  bip  est  obtenu  en  "affichant"  le
  caractere control-G, correspondant au code ASCII BEL.

  En  plus  de  bl,  la capacite vb est reconnue. Elle est utilisee pour
  representer le "bip visible". vb est generalement absent  de  l'entree
  linux du fichier termcap.

  La  plupart  des applications et librairies modernes utilisent la base
  de donnees terminfo au lieu de termcap. Cette base de donnees  utilise
  un  fichier par type de terminal et est situee dans /usr/lib/terminfo;
  pour eviter de trop grands repertoires,  les  descriptions  de  chaque
  type  de  terminal  sont  stockees dans un repertoire nomme d'apres la
  premiere   lettre   :   ainsi,   l'entree   linux   se   situe    dans
  /usr/lib/terminfo/l/linux. Pour construire une entree terminfo il faut
  "compiler" une description termcap, voir le programme tic et  sa  page
  de manuel.

  55..  MMiissee ssuurr ppiieedd dd''uunn bbiipp vviissiibbllee

  Vous  pouvez ajouter une entree pour la capacite vb dans votre fichier
  termcap, si ce n'est pas deja fait. Dennis Henriksen (duke@diku.dk)  a
  suggere  la  ligne  suivante dans l'entree linux (appelee console dans
  les anciennes distributions) du fichier termcap :

       :vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\

  Le backslash final sert a cacher le retour a la ligne  dans  la  base.
  Le code de Dennis fonctionne comme suit (selon ses propres mots) :

  +o  Sauvegarde de la position du curseur (par precaution).

  +o  Bascule du fond d'ecran plusieurs fois entre normal et inverse.

  +o  Restauration de la position du curseur.

  66..  DDeessaaccttiivvaattiioonn dduu bbiipp ssoonnoorree ddaannss llaa ccoonnssoollee tteexxttee

  Si  vous  desirez  imposer  le bip visuel dans la console, vous pouvez
  utiliser l'entree "bl" dans la termcap et lui donner  la  meme  valeur
  que  pour "vb" ci-dessus. Cette aproche est pratique si vous ne voulez
  pas configurer chaque application (cela est de  toutes  facons  decrit
  ci-dessous).  J'utilise  cette  solution  sur  toutes les machines sur
  lesquelles j'utilise Linux sans pouvoir deconnecter le haut-parleur.

  77..  EEmmppeecchheerr lleess aapppplliiccaattiioonnss dd''eemmeettttrree ddeess bbiippss

  Ceci  est  une  liste  incomplete  d'applications  qui  peuvent   etre
  configurees pour utiliser l'entree vb pour le type de terminal utilise
  (utilisant soit termcap soit terminfo) :

  +o  Le serveur X : utilisez la commande "xset b" pour  selectionner  le
     comportement  du  bip.  Elle  prend  trois  arguments  numeriques :
     volume, hauteur et duree. "xset -b" desactive completement le  bip.
     La   configuration  du  serveur  affecte  toutes  les  applications
     tournant dessus.

  +o  xterm : xterm peut convertir chaque bip soit en  un  signal  visuel
     soit  en un signal sonore. Si vous utilisez un bip sonore, il obeit
     a la configuration issue de "xset". Par defaut xterm utilise un bip
     sonore,  mais  l'option "-vb" sur la ligne de commande ainsi que la
     ressource "xterm*visualBell: true" le remplace par un flash visuel.
     Vous  pouvez passer de l'un a l'autre en cours d'execution au moyen
     du menu obtenu par control-clic-bouton-gauche. Si  vous  travaillez
     sous  X  vous  n'avez  probablement pas besoin des informations qui
     suivent.

  +o  tcsh (6.04 et ulterieurs) : "set visiblebell".   Cette  instruction
     peut etre placee dans .cshrc ou executee directement. Pour retablir
     le bip  sonore,  "unset  visiblebell".  Pour  n'avoir  ni  l'un  ni
     l'autre, utilisez "set nobeep".

  +o  bash  (n'importe quel bash, pour autant que je sache) : Mettez "set
     bell-style  visible"  dans  votre  ~/.bashrc.  Les  autre   valeurs
     possibles sont "none" et "audible".

  +o  bash  (avec  readline,  ainsi  que d'autres applications basees sur
     readline) : Mettez "set prefer-visible-bell" dans ~/.inputrc.

  +o  nvi et elvis : Mettez "set flash"  dans  ~/.exrc  ou  faites  ":set
     flash" directement. (notez les deux points). Pour desactiver le bip
     visuel, utilisez noflash au lieu de flash.

  +o  emacs : Mettez "(setq visible-bell t)" dans votre ~/.emacs. Pour la
     desactiver : "(setq visible-bell nil)".
  +o  less  :  Utilisez l'option "-q" sur la ligne de commande pour avoir
     un bip visuel, utilisez "-Q" pour n'avoir  aucun  bip.  Pour  avoir
     l'une  ou  l'autre  de  ces  options par defaut, mettez-les dans la
     variable d'environnement "LESS".

  +o  screen : Faites "Ctrl-A - Ctrl-G". Cela change le  comportement  de
     tous   les   ecrans   virtuels.   Voyez  la  page  du  manuel  sous
     "CUSTOMIZATION" pour fixer le comportement par defaut.

  88..  LLaa ffaaccee ccaacchheeee dduu pprroobblleemmee

  La mauvaise nouvelle est que toutes les applications  n'utilisent  pas
  termcap ou terminfo. La plupart des petits programmes ont le caractere
  'backslash-a' (l'alarme) dans le  code  source  C.  Le  code  "alarme"
  devient  un  caractere ASCII BEL dans les chaines de caractere du code
  binaire. Les vraies applications ne sont en principe pas de  ce  type,
  mais mefiez-vous des debutants en C qui vous donnent leurs programmes.
  Les pires, je vous assure, sont les etudiants en informatique.

  La seule maniere  de  reduire  ces  applications  au  silence  est  de
  proceder   a   une   "spekearectomy",   ou  d'utiliser  les  sequences
  d'echappement dues a Martin Mares.

