Campana-Visual Mini-COMO
Alessandro Rubini,
[email protected]
[email protected]
v2.1, Agosto de 1996. Fecha de la traducci�n 3 de Junio de
1998
Este documento muestra el uso de termcap para configurar una campana
visual en el sistema propio y describe c�mo deshabilitar las campanas
sonoras al gusto de cada uno.
______________________________________________________________________
�ndice General:
1. Introducci�n
2. Altavozectom�a
3. Configuraci�n del pitido en consola
4. Conceptos b�sicos sobre termcap
5. Definir una campana visual
6. Deshabilitar la campana sonora en la consola de texto
7. Avisar a las aplicaciones
8. El lado oscuro del problema
9. Anexo: El INSFLUG
______________________________________________________________________
1. Introducci�n
El manejador de consola de Linux emite un sonoro pitido siempre que se
produce la salida de un caracter BEL (c�digo ASCII 7). Aunque �sta es
una buena elecci�n para el comportamiento por defecto, a determinados
usuarios no les agrada que el computador les pite (N. del T.: a mi,
por ejemplo).
Este miniCOMO est� orientado a explicar c�mo decirles a las
aplicaciones que no produzcan el c�digo BEL como salida. Tambi�n se
proporcionan indicaciones para ense�ar al n�cleo y al sistema X a
evitar el pitido cuando se produce la salida de un BEL. La mayor parte
del documento se refiere a la consola de texto, ya que la
configuraci�n de este aspecto en un servidor X es sencilla para
cualquier usuario que trabaje en un entorno gr�fico.
En mi opini�n, la mejor soluci�n para enfrentarse a un computador
ruidoso es arreglar el hardware, as� que mi computador ni siquiera
lleva altavoz.
2. Altavozectom�a
La altavozectom�a es con mucho, la soluci�n m�s brillante para la
campana sonora. Como su nombre indica, consiste en acabar con los
pitidos extirpando el altavoz. Esta operaci�n es directa y ni siquiera
se necesita anestesia, pero tambi�n hay lugar para el refinamiento si
se desea.
Normalmente los PCs est�n equipados con un est�pido interruptor para
cambiar el reloj de la placa a una velocidad inferior. Este
interruptor es innecesario cuando se trabaja en un entorno multitarea,
ya que no es necesario enlentecer el computador para ejecutar juegos
basados en bucles de software.
Desafortunadamente no se puede usar el interruptor para aumentar la
velocidad del procesador, pero podemos convertirlo en un interruptor
que habilite/deshabilite el altavoz. A veces el altavoz es �til
incluso aunque se desee una m�quina machaca-numeros silenciosa, por
ejemplo, para indicar el final de una lenta compilaci�n.
Para modificar la funcionalidad del interruptor, �nicamente sep�relo
de la placa madre y conecte sus hilos en serie con el altavoz.
Los poseedores de port�tiles, desafortunadamente, no tienen f�cil
acceso al altavoz, y tampoco tienen un interruptor libre para
dedicarlo a otra tarea. La soluci�n preferible para tales usuarios es
intentar configurar su software para evitar el pitido.
3. Configuraci�n del pitido en consola
A partir de Linux 1.3.43, Martin Mares a�adi� la opci�n de configurar
la campana sonora en console.c. Se puede cambiar la duraci�n y el tono
del pitido independientemente en cada consola, escribiendo secuencias
de escape en la tty. Se puede guardar una configuraci�n personalizada
en el propio ~/.profile/ o ~/.login/, para tener un pitido diferente
(o no tener pitido) asociado a cada consola.
Las secuencias de escape funcionan de la siguiente manera:
� ESC-[10;xx] selecciona la frecuencia de la campana en Hercios. El
valor debe estar en el rango 21-32766, de otro modo el resultado es
impredecible (por lo menos hasta la versi�n 2.0.x -- no puedo
predecir el futuro). Si falta el argumento 'xx', se aplica el valor
por defecto (750 Hz), como en ESC-[10].
� ESC-[11;xx] selecciona la duraci�n de la campana en milisegundos.
Si se especifican m�s de 2 segundos, se aplica el valor por defecto
(125 ms). De nuevo, si falta el argumento 'xx' (ESC-[11]) se
utilizar� el valor por defecto.
Para seleccionar, por ejemplo, un tono de 50Hz y 1 segundo de
duraci�n, se puede probar
echo -e "\33[10;50]\33[11;1000]"
en bash (donde "-e" significa 'interpretar secuencias de escape').
Con tcsh
echo " 33[10;50] 33[11;1000]"
tendr� el mismo efecto.
Aunque no conozco ninguna versi�n del comando setterm que soporte
dicha configuraci�n, una versi�n futura podr�a soportar una opci�n de
l�nea de comando para configurar el sonido de la campana.
Si utiliza Linux 1.3.43 o superior, debe estar satisfecho con las
secuencias de escape, y evitar� tener que seguir leyendo. Si utiliza
alg�n n�cleo antiguo (yo lo hago, en mi peque�o 386), o si desea una
campana visual, siga leyendo.
4. Conceptos b�sicos sobre termcap
El fichero /etc/termcap/ es un fichero de texto que lista las
capacidades de la terminal. Numerosas aplicaciones utilizan la
informaci�n de termcap para mover el cursor por la pantalla y realizar
otras tareas relacionadas con la pantalla. tcsh, bash, vi y todas las
aplicaciones basadas en curses usan la base de datos de termcap.
La base de datos representa varios tipos de terminal. La variable de
entorno TERM selecciona el comportamiento correcto en tiempo de
ejecuci�n, nombrando una entrada de termcap para que sea usada por las
aplicaciones.
Dentro de la base de datos, cada capacidad est� aparece como un c�digo
de dos letras y una representaci�n de la secuencia de escape real
utilizada para conseguir dicho efecto. El caracter separador entre
diferentes capacidades son los dos puntos (":"). Como ejemplo, la
camapana sonora, con c�digo "bl" ("bell", campana), se representa
normalmente por el string "bl=^G", que indica a las aplicaciones que
usen el caracter control-G, el BEL de ASCII.
Adem�s de la capacidad bl, hay una capacidad vb, que representa la
campana visual ("visual bell"). vb normalmente no aparece en la
entrada de consola en el /etc/termcap/ de Linux.
Las aplicaciones y librer�as m�s modernas utilizan la base de datos
terminfo en lugar de termcap. Esta base de datos utiliza un fichero
por cada tipo de terminal y se encuentra en /usr/lib/terminfo; para
evitar directorios enormes, la descripci�n de cada tipo de terminal se
guarda en un directorio nombrado con su primera letra; la entrada
linux es, por tanto /usr/lib/terminfo/l/linux. Para construir una
entrada terminfo habr� que 'compilar' la descripci�n de termcap. V�ase
el programa tic y su p�gina del manual.
5. Definir una campana visual
Se puede a�adir la entrada para la capacidad vb en el fichero termcap
propio. Dennis Henriksen,
[email protected] sugiri� insertar la siguiente
l�nea en la entrada 'linux' del fichero termcap (en las distribuciones
antiguas esta entrada se conoce como 'console'):
:vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\
La �ltima barra se utiliza para escapar el caracter de nueva l�nea en
la base de datos. El c�digo de Dennis hace lo siguiente (seg�n sus
propias palabras):
� Salvar la posici�n del cursor (precauci�n de seguridad).
� Cambiar el color de fondo varias veces entre normal y video
inverso.
� Restaurar la posici�n del cursor.
6. Deshabilitar la campana sonora en la consola de texto
Si quiere forzar una campana visual en su consola, puede reemplazar la
entrada "bl" en el termcap con la misma cadena literal sugerida para
"vb" antes. Este enfoque puede evitarle el tener que adecuar cada
aplicaci�n. Yo me decanto por esta opci�n en todas las m�quinas en las
que puedo usar Linux y no puedo quitar el altavoz.
7. Avisar a las aplicaciones
Esta es una lista incompleta de aplicaciones a las que se puede
obligar a usar la entrada vb para el tipo de terminal actual (ya sea
usando la informaci�n de termcap o la de terminfo):
� el servidor X: utilize el comando 'xset b' para seleccionar el
comportamiento de la campana. Este comando tiene 3 argumentos
num�ricos: volumen, tono y duraci�n. 'xset -b' deshabilita la
campana. La configuraci�n del servidor X afecta a todas las
aplicaciones que se ejecuten en la pantalla.
� xterm: xterm puede convertir cada pitido en una se�al visible o
audible. Si utiliza la campana sonora, se aplicar�n los valores de
xset. Por defecto la campana en xterm es sonora, pero puede usar la
opci�n de l�nea de comando '-vb' y el recurso xterm*VisualBell:
true para convertirla en un destello visible. Se puede cambiar la
se�alizaci�n visible/audible en tiempo de ejecuci�n utilizando el
men� invocado al pulsar control+bot�n izq. del rat�n. Si suele
utilizar X seguramente no necesite la informaci�n siguiente.
� tcsh (6.04 y superior): 'set visible bell'. La instrucci�n puede
aparecer en el .cshrc o se puede introducir interactivamente. Para
restaurar la campana sonora vale con 'unset visiblebell'. Para
deshailitar cualquier notificaci�n introduzca 'set nobeep'.
� bash (cualquier bash, por lo que yo se): ponga 'set bell-style
visible' en su ~/.bashrc/. Los valores posibles para bell-style son
'none' (niguno) o 'audible' (sonoro).
� bash (con readline, as� como otras aplicaciones basadas en
readline): ponga 'set prefer-visible-bell' en ~/.inputrc/.
� nvi y elvis: ponga 'set flash' en ~/.exrc/ o introduzca ':set
flash' interactivamente (ojo con los dos puntos). Para deshabilitar
la campana use 'noflash' en lugar de 'flash'.
� emacs: ponga '(setq visible-bell t)' en su ~/.emacs/. Se
deshabilita con '(setq visible-bell nil)'.
� less: use '-q' en la l�nea de comando para utilizar la campana
visual, use '-Q' para deshabilitar cualquier acci�n. Las opciones
por defecto se pueden a�adir en su variable de entorno LESS.
� screen: utilice la combinaci�n CtrlA-CtrlG. Funciona en todas las
pantalla virtuales. Vea la p�gina del manual en la secci�n
customization para los valores por defecto.
8. El lado oscuro del problema
La mala noticia es que no todas las aplicaciones se basan en termcap o
en terminfo. La mayor�a de los programas peque�os tienen la secuencia
"\a" (alarma) en su c�digo fuente C. Estos caracteres se convierten en
el ASCII BEL en el binario ejecutable. Las aplicaciones reales no
suelen caer en este fallo, pero cuidado con los novatos en C que le
dan sus propios programas; los estudiantes de inform�tica son los
peores, garantizado.
La �nica manera de hacer callar el altavoz con estas aplicaciones es
la altavozectom�a, o usar las secuencias de escape de Martin Mares.
9. Anexo: El INSFLUG
El INSFLUG forma parte del grupo internacional Linux Documentation
Project, encarg�ndose de las traducciones al castellano de los Howtos
(Comos), as� como la producci�n de documentos originales en aquellos
casos en los que no existe an�logo en ingl�s.
En el INSFLUG se orienta preferentemente a la traducci�n de documentos
breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
:) ), etc.
Dir�jase a la sede del INSFLUG para m�s informaci�n al respecto.
En la sede del INSFLUG encontrar� siempre las �ltimas versiones de las
traducciones: www.insflug.org. Aseg�rese de comprobar cu�l es la
�ltima versi�n disponible en el Insflug antes de bajar un documento de
un servidor r�plica.
Se proporciona tambi�n una lista de los servidores r�plica (mirror)
del Insflug m�s cercanos a Vd., e informaci�n relativa a otros
recursos en castellano.
Francisco Jos� Montilla,
[email protected].