
                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 systme et comment dsactiver  la demande le bip
   sonore._
     _________________________________________________________________

1. Introduction

   La console Linux met un bip sonore lorsqu'un caractre 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 cens expliquer comment
   indiquer aux applications de ne pas produire de caractre BEL. Il
   explique galement comment faire en sorte que le noyau et le serveur X
   Window ne sonnent pas en prsence d'un caractre BEL. Notez que la
   plupart de ce document concerne la console texte, tant donn que la
   configuration du serveur X est triviale pour ceux qui travaillent dans
   un environnement graphique.

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

2. "Spekearectomy", ablation du haut-parleur

   L'ablation du haut-parleur est de loin la solution la plus brillante
   au problme du bip sonore. Comme son nom l'indique, elle consiste 
   supprimer le bip  la source. L'opration est simple, elle ne
   ncessite pas d'anesthsie.

   Les PC sont habituellement quips d'un bouton ridicule servant 
   rduire la frquence du CPU. Ce bouton n'est jamais utilis dans un
   environnement multitche, puisque l'on n'a jamais besoin de ralentir
   la machine pour utiliser des jeux bass sur des boucles de
   temporisation. Malheureusement, on ne peut pas utiliser ce bouton pour
   augmenter la frquence du CPU, mais on peut l'utiliser pour
   activer/dsactiver le haut-parleur. Parfois, ce dernier est utile mme
   si vous prfrez un ordinateur silencieux, par exemple pour signaler
   la fin d'une longue compilation. Pour modifier la fonction de ce
   bouton, il suffit de le dconnecter de la carte-mre et de le brancher
   en srie avec le haut-parleur.

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

3. Configuration du bip console par console

   Depuis la version 1.3.43, Martin Mares a modifi console.c, y ajoutant
   la possibilit de configurer la hauteur et la dure du bip. Chaque
   console peut tre configure pour avoir un bip de hauteur et/ou dure
   diffrente. Ce but est atteint au moyen de squences d'chappement
   interprtes 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 chant, pas de bip du tout).

   Les squences d'chappement fonctionnent comme suit :
     * ESC-[10;xx] slectionne la hauteur du bip en Hertz. La valeur doit
       tre dans la plage 21-32766, sinon le rsultat est indtermin. Si
       l'argument `xx' manque (ESC-[10]), la valeur par dfaut est 750
       Hz.
     * ESC-[11;xx] slectionne la dure du bip en millisecondes. Au del
       de 2 secondes, la valeur par dfaut de 125 ms est applique. Cette
       dernire est galement utilise si l'argument 'xx' manque.

   Pour avoir par exemple un bip  50Hz durant une seconde, faites "echo
   -e "\\33[10;50]\\33[11;1000]"" avec bash (le "-e" signifie `digre les
   squences d'chappement'. 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 rcent, vous pouvez vous
   contenter des squences d'chappement et interrompre votre lecture
   ici. Si votre noyau est plus vieux, ou si vous dsirez un bip visuel,
   vous aller aimer le reste de ce document.

4. Concepts de base au sujet de Termcap et Terminfo

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

   La base de donnes dcrit plusieurs types de terminaux. La variable
   d'environnement TERM slectionne le comportement correct lors de
   l'excution en indiquant aux applications quelle entre de termcap
   utiliser.

   Dans la base de donnes, chaque capacit d'un terminal est reprsente
   par un code de deux lettres et une reprsentation de la squence
   d'chappement permettant d'obtenir l'effet dsir. Les deux-points ":"
   servent de sparateur entre les diffrentes capacits. Par exemple, le
   bip sonore dont le code est "bl" apparat gnralement sous la forme
   "bl=^G", ce qui signifie que le bip est obtenu en "affichant" le
   caractre control-G, correspondant au code ASCII BEL.

   En plus de bl, la capacit vb est reconnue. Elle est utilise pour
   reprsenter le "bip visible". vb est gnralement absent de l'entre
   linux du fichier termcap.

   La plupart des applications et librairies modernes utilisent la base
   de donnes terminfo au lieu de termcap. Cette base de donnes utilise
   un fichier par type de terminal et est situe dans /usr/lib/terminfo;
   pour viter de trop grands rpertoires, les descriptions de chaque
   type de terminal sont stockes dans un rpertoire nomm d'aprs la
   premire lettre : ainsi, l'entre linux se situe dans
   /usr/lib/terminfo/l/linux. Pour construire une entre terminfo il faut
   "compiler" une description termcap, voir le programme tic et sa page
   de manuel.

5. Mise sur pied d'un bip visible

   Vous pouvez ajouter une entre pour la capacit vb dans votre fichier
   termcap, si ce n'est pas dj fait. Dennis Henriksen (duke@diku.dk) a
   suggr la ligne suivante dans l'entre linux (appele 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  cacher le retour  la ligne dans la base. Le
   code de Dennis fonctionne comme suit (selon ses propres mots) :
     * Sauvegarde de la position du curseur (par prcaution).
     * Bascule du fond d'cran plusieurs fois entre normal et invers.
     * Restauration de la position du curseur.

6. Dsactivation du bip sonore dans la console texte

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

7. Empcher les applications d'mettre des bips

   Ceci est une liste incomplte d'applications qui peuvent tre
   configures pour utiliser l'entre vb pour le type de terminal utilis
   (utilisant soit termcap soit terminfo) :

     * Le serveur X : utilisez la commande "xset b" pour slectionner le
       comportement du bip. Elle prend trois arguments numriques :
       volume, hauteur et dure. "xset -b" dsactive compltement le bip.
       La configuration du serveur affecte toutes les applications
       tournant dessus.
     * xterm : xterm peut convertir chaque bip soit en un signal visuel
       soit en un signal sonore. Si vous utilisez un bip sonore, il obit
        la configuration issue de "xset". Par dfaut 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  l'autre en cours d'excution
       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.
     * tcsh (6.04 et ultrieurs) : "set visiblebell". Cette instruction
       peut tre place dans .cshrc ou excute directement. Pour
       rtablir le bip sonore, "unset visiblebell". Pour n'avoir ni l'un
       ni l'autre, utilisez "set nobeep".
     * 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".
     * bash (avec readline, ainsi que d'autres applications bases sur
       readline) : Mettez "set prefer-visible-bell" dans ~/.inputrc.
     * nvi et elvis : Mettez "set flash" dans ~/.exrc ou faites ":set
       flash" directement. (notez les deux points). Pour dsactiver le
       bip visuel, utilisez noflash au lieu de flash.
     * emacs : Mettez "(setq visible-bell t)" dans votre ~/.emacs. Pour
       la dsactiver : "(setq visible-bell nil)".
     * 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 dfaut, mettez-les dans la
       variable d'environnement "LESS".
     * screen : Faites "Ctrl-A - Ctrl-G". Cela change le comportement de
       tous les crans virtuels. Voyez la page du manuel sous
       "CUSTOMIZATION" pour fixer le comportement par dfaut.

8. La face cache du problme

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

   La seule manire de rduire ces applications au silence est de
   procder  une "spekearectomy", ou d'utiliser les squences
   d'chappement dues  Martin Mares.
