Visual-Bell.pdf
(
23 KB
)
Pobierz
Visible bell mini-Howto
Visible bell mini−Howto
Visible bell mini−Howto
Table of Contents
Visible bell mini−Howto.
....................................................................................................................................1
Alessandro Rubini, rubini@linux.it.
........................................................................................................1
1. Copyright and License.
........................................................................................................................1
2. Introduction.
.........................................................................................................................................1
3. Spekearectomy.
....................................................................................................................................1
4. Per−console Beep Configuration.
........................................................................................................1
5. Basic Concepts About Termcap and Terminfo.
...................................................................................1
6. Defining a Visible Bell.
.......................................................................................................................1
7. Disabling the Audible Bell on the Text Console.
................................................................................1
8. Telling Applications to Avoid Beeping.
..............................................................................................1
9. The Dark Side of the Problem
.............................................................................................................1
1. Copyright and License.
........................................................................................................................1
2. Introduction.
.........................................................................................................................................1
3. Spekearectomy.
....................................................................................................................................2
4. Per−console Beep Configuration.
........................................................................................................2
5. Basic Concepts About Termcap and Terminfo.
...................................................................................3
6. Defining a Visible Bell.
.......................................................................................................................3
7. Disabling the Audible Bell on the Text Console.
................................................................................3
8. Telling Applications to Avoid Beeping.
..............................................................................................4
9. The Dark Side of the Problem
.............................................................................................................4
i
Visible bell mini−Howto
Alessandro Rubini,
rubini@linux.it
v2.3, 2001−12−03
This document explains how to use termcap to configure a visual bell on one's system and describes how to
disable audible bells on demand.
1.
Copyright and License
2.
Introduction
3.
Spekearectomy
4.
Per−console Beep Configuration
5.
Basic Concepts About Termcap and Terminfo
6.
Defining a Visible Bell
7.
Disabling the Audible Bell on the Text Console
8.
Telling Applications to Avoid Beeping
9.
The Dark Side of the Problem
1.
Copyright and License
This document is Copyright (c) 1997, Alessandro Rubini.
This document is distributed under the terms of the GNU Free Documentation License. You should have
received a copy along with it. If not, it is available from http://www.fsf.org/licenses/fdl.html.
2.
Introduction
The Linux console driver beeps the audible bell whenever a BEL char is output (ASCII code 7). Though this
is a right choice for the default behaviour, many users don't like their computer to beep. This mini−Howto is
meant to explain how to tell applications not to output the BEL code. It also explain how to instruct the
Visible bell mini−Howto
1
Visible bell mini−Howto
kernel and the X Window System to avoid beeping when a BEL is output. Note that most of this document
refers to the text console, as configuring the X server is an easy catch−all for any user who works in a graphic
environment.
In my opinion the best way to face a fussy computer is fixing the hardware, and my own computer doesn't
even carry a loudspeaker.
3.
Spekearectomy
Speakerectomy is by far the most brilliant solution to the audible bell problem. As its name implies, it
consists in removing the beeps by removing the beeper. The operation is straightforward and you don't even
need any anesthetic, but if you want there's room for refinement.
PC's are usually equipped with a silly switch to lower CPU clock. The switch is never used when you work in
a multitasking environment, as you don't even need to slow the computer down to run games based on
software loops. Unfortunately we can't use the switch to increase processor speed, but we can use it to
enable/disable the loudspeaker. Sometimes the speaker is useful even if you enjoy a silent number cruncher,
for example to signal the end of a lenghty compilation. To modify the switch functionality, just detatch it
from the main board and connect its wires in series with the loudspeaker.
Owners of laptop boxes, unfortunately, don't have easy access to the loudspeaker, and neither they have a
spare switch to turn to a different task. The preferred solution for such users is configuring their software to
avoid beeping, as described below.
4.
Per−console Beep Configuration
As of Linux 1.3.43, Martin Mares added the ability to configure the pitch and duration of the beep, by
modifying
console.c
. Each console can be configured to feature a different duration and/or pitch of the
bell sound; the task is accomplished by using escape sequences to the console device. You can configure your
own
~/.profile
or
~/.login
file to select a different beep sound associated to each console (or no beep
at all, if needed).
The escape sequences work as follow:
·
ESC−
[10;
xx
]
selects the bell frequency in Hertz. The value should be in the range 21−32766,
otherwise the result is undefined. If the `xx' argument is missing, the default value (750Hz) will
apply, as in `ESC−
[10]
.
·
ESC−
[11;
xx
]
selects the bell duration, in milli−seconds. If you specify more than 2 seconds, the
default applies (125ms). Once again, if the `xx' argument is missing (ESC−
[11]
) the default value
will be used.
To select, for example, a 50Hz pitch for one−second duration, you can "
echo −e
"\\33[10;50]\\33[11;1000]"
" with
bash
(where "−e" means `understand Escape sequences'. If
you use
tcsh
the same command spells "
echo "\\033[10;50]\\033[11;1000]"
".
Although I don't know of any version of the
setterm
command that supports such configuration, a future
version of the command might well support a command−line option to configure the bell sound.
3. Spekearectomy
2
Visible bell mini−Howto
If you run Linux−1.3.43 or newer, you may be satisfied with the escape sequences and avoid reading further.
If you run an older kernel, or if you want the visual bell, you'll enjoy the rest of this document.
5.
Basic Concepts About Termcap and Terminfo
The file
/etc/termcap
is a text file that lists the
term
inal
cap
abilities. Several applications use the
termcap
information to move the cursor around the screen and do other screen−oriented tasks.
tcsh
,
bash
,
vi
and all the
curses
−based applications use the
termcap
database.
The database describes several terminal types. The
TERM
environment variable selects the right behaviour at
run−time, by naming a
termcap
entry to be used by applications.
Within the database, each capability of the terminal appears as a two−letter code and a representation of the
actual escape sequence used to get the desired effect. The separator character between different capabilities is
the colon (":"). As an example, the audible bell, with code "bl", usually appears as "
bl=^G
". This sequence
tells that the bell sound is obtained by printing the control−G character, the ASCII BEL.
In addition to the
bl
capability, the
vb
capability is recognized. It is used to represent the "visible bell".
vb
is usually missing in the
linux
entry of the
termcap
file.
Most modern applications and libraries use the
terminfo
database instead of
termcap
. This database uses
one file per terminal−type and lives in
/usr/lib/terminfo
; to avoid using huge directories, the
description of each terminal type is stored in a directory named after its first letter; the
linux
entry,
therefore, is
/usr/lib/terminfo/l/linux
. To build a
terminfo
entry you'll ``compile'' the
termcap
description; refer to the
tic
program and its manual page.
6.
Defining a Visible Bell
You can add the entry for the
vb
capability in your own termcap file, if it doesn't already define one. Dennis
Henriksen (duke@diku.dk) suggested to insert the following line in the
termcap
entry for
linux
(note that
the entry is called
console
in old distributions):
:vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\
The trailing backslash is used to escape the newline in the database. Dennis' code does the following (his own
words):
·
Change the background color several times between normal and reverse.
Save the cursor position (uust a safety precaution).
·
Restore the cursor position.
·
7.
Disabling the Audible Bell on the Text Console
If you want to force the visible bell on your console you can use the "
bl
" entry in
termcap
and define it
with the same string suggested for "
vb
" above. This approach is handy if you don't want to customize each
application (which is described below, anyway). I use this option on all the machines where I can run Linux
5. Basic Concepts About Termcap and Terminfo
3
Plik z chomika:
megaskrypty
Inne pliki z tego folderu:
3-Button-Mouse(1).pdf
(58 KB)
XWindow-Overview-HOWTO(1).pdf
(30 KB)
Xterm-Title(1).pdf
(39 KB)
Xterminals(1).pdf
(30 KB)
Xinerama-HOWTO(1).pdf
(33 KB)
Inne foldery tego chomika:
Programowanie
Zgłoś jeśli
naruszono regulamin