1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<META HTTP-EQUIV="content-type" content="text/html; charset=iso-8859-2">
<TITLE>Alarm wizualny (mae JTZ)</TITLE>
</HEAD>
<BODY>
<H1><B>Alarm wizualny (mae JTZ)</B></H1>
<H2>Alessandro Rubini, rubini@linux.it<BR>
v2.3, 3 grudnia 2001<BR>
Wersja polska:Tomasz 'tsca' Sienicki, tsca@edb.dk<BR>
v1.01, 10 grudnia 2001</H2>
<P><HR>
<EM>Jak uciszy komputer: alarm wizualny zamiast dwikowego.</EM>
<HR>
<H2><A NAME="s1">1. Licencja oraz prawa autorskie </A></H2>
<P>Copyright (c) 1997, Alessandro Rubini
<P>Niniejszy dokument rozpowszechniany jest na warunkach okrelonych w licencji
<I>GNU Free Documentation License</I>.
Jeli nie otrzymae treci licencji FDL z tym dokumentem, zapozna si z ni
moesz pod adresem
<A HREF="http://www.fsf.org/licenses/fdl.html">http://www.fsf.org/licenses/fdl.html</A>.
<P>
<H2><A NAME="s2">2. Wstp </A></H2>
<P>Konsola Linuksa wydaje sygna dwikowy (brzczyk) po natrafieniu na znak BEL
(kod ascii 7). Jest to rozsdnie wybrana standardowa reakcja, jednak wielu
uytkownikw nie lubi, kiedy ich komputer wydaje dwiki. Niniejszy dokument
opisuje sposb takiej konfiguracji programw, aby nie wysyay one kodu BEL
oraz takiej konfiguracji jdra i X, aby komputer milcza nawet wtedy, gdy kod
BEL zostanie wysany. Wikszo tekstu dotyczy konsoli, poniewa konfiguracja
serwera X w tym zakresie nie powinna powodowa trudnoci.
<P>Wedug mnie temperowanie niesfornej maszyny naley rozpocz na poziomie
sprztowym; np. w moim komputerze goniczka <EM>nie ma</EM>!
<P>
<H2><A NAME="s3">3. Goniczkotomia </A></H2>
<P>Goniczkotomia jest najskuteczniejszym rozwizaniem problemu alarmu
dwikowego. Jak sama nazwa wskazuje, sposb polega na fizycznym odczeniu
lub usuniciu goniczka. Operacja jest prosta -- mona si nawet oby bez
znieczulenia.
<P>Istniej te sposoby nieco bardziej wyrafinowane. Pecety wyposaone s zwykle
w przecznik TURBO. Podczas pracy w rodowisku wielozadaniowym guziczka tego
nigdy si waciwie do spowalniania procesora nie uywa; nie ma takiej
potrzeby nawet w przypadku gier opartych na programowych ptlach. Niestety,
przyspieszy komputera tym guziczkiem si nie da; mona go za to wykorzysta
do wczania/wyczania goniczka. Goniczek, cho generalnie irytujcy,
czasem jednak bywa przydatny np. do zaanonsowania zakoczenia dugiej
kompilacji. <BR>
Aby zmieni funkcj przecznika, po prostu odcz go od
pyty gwnej i pocz szeregowo z goniczkiem.
<P>W przypadku komputerw przenonych (laptopw), dostp do brzczyka jest
niestety ograniczony; brak te przecznika, ktremu monaby podporzdkowa
nowe zadanie. Uytkownicy takich komputerw musz ograniczy si do rozwiza
programowych, o czym poniej.
<P>
<H2><A NAME="s4">4. Konfiguracja dwiku na poszczeglnych konsolach </A></H2>
<P>Od wersji jdra 1.3.43 wzwy, dziki atce Martina Maresa na <CODE>console.c</CODE>,
istnieje moliwo wyboru czstotliwoci i dugoci trwania alarmu dwikowego.
Wysyajc odpowiednie sekwencje znakw niedrukowalnych na poszczeglne konsole
mona konsolom tym przypisa rne waciwoci dwiku (lub jego brak). Cao
sprowadza si do umieszczenia polece konfigurujcych dwik w pliku
<CODE>~/.login</CODE> lub <CODE>~/.profile</CODE>. Odpowiedzialne za waciwoci
dwiku kody to:
<P>
<UL>
<LI>ESC-<CODE>[10;</CODE>xx<CODE>]</CODE>
-- okrela czstotliwo dwiku w Hertzach. Dozwolone wartoci xx mieszcz
si w zakresie od 21 do 32766; wynik dziaania wartoci przekraczajcych te
granice nie jest zdefiniowany. W przypadku braku argumentu xx
('ESC-<CODE>[10]</CODE>') stosowana jest warto domylna (750Hz)
</LI>
<LI>ESC-<CODE>[11;</CODE>xx<CODE>]</CODE>
-- okrela dugo trwania dwiku w milisekundach. Warto domylna
(125 ms) stosowana jest w przypadku wybrania czasu przekraczajcego 2 sekundy
oraz jeli argument xx nie jest podany ('ESC-<CODE>[10]</CODE>').</LI>
</UL>
<P>
<P><B>Przykad:</B>
Aby ustawi czstotliwo dwiku na 50Hz a jego dugo na 1 sek, wydaj w
bashu polecenie '<CODE>echo -e "\\33[10;50]\\33[11;1000]"</CODE>'
(argument -e oznacza 'interpretuj znaki niedrukowalne'). Odpowiednikiem tej
komendy dla tcsh jest '<CODE>echo "\\033[10;50]\\033[11;1000]"</CODE>'.
<P>adna ze znanych mi obecnie wersji polecenia <CODE>setterm</CODE>
nie potrafi konfigurowa dwiku, niewykluczone jednak, e w przyszoci
ta funkcjonalno zostanie dodana.
<P>Jeli uywasz jdra 1.3.43 lub nowszego i satysfakcjonuje ci powysze
rozwizanie, moesz tu zakoczy czytanie. Jeli jednak uywasz starszego
jdra lub chciaby stosowa alarm wizualny zamiast dwikowego, czytaj dalej.
<P>
<H2><A NAME="s5">5. Podstawowe wiadomoci o plikach termcap i terminfo/* </A></H2>
<P>Tekstowy plik <CODE>/etc/termcap</CODE> to baza danych o moliwociach terminali
(ang. <B>term</B>inal <B>cap</B>ablilities
-- std nazwa). Wiele programw (np. <CODE>tcsh</CODE>, <CODE>bash</CODE>, <CODE>vi</CODE>
i wszystkie korzystajce z <CODE>curses</CODE>)
korzysta przy przesuwaniu kursora i innych operacjach zwizanych z ekranem z
zawartych w tym pliku informacji.
<P>Baza <CODE>/etc/termcap</CODE> opisuje poszczeglne rodzaje terminali. Do
odpowiedniej czci tej bazy kieruje aplikacje zmienna rodowiskowa <CODE>TERM</CODE>.
<P>Poszczeglne moliwoci terminali opisane s w termcap dwuliterowymi kodami,
po ktrych nastpuj sekwencje znakw wymaganych do osignicia danego efektu.
Kolejne wpisy przedzielone s dwukropkiem (":"). Na przykad alarm dwikowy
(kod "bl") zazwyczaj opisany jest jako "<CODE>bl=^G</CODE>".
Wpis taki oznacza, e brzczyk uzyskuje si sekwencj control-G (ascii BEL).
<P>Obok alarmu dwikowego ("bl") rozpoznawany jest rwnie wizualny ("vb" --
visual bell), jednak zazwyczaj brakuje tego wpisu w powiconej terminalowi
"linux" czci termcap.
<P>Wikszo nowszych aplikacji i bibliotek zamiast z <CODE>termcap</CODE>
korzysta z bazy danych <CODE>terminfo</CODE>.
W przeciwiestwie do <CODE>termcap</CODE>, <CODE>termifo</CODE>
nie jest jednym wielkim plikiem, a katalogiem, w ktrym opisy poszczeglnych
terminali umieszczone s w osobnych plikach, a te z kolei w podkatalogach
o nazwach bdcych kolejnymi pierwszymi literami alfabetu. Na przykad
opis terminala "linux" znajdzie si w pliku <CODE>/usr/lib/terminfo/l/linux</CODE>
(lub <CODE>/usr/share/terminfo/l/linux</CODE> -- przyp. tum). Opisy terminali
w terminfo s plikami binarnymi, kompiluje je si programem <CODE>tic</CODE>
(patrz <CODE>man tic</CODE>).
<P>
<H2><A NAME="s6">6. Definiowanie alarmu wizualnego </A></H2>
<P>Dodanie brakujcej definicji alarmu wizualnego "vb" do <CODE>/etc/termcap</CODE>
nie jest trudne. Oto metoda Dennisa Henriksena (duke@diku.dk): naley odnale
sekcj "linux" (w starszych dystrybucjach sekcja ta nazywa si "console") i
doda w niej nastpujc lini:
<BLOCKQUOTE><CODE>
<PRE>
:vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\
</PRE>
</CODE></BLOCKQUOTE>
Ostatni ukonik zapobiega zamaniu linii.<BR>
Wg opisu Dennisa powysza linia
<UL>
<LI>zapamituje pozycj kursora (na wszelki wypadek),</LI>
<LI>kilkakrotnie zmienia to konsoli (z normalnego na odwrcone i z powrotem)</LI>
<LI>i umieszcza kursor w zapamitanej pozycji.</LI>
</UL>
<P>
<H2><A NAME="s7">7. Wyczenie alarmu dwikowego na konsoli tekstowej </A></H2>
<P>Jeli chcesz zmusi konsol do uywania alarmu wizualnego zamiast dwikowego
(bysk zamiast pisku) znajd w pliku <CODE>termcap</CODE>
w sekcji dla twojego terminala definicj efektu "bl" i zmie j na definicj
bysku (podan w poprzednim rozdziale). To rozwizanie jest najwygodniejsze,
jeli nie chcesz okrela osobno zachowania rnych aplikacji. Ja stosuj ten
sposb na wszystkich moich komputerach z Linuksem, w ktrych nie mog fizycznie
odczy goniczka.
<P>
<H2><A NAME="s8">8. Uciszanie aplikacji </A></H2>
<P>Poniej podaj niekompletny spis programw, ktre mona przekona do uywania
podanej w <CODE>termcap</CODE> lub <CODE>terminfo</CODE>
definicji "vb" biecego terminala.
<P>
<UL>
<LI>Serwer X: konfiguracji brzczyka dokonuje si poleceniem "<CODE>xset b</CODE>".
Polecenie to przyjmuje trzy numeryczne argumenty: gono,
czstotliwo oraz dugo. "<CODE>xset -b</CODE>"
cakowicie wycza brzczyk. Konfiguracja dziaa na wszystkie
programy uruchomione pod X.
</LI>
<LI><CODE>xterm</CODE>:
xterm umie zinterpretowa sygna BEL zarwno jako alarm dwikowy, jak
i wizualny. Jeli zdecydujesz si na alarm dwikowy, zadziaaj
ustawienia "xset" (patrz punkt "Serwer X"). Alarm wizualny uzyska
mona poprzez podanie opcji "-vb" przy uruchamianiu xterm-a lub
zdefiniowanie zasobw "<CODE>xterm*visualBell: true</CODE>".
Podczas dziaania xterma rodzaj alarmu przecza mona w menu
wywoywanym przez control+lewy_przycisk_myszy.<BR>
Jeli uywasz X, prawdopodobnie nie zainteresuj ci ponisze informacje.
</LI>
<LI><CODE>tcsh</CODE> (6.04 i nowsze): "<CODE>set visiblebell</CODE>".
Instrukcj t mona umieci w pliku <CODE>.cshrc</CODE>
lub poda interaktywnie. Wyczenie alarmu wizualnego: "<CODE>unset visiblebell</CODE>".
Wyczenie alarmu wizualnego oraz dwikowego: "<CODE>set nobeep</CODE>".
</LI>
<LI><CODE>bash</CODE> (o ile wiem wszystkie wersje):
umie lini "<CODE>set bell-style visible</CODE>" w pliku <CODE>~/.bashrc</CODE>.
Zamiast "visible" (wizualny) moesz wpisa "audible" (dwikowy)
lub "none" (aden).
</LI>
<LI><CODE>bash</CODE> (z <CODE>readline</CODE>,
oraz inne aplikacje korzystajce z <CODE>readline</CODE>):
umie lini "<CODE>set prefer-visible-bell</CODE>" w pliku <CODE>~/.inputrc</CODE>.
</LI>
<LI><CODE>nvi</CODE> i <CODE>elvis</CODE>: umie lini "<CODE>set flash</CODE>"
w pliku <CODE>~/.exrc</CODE> lub interaktywnie podaj "<CODE>:set flash</CODE>"
(pamitaj o dwukropku). Zamiana w powyszej linii sowa "flash"
na "noflash" spowoduje wyczenie alarmu wizualnego.
</LI>
<LI><CODE>emacs</CODE>: umie lini "<CODE>(setq visible-bell t)</CODE>" w
pliku <CODE>~/.emacs</CODE>. Zamiana w powyszej komendzie kocowej litery
"t" na sowo "nil" spowoduje wyczenie alarmu wizualnego.
</LI>
<LI><CODE>less</CODE>:
alarm wizualny wcza si podajc w linii polece opcj "<CODE>-q</CODE>",
natomiast wszystkie rodzaje alarmu wycza si opcj "<CODE>-Q</CODE>".
Opcje domylne mona umieci w zmiennej rodowiskowej "<CODE>LESS</CODE>".
</LI>
<LI><CODE>screen</CODE>:
uyj kombinacji klawiszy CtrlA-CtrlG. Zmieni to zachowanie wszystkich
wirtualnych sesji. Wicej informacji na ten temat znajdziesz w
podrczniku systemowym ("man screen") w sekcji "CUSTOMIZATION".</LI>
</UL>
<P>
<H2><A NAME="s9">9. Ciemna strona zagadnienia </A></H2>
<P>Niestety nie wszystkie aplikacje korzystaj z informacji zawartych w bazach
<CODE>termcap</CODE> lub <CODE>terminfo</CODE>.
Wikszo maych programikw ma na sztywno w kodzie C zaszyte "\a" (alarm).
"\a" w cigach znakw w plikach binarnych interpretowane jest jako ascii BEL.
"Prawdziwych" aplikacji problem ten zazwyczaj nie dotyczy, ale uwaaj na
produkty pocztkujcych programistw C -- najgorsi s tu studenci informatyki!<BR>
Jedynym sposobem uciszenia takich programw jest goniczkotomia lub
wykorzystanie sekwencji kodw podanej przez Martina Maresa.
<P>
<H2><A NAME="s10">10. Od tumacza </A></H2>
<P>
<P>Wersja oryginalna dokumentu:
<A HREF="http://sunsite.unc.edu/LDP/">http://sunsite.unc.edu/LDP/</A>.<BR>
Tumaczenia pozostaych dokumentw HOWTO na jzyk polski:<BR>
<A HREF="http://www.jtz.org.pl">http://www.jtz.org.pl</A>.
<P>Copyright for the translation<BR>
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk
<P>
</BODY>
</HTML>
|