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 syst�me et comment d�sactiver � la demande le bip sonore.

1. Introduction

La console Linux �met un bip sonore lorsqu'un caract�re 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 caract�re BEL. Il explique �galement comment faire en sorte que le noyau et le serveur X Window ne sonnent pas en pr�sence d'un caract�re 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 � op�rer au niveau du mat�riel, le mien n'a m�me pas de haut-parleur.

2. "Spekearectomy", ablation du haut-parleur

L'ablation du haut-parleur est de loin la solution la plus brillante au probl�me du bip sonore. Comme son nom l'indique, elle consiste � supprimer le bip � la source. L'op�ration est simple, elle ne n�cessite pas d'anesth�sie.

Les PC sont habituellement �quip�s d'un bouton ridicule servant � r�duire la fr�quence du CPU. Ce bouton n'est jamais utilis� dans un environnement multit�che, puisque l'on n'a jamais besoin de ralentir la machine pour utiliser des jeux bas�s sur des boucles de temporisation. Malheureusement, on ne peut pas utiliser ce bouton pour augmenter la fr�quence du CPU, mais on peut l'utiliser pour activer/d�sactiver le haut-parleur. Parfois, ce dernier est utile m�me si vous pr�f�rez un ordinateur silencieux, par exemple pour signaler la fin d'une longue compilation. Pour modifier la fonction de ce bouton, il suffit de le d�connecter de la carte-m�re et de le brancher en s�rie avec le haut-parleur.

Cela dit, les possesseurs de portables n'ont pas acc�s au haut-parleur, pas plus qu'ils ne disposent d'un bouton inutile � r�assigner. La solution pour ces utilisateurs r�side 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 dur�e du bip. Chaque console peut �tre configur�e pour avoir un bip de hauteur et/ou dur�e diff�rente. Ce but est atteint au moyen de s�quences d'�chappement interpr�t�es 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 �ch�ant, pas de bip du tout).

Les s�quences d'�chappement fonctionnent comme suit :

Pour avoir par exemple un bip � 50Hz durant une seconde, faites "echo -e "\\33[10;50]\\33[11;1000]"" avec bash (le "-e" signifie `dig�re les s�quences 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 r�cent, vous pouvez vous contenter des s�quences d'�chappement et interrompre votre lecture ici. Si votre noyau est plus vieux, ou si vous d�sirez 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" (capacit�s des terminaux, N.d.T.). Plusieurs applications utilisent les informations de termcap pour d�placer le curseur sur l'�cran ou d'autres actions en relation avec ce dernier. tcsh, bash, vi et toutes les applications bas�es sur curses utilisent la base de donn�es termcap.

La base de donn�es d�crit plusieurs types de terminaux. La variable d'environnement TERM s�lectionne le comportement correct lors de l'ex�cution en indiquant aux applications quelle entr�e de termcap utiliser.

Dans la base de donn�es, chaque capacit� d'un terminal est repr�sent�e par un code de deux lettres et une repr�sentation de la s�quence d'�chappement permettant d'obtenir l'effet d�sir�. Les deux-points ":" servent de s�parateur entre les diff�rentes capacit�s. Par exemple, le bip sonore dont le code est "bl" appara�t g�n�ralement sous la forme "bl=^G", ce qui signifie que le bip est obtenu en "affichant" le caract�re control-G, correspondant au code ASCII BEL.

En plus de bl, la capacit� vb est reconnue. Elle est utilis�e pour repr�senter le "bip visible". vb est g�n�ralement absent de l'entr�e linux du fichier termcap.

La plupart des applications et librairies modernes utilisent la base de donn�es terminfo au lieu de termcap. Cette base de donn�es utilise un fichier par type de terminal et est situ�e dans /usr/lib/terminfo; pour �viter de trop grands r�pertoires, les descriptions de chaque type de terminal sont stock�es dans un r�pertoire nomm� d'apr�s la premi�re lettre : ainsi, l'entr�e linux se situe dans /usr/lib/terminfo/l/linux. Pour construire une entr�e 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 entr�e pour la capacit� vb dans votre fichier termcap, si ce n'est pas d�j� fait. Dennis Henriksen (duke@diku.dk) a sugg�r� la ligne suivante dans l'entr�e linux (appel�e 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) :

6. D�sactivation du bip sonore dans la console texte

Si vous d�sirez imposer le bip visuel dans la console, vous pouvez utiliser l'entr�e "bl" dans la termcap et lui donner la m�me valeur que pour "vb" ci-dessus. Cette aproche est pratique si vous ne voulez pas configurer chaque application (cela est de toutes fa�ons d�crit ci-dessous). J'utilise cette solution sur toutes les machines sur lesquelles j'utilise Linux sans pouvoir d�connecter le haut-parleur.

7. Emp�cher les applications d'�mettre des bips

Ceci est une liste incompl�te d'applications qui peuvent �tre configur�es pour utiliser l'entr�e vb pour le type de terminal utilis� (utilisant soit termcap soit terminfo) :

8. La face cach�e du probl�me

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

La seule mani�re de r�duire ces applications au silence est de proc�der � une "spekearectomy", ou d'utiliser les s�quences d'�chappement dues � Martin Mares.