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].