  Campana-Visual Mini-COMO
  Alessandro Rubini, rubini@linux.it
  sorgina@sidam.es
  v2.1, Agosto de 1996. Fecha de la traduccin 3 de Junio de
  1998

  Este documento muestra el uso de termcap para configurar una campana
  visual en el sistema propio y describe cmo deshabilitar las campanas
  sonoras al gusto de cada uno.
  ______________________________________________________________________

  ndice General:

  1.      Introduccin

  2.      Altavozectoma

  3.      Configuracin del pitido en consola

  4.      Conceptos bsicos 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.  Introduccin

  El manejador de consola de Linux emite un sonoro pitido siempre que se
  produce la salida de un caracter BEL (cdigo ASCII 7). Aunque sta es
  una buena eleccin 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 cmo decirles a las
  aplicaciones que no produzcan el cdigo BEL como salida. Tambin se
  proporcionan indicaciones para ensear al ncleo 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
  configuracin de este aspecto en un servidor X es sencilla para
  cualquier usuario que trabaje en un entorno grfico.

  En mi opinin, la mejor solucin para enfrentarse a un computador
  ruidoso es arreglar el hardware, as que mi computador ni siquiera
  lleva altavoz.

  2.  Altavozectoma

  La altavozectoma es con mucho, la solucin ms brillante para la
  campana sonora. Como su nombre indica, consiste en acabar con los
  pitidos extirpando el altavoz. Esta operacin es directa y ni siquiera
  se necesita anestesia, pero tambin hay lugar para el refinamiento si
  se desea.

  Normalmente los PCs estn equipados con un estpido 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 mquina machaca-numeros silenciosa, por
  ejemplo, para indicar el final de una lenta compilacin.

  Para modificar la funcionalidad del interruptor, nicamente seprelo
  de la placa madre y conecte sus hilos en serie con el altavoz.

  Los poseedores de porttiles, desafortunadamente, no tienen fcil
  acceso al altavoz, y tampoco tienen un interruptor libre para
  dedicarlo a otra tarea. La solucin preferible para tales usuarios es
  intentar configurar su software para evitar el pitido.

  3.  Configuracin del pitido en consola

  A partir de Linux 1.3.43, Martin Mares aadi la opcin de configurar
  la campana sonora en console.c. Se puede cambiar la duracin y el tono
  del pitido independientemente en cada consola, escribiendo secuencias
  de escape en la tty. Se puede guardar una configuracin 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 versin 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 duracin de la campana en milisegundos.
     Si se especifican ms 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
  duracin, 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 versin del comando setterm que soporte
  dicha configuracin, una versin futura podra soportar una opcin de
  lnea 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
  algn ncleo antiguo (yo lo hago, en mi pequeo 386), o si desea una
  campana visual, siga leyendo.

  4.  Conceptos bsicos sobre termcap

  El fichero /etc/termcap/ es un fichero de texto que lista las
  capacidades de la terminal. Numerosas aplicaciones utilizan la
  informacin 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
  ejecucin, nombrando una entrada de termcap para que sea usada por las
  aplicaciones.

  Dentro de la base de datos, cada capacidad est aparece como un cdigo
  de dos letras y una representacin 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 cdigo "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.

  Adems 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 libreras ms 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 descripcin 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 descripcin de termcap. Vase
  el programa tic y su pgina del manual.

  5.  Definir una campana visual

  Se puede aadir la entrada para la capacidad vb en el fichero termcap
  propio. Dennis Henriksen, duke@diku.dk sugiri insertar la siguiente
  lnea 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 lnea en
  la base de datos. El cdigo de Dennis hace lo siguiente (segn sus
  propias palabras):

    Salvar la posicin del cursor (precaucin de seguridad).

    Cambiar el color de fondo varias veces entre normal y video
     inverso.

    Restaurar la posicin 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
  aplicacin. Yo me decanto por esta opcin en todas las mquinas 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 informacin 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
     numricos: volumen, tono y duracin. 'xset -b' deshabilita la
     campana. La configuracin del servidor X afecta a todas las
     aplicaciones que se ejecuten en la pantalla.

    xterm: xterm puede convertir cada pitido en una seal visible o
     audible. Si utiliza la campana sonora, se aplicarn los valores de
     xset. Por defecto la campana en xterm es sonora, pero puede usar la
     opcin de lnea de comando '-vb' y el recurso xterm*VisualBell:
     true para convertirla en un destello visible. Se puede cambiar la
     sealizacin visible/audible en tiempo de ejecucin utilizando el
     men invocado al pulsar control+botn izq. del ratn.  Si suele
     utilizar X seguramente no necesite la informacin siguiente.

    tcsh (6.04 y superior): 'set visible bell'. La instruccin puede
     aparecer en el .cshrc o se puede introducir interactivamente.  Para
     restaurar la campana sonora vale con 'unset visiblebell'. Para
     deshailitar cualquier notificacin 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 lnea de comando para utilizar la campana
     visual, use '-Q' para deshabilitar cualquier accin. Las opciones
     por defecto se pueden aadir en su variable de entorno LESS.

    screen: utilice la combinacin CtrlA-CtrlG. Funciona en todas las
     pantalla virtuales. Vea la pgina del manual en la seccin
     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 mayora de los programas pequeos tienen la secuencia
  "\a" (alarma) en su cdigo 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 informtica son los
  peores, garantizado.

  La nica manera de hacer callar el altavoz con estas aplicaciones es
  la altavozectoma, o usar las secuencias de escape de Martin Mares.

  9.  Anexo: El INSFLUG

  El INSFLUG forma parte del grupo internacional Linux Documentation
  Project, encargndose de las traducciones al castellano de los Howtos
  (Comos), as como la produccin de documentos originales en aquellos
  casos en los que no existe anlogo en ingls.

  En el INSFLUG se orienta preferentemente a la traduccin de documentos
  breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
  :) ), etc.

  Dirjase a la sede del INSFLUG para ms informacin al respecto.

  En la sede del INSFLUG encontrar siempre las ltimas versiones de las
  traducciones:  www.insflug.org. Asegrese de comprobar cul es la
  ltima versin disponible en el Insflug antes de bajar un documento de
  un servidor rplica.

  Se proporciona tambin una lista de los servidores rplica (mirror)
  del Insflug ms cercanos a Vd., e informacin relativa a otros
  recursos en castellano.

  Francisco Jos Montilla, pacopepe@insflug.org.

