rubini@linux.it
Jean-Albert.Ferrez@epfl.ch
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.
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.
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 :
[10;
xx]
s�lectionne la hauteur du bip en Hertz. La
valeur doit �tre dans la plage 21-32766, sinon le r�sultat est ind�termin�.
Si l'argument `xx' manque (ESC-[10]
), la valeur par d�faut est 750 Hz.[11;
xx]
s�lectionne la dur�e du bip en millisecondes.
Au del� de 2 secondes, la valeur par d�faut de 125 ms est appliqu�e. Cette
derni�re est �galement utilis�e 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 `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.
Le fichier /etc/termcap
est un fichier texte contenant les
"term
inal cap
abilities" (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.
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) :
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.
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
) :
xset b
" pour
s�lectionner le comportement du bip. Elle prend trois arguments
num�riques : volume, hauteur et dur�e. "xset -b
"
d�sactive compl�tement 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
ob�it � la configuration issue de "xset
". Par d�faut
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'ex�cution 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 ult�rieurs) : "set visiblebell
". Cette
instruction peut �tre plac�e dans .cshrc
ou ex�cut�e
directement. Pour r�tablir 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 bas�es
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 d�sactiver le bip visuel, utilisez
noflash
au lieu de flash
.
emacs
: Mettez "(setq visible-bell t)
" dans votre
~/.emacs
. Pour la d�sactiver : "(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 d�faut,
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 d�faut.
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.