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 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330
|
AAllaarrmm wwiizzuuaallnnyy ((mmaaee JJTTZZ))
Alessandro Rubini, rubini@linux.it
v2.3, 3 grudnia 2001
Wersja polska: Tomasz 'tsca' Sienicki, tsca@edb.dk
v1.01, 10 grudnia 2001
Jak uciszy komputer: alarm wizualny zamiast dwikowego.
______________________________________________________________________
Spis treci
1. Licencja oraz prawa autorskie
2. Wstp
3. Goniczkotomia
4. Konfiguracja dwiku na poszczeglnych konsolach
5. Podstawowe wiadomoci o plikach termcap i terminfo/*
6. Definiowanie alarmu wizualnego
7. Wyczenie alarmu dwikowego na konsoli tekstowej
8. Uciszanie aplikacji
9. Ciemna strona zagadnienia
10. Od tumacza
______________________________________________________________________
11.. LLiicceennccjjaa oorraazz pprraawwaa aauuttoorrsskkiiee
Copyright (c) 1997, Alessandro Rubini
Niniejszy dokument rozpowszechniany jest na warunkach okrelonych w
licencji _G_N_U _F_r_e_e _D_o_c_u_m_e_n_t_a_t_i_o_n _L_i_c_e_n_s_e. Jeli nie otrzymae treci
licencji FDL z tym dokumentem, zapozna si z ni moesz pod adresem
<http://www.fsf.org/licenses/fdl.html>.
22.. WWssttpp
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.
Wedug mnie temperowanie niesfornej maszyny naley rozpocz na
poziomie sprztowym; np. w moim komputerze goniczka _n_i_e _m_a!
33.. GGoonniicczzkkoottoommiiaa
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.
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.
Aby zmieni funkcj przecznika, po prostu odcz go od pyty gwnej
i pocz szeregowo z goniczkiem.
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.
44.. KKoonnffiigguurraaccjjaa ddwwiikkuu nnaa ppoosszzcczzeeggllnnyycchh kkoonnssoollaacchh
Od wersji jdra 1.3.43 wzwy, dziki atce Martina Maresa na
console.c, 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 ~/.login lub
~/.profile. Odpowiedzialne za waciwoci dwiku kody to:
ESC-[10;xx] -- 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-[10]') stosowana jest warto
domylna (750Hz)
ESC-[11;xx] -- 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-[10]').
PPrrzzyykkaadd:: Aby ustawi czstotliwo dwiku na 50Hz a jego dugo na
1 sek, wydaj w bashu polecenie 'echo -e "\\33[10;50]\\33[11;1000]"'
(argument -e oznacza 'interpretuj znaki niedrukowalne').
Odpowiednikiem tej komendy dla tcsh jest 'echo
"\\033[10;50]\\033[11;1000]"'.
adna ze znanych mi obecnie wersji polecenia setterm nie potrafi
konfigurowa dwiku, niewykluczone jednak, e w przyszoci ta
funkcjonalno zostanie dodana.
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.
55.. PPooddssttaawwoowwee wwiiaaddoommooccii oo pplliikkaacchh tteerrmmccaapp ii tteerrmmiinnffoo//**
Tekstowy plik /etc/termcap to baza danych o moliwociach terminali
(ang. tteerrmminal ccaappablilities -- std nazwa). Wiele programw (np.
tcsh, bash, vi i wszystkie korzystajce z curses) korzysta przy
przesuwaniu kursora i innych operacjach zwizanych z ekranem z
zawartych w tym pliku informacji.
Baza /etc/termcap opisuje poszczeglne rodzaje terminali. Do
odpowiedniej czci tej bazy kieruje aplikacje zmienna rodowiskowa
TERM.
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 "bl=^G". Wpis taki oznacza, e brzczyk uzyskuje si sekwencj
control-G (ascii BEL).
Obok alarmu dwikowego ("bl") rozpoznawany jest rwnie wizualny
("vb" -- visual bell), jednak zazwyczaj brakuje tego wpisu w
powiconej terminalowi "linux" czci termcap.
Wikszo nowszych aplikacji i bibliotek zamiast z termcap korzysta z
bazy danych terminfo. W przeciwiestwie do termcap, termifo 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
/usr/lib/terminfo/l/linux (lub /usr/share/terminfo/l/linux -- przyp.
tum). Opisy terminali w terminfo s plikami binarnymi, kompiluje je
si programem tic (patrz man tic).
66.. DDeeffiinniioowwaanniiee aallaarrmmuu wwiizzuuaallnneeggoo
Dodanie brakujcej definicji alarmu wizualnego "vb" do /etc/termcap
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:
:vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\
Ostatni ukonik zapobiega zamaniu linii.
Wg opisu Dennisa powysza linia
zapamituje pozycj kursora (na wszelki wypadek),
kilkakrotnie zmienia to konsoli (z normalnego na odwrcone i z
powrotem)
i umieszcza kursor w zapamitanej pozycji.
77.. WWyycczzeenniiee aallaarrmmuu ddwwiikkoowweeggoo nnaa kkoonnssoollii tteekkssttoowweejj
Jeli chcesz zmusi konsol do uywania alarmu wizualnego zamiast
dwikowego (bysk zamiast pisku) znajd w pliku termcap 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.
88.. UUcciisszzaanniiee aapplliikkaaccjjii
Poniej podaj niekompletny spis programw, ktre mona przekona do
uywania podanej w termcap lub terminfo definicji "vb" biecego
terminala.
Serwer X: konfiguracji brzczyka dokonuje si poleceniem "xset b".
Polecenie to przyjmuje trzy numeryczne argumenty: gono,
czstotliwo oraz dugo. "xset -b" cakowicie wycza brzczyk.
Konfiguracja dziaa na wszystkie programy uruchomione pod X.
xterm: 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 "xterm*visualBell:
true". Podczas dziaania xterma rodzaj alarmu przecza mona w
menu wywoywanym przez control+lewy_przycisk_myszy.
Jeli uywasz X, prawdopodobnie nie zainteresuj ci ponisze
informacje.
tcsh (6.04 i nowsze): "set visiblebell". Instrukcj t mona
umieci w pliku .cshrc lub poda interaktywnie. Wyczenie alarmu
wizualnego: "unset visiblebell". Wyczenie alarmu wizualnego oraz
dwikowego: "set nobeep".
bash (o ile wiem wszystkie wersje): umie lini "set bell-style
visible" w pliku ~/.bashrc. Zamiast "visible" (wizualny) moesz
wpisa "audible" (dwikowy) lub "none" (aden).
bash (z readline, oraz inne aplikacje korzystajce z readline):
umie lini "set prefer-visible-bell" w pliku ~/.inputrc.
nvi i elvis: umie lini "set flash" w pliku ~/.exrc lub
interaktywnie podaj ":set flash" (pamitaj o dwukropku). Zamiana w
powyszej linii sowa "flash" na "noflash" spowoduje wyczenie
alarmu wizualnego.
emacs: umie lini "(setq visible-bell t)" w pliku ~/.emacs.
Zamiana w powyszej komendzie kocowej litery "t" na sowo "nil"
spowoduje wyczenie alarmu wizualnego.
less: alarm wizualny wcza si podajc w linii polece opcj "-q",
natomiast wszystkie rodzaje alarmu wycza si opcj "-Q". Opcje
domylne mona umieci w zmiennej rodowiskowej "LESS".
screen: 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".
99.. CCiieemmnnaa ssttrroonnaa zzaaggaaddnniieenniiaa
Niestety nie wszystkie aplikacje korzystaj z informacji zawartych w
bazach termcap lub terminfo. 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!
Jedynym sposobem uciszenia takich programw jest goniczkotomia lub
wykorzystanie sekwencji kodw podanej przez Martina Maresa.
1100.. OOdd ttuummaacczzaa
Wersja oryginalna dokumentu: <http://sunsite.unc.edu/LDP/>.
Tumaczenia pozostaych dokumentw HOWTO na jzyk polski:
<http://www.jtz.org.pl>.
Copyright for the translation
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk
|