AAllaarrmm wwiizzuuaallnnyy ((mmaałłee 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 dźwiękowego.
______________________________________________________________________
Spis treści
1. Licencja oraz prawa autorskie
2. Wstęp
3. Głośniczkotomia
4. Konfiguracja dźwięku na poszczególnych konsolach
5. Podstawowe wiadomości o plikach termcap i terminfo/*
6. Definiowanie alarmu wizualnego
7. Wyłączenie alarmu dźwiękowego na konsoli tekstowej
8. Uciszanie aplikacji
9. Ciemna strona zagadnienia
10. Od tłumacza
______________________________________________________________________
11.. LLiicceennccjjaa oorraazz pprraawwaa aauuttoorrsskkiiee
Copyright (c) 1997, Alessandro Rubini
Niniejszy dokument rozpowszechniany jest na warunkach określonych 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. Jeśli nie otrzymałeś treści
licencji FDL z tym dokumentem, zapoznać się z nią możesz pod adresem
.
22.. WWssttęępp
Konsola Linuksa wydaje sygnał dźwiękowy (brzęczyk) po natrafieniu na
znak BEL (kod ascii 7). Jest to rozsÄ…dnie wybrana standardowa reakcja,
jednak wielu użytkowników nie lubi, kiedy ich komputer wydaje dźwięki.
Niniejszy dokument opisuje sposób takiej konfiguracji programów, aby
nie wysyłały one kodu BEL oraz takiej konfiguracji jądra i X, aby
komputer milczał nawet wtedy, gdy kod BEL zostanie wysłany. Większość
tekstu dotyczy konsoli, ponieważ konfiguracja serwera X w tym zakresie
nie powinna powodować trudności.
Według mnie temperowanie niesfornej maszyny należy rozpocząć na
poziomie sprzętowym; np. w moim komputerze głośniczka _n_i_e _m_a!
33.. GGłłoośśnniicczzkkoottoommiiaa
Głośniczkotomia jest najskuteczniejszym rozwiązaniem problemu alarmu
dźwiękowego. Jak sama nazwa wskazuje, sposób polega na fizycznym
odłączeniu lub usunięciu głośniczka. Operacja jest prosta -- można się
nawet obyć bez znieczulenia.
Istnieją też sposoby nieco bardziej wyrafinowane. Pecety wyposażone są
zwykle w przełącznik TURBO. Podczas pracy w środowisku wielozadaniowym
guziczka tego nigdy się właściwie do spowalniania procesora nie używa;
nie ma takiej potrzeby nawet w przypadku gier opartych na programowych
pętlach. Niestety, przyspieszyć komputera tym guziczkiem się nie da;
można go za to wykorzystać do włączania/wyłączania głośniczka.
Głośniczek, choć generalnie irytujący, czasem jednak bywa przydatny
np. do zaanonsowania zakończenia długiej kompilacji.
Aby zmienić funkcję przełącznika, po prostu odłącz go od płyty głównej
i połącz szeregowo z głośniczkiem.
W przypadku komputerów przenośnych (laptopów), dostęp do brzęczyka
jest niestety ograniczony; brak też przełącznika, któremu możnaby
podporządkować nowe zadanie. Użytkownicy takich komputerów muszą
ograniczyć się do rozwiązań programowych, o czym poniżej.
44.. KKoonnffiigguurraaccjjaa ddźźwwiięękkuu nnaa ppoosszzcczzeeggóóllnnyycchh kkoonnssoollaacchh
Od wersji jądra 1.3.43 wzwyż, dzięki łatce Martina Maresa na
console.c, istnieje możliwość wyboru częstotliwości i długości trwania
alarmu dźwiękowego. Wysyłając odpowiednie sekwencje znaków
niedrukowalnych na poszczególne konsole można konsolom tym przypisać
różne właściwości dźwięku (lub jego brak). Całość sprowadza się do
umieszczenia poleceń konfigurujących dźwięk w pliku ~/.login lub
~/.profile. Odpowiedzialne za właściwości dźwięku kody to:
· ESC-[10;xx] -- okreÅ›la czÄ™stotliwość dźwiÄ™ku w Hertzach. Dozwolone
wartości xx mieszczą się w zakresie od 21 do 32766; wynik działania
wartości przekraczających te granice nie jest zdefiniowany. W
przypadku braku argumentu xx ('ESC-[10]') stosowana jest wartość
domyślna (750Hz)
· ESC-[11;xx] -- okreÅ›la dÅ‚ugość trwania dźwiÄ™ku w milisekundach.
Wartość domyślna (125 ms) stosowana jest w przypadku wybrania czasu
przekraczającego 2 sekundy oraz jeśli argument xx nie jest podany
('ESC-[10]').
PPrrzzyykkłłaadd:: Aby ustawić częstotliwość dźwięku na 50Hz a jego długość 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ć dźwięku, niewykluczone jednak, że w przyszłości ta
funkcjonalność zostanie dodana.
Jeśli używasz jądra 1.3.43 lub nowszego i satysfakcjonuje cię powyższe
rozwiązanie, możesz tu zakończyć czytanie. Jeśli jednak używasz
starszego jądra lub chciałbyć stosować alarm wizualny zamiast
dźwiękowego, czytaj dalej.
55.. PPooddssttaawwoowwee wwiiaaddoommoośśccii oo pplliikkaacchh tteerrmmccaapp ii tteerrmmiinnffoo//**
Tekstowy plik /etc/termcap to baza danych o możliwościach terminali
(ang. tteerrmminal ccaappablilities -- stąd nazwa). Wiele programów (np.
tcsh, bash, vi i wszystkie korzystajÄ…ce z curses) korzysta przy
przesuwaniu kursora i innych operacjach zwiÄ…zanych z ekranem z
zawartych w tym pliku informacji.
Baza /etc/termcap opisuje poszczególne rodzaje terminali. Do
odpowiedniej części tej bazy kieruje aplikacje zmienna środowiskowa
TERM.
Poszczególne możliwości terminali opisane są w termcap dwuliterowymi
kodami, po których następują sekwencje znaków wymaganych do
osiągnięcia danego efektu. Kolejne wpisy przedzielone są dwukropkiem
(":"). Na przykład alarm dźwiękowy (kod "bl") zazwyczaj opisany jest
jako "bl=^G". Wpis taki oznacza, że brzęczyk uzyskuje się sekwencją
control-G (ascii BEL).
Obok alarmu dźwiękowego ("bl") rozpoznawany jest również wizualny
("vb" -- visual bell), jednak zazwyczaj brakuje tego wpisu w
poświęconej terminalowi "linux" części termcap.
Większość nowszych aplikacji i bibliotek zamiast z termcap korzysta z
bazy danych terminfo. W przeciwieństwie do termcap, termifo nie jest
jednym wielkim plikiem, a katalogiem, w którym opisy poszczególnych
terminali umieszczone sÄ… w osobnych plikach, a te z kolei w
podkatalogach o nazwach będących kolejnymi pierwszymi literami
alfabetu. Na przykład opis terminala "linux" znajdzie się w pliku
/usr/lib/terminfo/l/linux (lub /usr/share/terminfo/l/linux -- przyp.
tłum). Opisy terminali w terminfo są plikami binarnymi, kompiluje je
siÄ™ programem tic (patrz man tic).
66.. DDeeffiinniioowwaanniiee aallaarrmmuu wwiizzuuaallnneeggoo
Dodanie brakujÄ…cej definicji alarmu wizualnego "vb" do /etc/termcap
nie jest trudne. Oto metoda Dennisa Henriksena (duke@diku.dk): należy
odnaleźć sekcję "linux" (w starszych dystrybucjach sekcja ta nazywa
się "console") i dodać w niej następującą linię:
:vb=\E7\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l\E8:\
Ostatni ukośnik zapobiega złamaniu linii.
Wg opisu Dennisa powyższa linia
· zapamiÄ™tuje pozycjÄ™ kursora (na wszelki wypadek),
· kilkakrotnie zmienia tÅ‚o konsoli (z normalnego na odwrócone i z
powrotem)
· i umieszcza kursor w zapamiÄ™tanej pozycji.
77.. WWyyłłąącczzeenniiee aallaarrmmuu ddźźwwiięękkoowweeggoo nnaa kkoonnssoollii tteekkssttoowweejj
Jeśli chcesz zmusić konsolę do używania alarmu wizualnego zamiast
dźwiękowego (błysk zamiast pisku) znajdź w pliku termcap w sekcji dla
twojego terminala definicję efektu "bl" i zmień ją na definicję błysku
(podanÄ… w poprzednim rozdziale). To rozwiÄ…zanie jest najwygodniejsze,
jeśli nie chcesz określać osobno zachowania różnych aplikacji. Ja
stosuję ten sposób na wszystkich moich komputerach z Linuksem, w
których nie mogę fizycznie odłączyć głośniczka.
88.. UUcciisszzaanniiee aapplliikkaaccjjii
Poniżej podaję niekompletny spis programów, które można przekonać do
używania podanej w termcap lub terminfo definicji "vb" bieżącego
terminala.
· Serwer X: konfiguracji brzÄ™czyka dokonuje siÄ™ poleceniem "xset b".
Polecenie to przyjmuje trzy numeryczne argumenty: głośność,
częstotliwość oraz długość. "xset -b" całkowicie wyłącza brzęczyk.
Konfiguracja działa na wszystkie programy uruchomione pod X.
· xterm: xterm umie zinterpretować sygnaÅ‚ BEL zarówno jako alarm
dźwiękowy, jak i wizualny. Jeśli zdecydujesz się na alarm
dźwiękowy, zadziałają ustawienia "xset" (patrz punkt "Serwer X").
Alarm wizualny uzyskać można poprzez podanie opcji "-vb" przy
uruchamianiu xterm-a lub zdefiniowanie zasobów "xterm*visualBell:
true". Podczas działania xterma rodzaj alarmu przełączać można w
menu wywoływanym przez control+lewy_przycisk_myszy.
Jeśli używasz X, prawdopodobnie nie zainteresują cię poniższe
informacje.
· tcsh (6.04 i nowsze): "set visiblebell". InstrukcjÄ™ tÄ™ można
umieścić w pliku .cshrc lub podać interaktywnie. Wyłączenie alarmu
wizualnego: "unset visiblebell". Wyłączenie alarmu wizualnego oraz
dźwiękowego: "set nobeep".
· bash (o ile wiem wszystkie wersje): umieść liniÄ™ "set bell-style
visible" w pliku ~/.bashrc. Zamiast "visible" (wizualny) możesz
wpisać "audible" (dźwiękowy) lub "none" (żaden).
· bash (z readline, oraz inne aplikacje korzystajÄ…ce 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" (pamiętaj o dwukropku). Zamiana w
powyższej linii słowa "flash" na "noflash" spowoduje wyłączenie
alarmu wizualnego.
· emacs: umieść liniÄ™ "(setq visible-bell t)" w pliku ~/.emacs.
Zamiana w powyższej komendzie końcowej litery "t" na słowo "nil"
spowoduje wyłączenie alarmu wizualnego.
· less: alarm wizualny wÅ‚Ä…cza siÄ™ podajÄ…c w linii poleceÅ„ opcjÄ™ "-q",
natomiast wszystkie rodzaje alarmu wyłącza się opcją "-Q". Opcje
domyślne można umieścić w zmiennej środowiskowej "LESS".
· screen: użyj kombinacji klawiszy CtrlA-CtrlG. Zmieni to zachowanie
wszystkich wirtualnych sesji. Więcej informacji na ten temat
znajdziesz w podręczniku systemowym ("man screen") w sekcji
"CUSTOMIZATION".
99.. CCiieemmnnaa ssttrroonnaa zzaaggaaddnniieenniiaa
Niestety nie wszystkie aplikacje korzystajÄ… z informacji zawartych w
bazach termcap lub terminfo. Większość małych programików ma na
sztywno w kodzie C zaszyte "\a" (alarm). "\a" w ciągach znaków w
plikach binarnych interpretowane jest jako ascii BEL. "Prawdziwych"
aplikacji problem ten zazwyczaj nie dotyczy, ale uważaj na produkty
początkujących programistów C -- najgorsi są tu studenci informatyki!
Jedynym sposobem uciszenia takich programów jest głośniczkotomia lub
wykorzystanie sekwencji kodów podanej przez Martina Maresa.
1100.. OOdd ttłłuummaacczzaa
Wersja oryginalna dokumentu: .
Tłumaczenia pozostałych dokumentów HOWTO na język polski:
.
Copyright for the translation
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk
Wyszukiwarka
Podobne podstrony:
visual bell pl 8
visual bell pl
visual bell pl 1
visual bell pl 2
visual bell pl 3
visual bell pl 6
visual bell pl 10
visual bell pl 9
visual bell pl 9
Visual Bell pl (2)
visual bell pl 4
visual bell pl 7
visual bell pl 5
visual bell 4 5pkniwehhw3htpsc6sytlupziuazr6mxnuhcr7q 5pkniwehhw3htpsc6sytlupziuazr6mxnuhcr7q
visual bell 8 q46jeyxjx4qlbajrd4coeh5h6xkzndblpvkx7aa q46jeyxjx4qlbajrd4coeh5h6xkzndblpvkx7aa
visual bell 2 7uyeu6iv7q23ovlwq52gke36yt46jiydylcpjsi 7uyeu6iv7q23ovlwq52gke36yt46jiydylcpjsi
visual bell 5 oovhlxjlj2wr6izrt7p7ax6okno2ccmjiaiuy4a oovhlxjlj2wr6izrt7p7ax6okno2ccmjiaiuy4a
visual bell 7 7mwbuybvfgv36u6kcnegjnm3ph7stetaj7rf7by 7mwbuybvfgv36u6kcnegjnm3ph7stetaj7rf7by
visual bell 1 yg6ecaysoyqc6jbkj4f6geboudcm422f72rl7ri yg6ecaysoyqc6jbkj4f6geboudcm422f72rl7ri
więcej podobnych podstron