Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > d667a145d78a93cee78c5358ca99c039 > files > 149

howto-text-nl-2006-5mdv2010.0.noarch.rpm

  Visuele beep mini-Howto
  Alessandro Rubini, rubini@linux.it,
  Vertaald door: Ellen Bokhorst, bokkie@nl.linux.org
  v2.3, 3-12-2001

  In dit document wordt uitgelegd hoe termcap kan worden gebruikt om een
  visuele beep op een systeem te configureren en het beschrijft hoe een
  hoorbare beep op verzoek kan worden gedeactiveerd.
  ______________________________________________________________________

  Inhoudsopgave


  1. Copyright en Licentie

  2. Introductie

  3. Speakerectomy

  4. Per console Beep Configuratie

  5. Basisconcepten van termcap en terminfo

  6. Definiëren van een visuele beep

  7. Deactiveren van de hoorbare beep op de tekstconsole

  8. Applicaties opgeven beepen te voorkomen

  9. De donkere kant van het probleem



  ______________________________________________________________________

  1.  Copyright en Licentie

  Dit document is auteursrechtelijk beschermd (c) door Alessandro
  Rubini.

  Dit document wordt gedistribueerd onder de voorwaarden van de GNU Free
  Documentation License. Als het goed is heb je hiervan een kopie
  ontvangen.  Zo niet, dan is het beschikbaar vanaf
  <http://www.fsf.org/licenses/fdl.html>.

  2.  Introductie

  De Linux console driver laat de hoorbare beep klinken wanneer een BEL
  teken wordt uitgevoerd (ASCII-code 7). Alhoewel dit de juiste keuze is
  voor het standaard functioneren, houden veel gebruikers er niet van
  als hun computer deze beep laat horen. Deze mini-Howto is bedoeld om
  uit te leggen hoe aan applicaties te laten weten de BEL-code niet uit
  te voeren.  Hierin wordt ook uitgelegd hoe de kernel en het X Window
  Systeem te instrueren het beepen te voorkomen wanneer een BEL wordt
  uitgevoerd.  Houd in de gaten dat het meeste van dit document
  refereert naar de tekstconsole,aangezien het configureren van de X-
  server een eenvoudige vergaarbak is voor iedere gebruiker die in een
  grafische omgeving werkt.

  Naar mijn mening is de beste manier om een lawaaiige computer het
  zwijgen op te leggen door er hardwarematig iets aan te veranderen, in
  mijn eigen computer zit zelfs geen luidspreker.




  3.  Speakerectomy

  Speakerectomy is verreweg de briljantste oplossing voor het probleem
  met de hoorbare beep. Zoals de naam impliceert, bestaat het uit het
  verwijderen van de beeps door het verwijderen van de beeper.  De
  bewerking is rechttoe rechtaan en je hebt zelfs geen verdoving nodig,
  maar als je dat wilt is er plaats voor enig raffinement.

  PC's worden gewoonlijk uitgerust met een dwaze switch om de CPU klok
  te vertragen. Als je in een multitasking omgeving werkt, wordt de
  switch nooit gebruikt, aangezien je de computer zelfs niet hoeft te
  vertragen om spellen gebaseerd op software loops te draaien. Helaas
  kunnen we de switch niet gebruiken om de processor snelheid te
  verhogen, maar we kunnen het wel gebruiken om de luidspreker te
  activeren/deactiveren.  Soms is de speaker wel handig zelfs al vind je
  een zwijgzame getallenkraker wel prettig, bijvoorbeeld om het einde
  van een langdurige compilatie te signaleren. Om de functionaliteit van
  de switch te veranderen, ontkoppel je het gewoon van het moederbord en
  verbind je de draden in serie met de luidspreker.

  Bezitters van laptop boxen, hebben helaas niet zo eenvoudig toegang
  tot de luidspreker, noch hebben zij een vrije switch voor gebruik van
  een andere taak. De voorkeursoplossing voor die gebruikers is het
  configureren van de software om het beepen te voorkomen, zoals
  hieronder wordt beschreven.

  4.  Per console Beep Configuratie

  Sinds Linux 1.3.43 voegde Martin Mares de mogelijkheid toe de toon en
  duur van de beep te configureren door het wijzigen van console.c.
  Iedere console kan zo worden geconfigureerd dat het voorziet in een
  andere duur en/of toon van het beepgeluid; de taak wordt
  bewerkstelligd door het gebruik van escape sequences voor het console
  device. Je kunt je eigen ~/.profile of ~/.login bestand configureren
  om een ander beepgeluid (of zonodig zonder enige beep) geassocieerd
  met een console te selecteren.

  De escape sequences werken als volgt:

  ·  ESC-[10;xx] selecteert de beepfrequency in Hertz. De waarde zou
     moeten liggen in het bereik, 21-32766, anders is het resultaat
     ongedefinieerd. Als het `xx' argument ontbreekt, is de
     standaardwaarde (750Hz) van toepassing, zoals in `ESC-[10].

  ·  ESC-[11;xx] selecteert de duur van de beep in milliseconden.  Als
     je meer dan 2 seconden opgeeft, geldt de standaardwaarde (125ms).
     Wederom, als het `xx' argument ontbreekt (ESC-[11]) zal de
     standaardwaarde worden gebruikt.

  Om bijvoorbeeld een 50Hz toon voor de duur van één seconde te
  selecteren, gebruik je "echo -e "\\33[10;50]\\33[11;1000]"" met bash
  (waar "-e" betekent `ga uit van Escape sequences'. Als je gebruik
  maakt van tcsh luidt de opdracht hiervoor "echo
  "\\033[10;50]\\033[11;1000]"".

  Alhoewel ik niet bekend ben met een versie van de opdracht setterm die
  een dergelijke configuratie ondersteunt, zou het goed kunnen dat een
  toekomstige versie een opdrachtregeloptie ondersteunt voor het
  configuren van het beepgeluid.

  Als je Linux-1.3.43 of nieuwer draait, ben je wellicht tevreden met de
  escape sequences en hoef je niet verder te lezen. Als je een oudere
  kernel hebt, of je wilt de visuele beep, dan zal je in je schik zijn
  met de rest van het document.


  5.  Basisconcepten van termcap en terminfo

  Het bestand /etc/termcap is een tekstbestand waarin de terminal
  capaciteiten worden opgesomd.  Verscheidene applicaties maken gebruik
  van de termcap informatie om de cursor op het scherm te verplaatsen en
  het doen van andere op het scherm geöriënteerde taken.  tcsh, bash, vi
  en alle op de curses library gebaseerde applicaties maken gebruik van
  de termcap database.

  De database beschrijft verscheidene typen terminals.  De
  omgevingsvariabele TERM selecteert tijdens de uitvoering het juiste
  functioneren, door het benoemen van een termcap veld dat door
  applicaties moet worden gebruikt.

  In de database verschijnt iedere capaciteit van de terminal als een
  uit twee letters bestaande code en een representatie van de feitelijke
  escape sequence welke wordt gebruikt om het gewenste effect te
  krijgen.  Het scheidingsteken tussen de verschillende capaciteiten is
  de dubbele punt (":"). Als een voorbeeld, verschijnt de hoorbare beep,
  met code "bl", gewoonlijk als "tt/bl=^G/". Deze sequence geeft aan dat
  het beepgeluid wordt verkregen door het afdrukken van het control-G
  teken, de ASCII bell.

  In aanvulling op bl wordt de vb herkend.  Het wordt gebruikt als
  representatie van de "visuele bel".  vb ontbreekt gewoonlijk in het
  linux record van het termcap bestand.

  De meeste moderne applicaties en library's maken gebruik van de
  terminfo database in plaats van termcap. Deze database gebruikt een
  bestand per type terminal en komt voor in /usr/lib/terminfo; ter
  voorkoming van zeer grote directory's wordt de beschrijving van ieder
  type terminal opgeslagen in een directory met de naam gelijk aan de
  eerste letter van de naam van het type terminal; het linux record is
  daarom te vinden in de directory /usr/lib/terminfo/l/linux. Om een
  terminfo record te bouwen ``compileer'' je de termcap beschrijving;
  refereer naar het programma tic en de manual page hiervan.

  6.  Definiëren van een visuele beep

  Je kunt het veld vb in je eigen termcap bestand plaatsen, als het nog
  niet voor je is gedefinieerd.  Dennis Henriksen (duke@diku.dk) deed de
  suggestie de volgende regel in het linux record van termcap te
  plaatsen (merk op dat het record in oude distributies console wordt
  genoemd):


       :vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\




  De laatste backslash wordt gebruikt op de newline in de database te
  escapen. Dennis' code doet het volgende (in zijn eigen woorden):

  ·  Bewaar de cursorpositie (gewoon een voorzorgsmaatregel).

  ·  Wijzig de achtergrondkleur verscheidene malen tussen normaal en
     reverse.

  ·  Herstel de cursorpositie.

  7.  Deactiveren van de hoorbare beep op de tekstconsole

  Als je de visuele beep op je console wilt forceren dan kun je het "bl"
  veld in termcap gebruiken en het met dezelfde string definiëren als
  eerder aangegeven voor "vb".  Deze benadering is handig als je iedere
  applicatie niet aan wilt passen (wat hoe dan ook hierna wordt
  beschreven).  Ik gebruik deze optie op alle computers waar ik Linux op
  draai en waar ik de speaker niet kan ontkoppelen.

  8.  Applicaties opgeven beepen te voorkomen

  Dit is een onvolledige lijst met applicaties die kunnen worden
  geïnstrueerd het veld vb te gebruiken voor het huidige type terminal
  (door gebruik van of de informatie in termcapr of die in terminfo):


  ·  De X server: gebruik de opdracht "xset b"  voor het selecteren van
     het functioneren van de beep.  Aan de opdracht kunnen drie
     numerieke argumenten worden opgegeven: volume, toon en duur. "xset
     -b" deactiveert de beep in alle opzichten. Het configureren van de
     X-server heeft effect op alle applicaties die op het display worden
     uitgevoerd.

  ·  xterm: xterm kan iedere beep converteren naar een visuele beep of
     hoorbaar signaal. Als je de hoorbare beep gebruikt, zijn de
     instellingen van "xset" van toepassing.  De bel in xterm is
     standaard hoorbaar, maar je kunt de opdrachtregeloptie "-vb"
     gebruiken en de "xterm*visualBell: true" bron om het om te zetten
     naar een visuele flits. Je kunt tijdens de uitvoering schakelen
     tussen een visueel/hoorbaar signaal door gebruik te maken van het
     menu, dat kan worden aangeroepen met de control-linker-muisknop.
     Als je X draait zal je de volgende informatie zeer waarschijnlijk
     niet nodig hebben.

  ·  tcsh (6.04 en later): "set visiblebell".  De instructie kan worden
     geplaatst in .cshrc of kan interactief worden aangeroepen. Gebruik
     voor het resetten van de hoorbare beep "unset visiblebell". Gebruik
     voor het deactiveren van enige bekendmaking in plaats daarvan "set
     nobeep".

  ·  bash (iedere bash, zover als ik weet): plaats "set bell-style
     visible" in ~/.bashrc. Mogelijke belstijlen zijn ook "none" en
     "audible".

  ·  bash (met readline, als tevens andere op readline gebaseerde
     applicaties): plaats "set prefer-visible-bell" in ~/.inputrc.

  ·  nvi en elvis: plaats "set flash" in ~/.exrc of ":set flash"
     interactief (merk de dubbele punt op). Gebruik noflash in plaats
     van flash? om de visuele beep te deactiveren.

  ·  emacs: plaats "(setq visible-bell t)" in ~/.emacs. Het wordt
     gedeactiveerd door "(setq visible-bell nil)".

  ·  less: gebruik "-q" op de opdrachtregel om de visuele beep te
     gebruiken, gebruik "-Q" voor het deactiveren van enige
     bekendmaking.

     Standaardopties kunnen worden geplaatst in de omgevingsvariabele
     "LESS".

  ·  screen: gebruik de opdracht CtrlA-CtrlG. Het verandert het
     functioneren van alle virtuele schermen.  Raadpleeg de man page
     onder "CUSTOMIZATION" voor het instellen van de standaardwaarde.

  9.  De donkere kant van het probleem

  Het slechte nieuws is dat niet iedere applicatie gebruik maakt van
  termcap of terminfo. In de meeste kleine programma's wordt gebruik
  gemaakt van de 'backslash-a' (alarm) tekens in de C-broncode. De
  "alarm" code wordt een letterlijke ASCII-BEL in de strings zoals
  opgeslagen in het uitvoerbare bestand.  Echte applicaties behoren niet
  tot deze categorie, maar wees voorzichtig met C-beginnelingen die je
  hun eigen programma's geven. Studenten in de computerwetenschap zijn
  het ergste van iedereen, dat verzeker ik je.

  De enige manier om van deze programma's zwijgzame applicaties te maken
  is speakerectomy, of het gebruik van de escape sequences door Martin
  Mares.