Blog literacki, portal erotyczny - seks i humor nie z tej ziemi
Duy-kursor-w-X11 MINI-JTZ
Jak uywa powikszonego kursora myszy z systemem X Window
Joerg Schneider
v2, 11 August 1997
WWeerrssjjaa ppoollsskkaa:: KKrrzzyysszzttooff PP.. JJaassiiuuttoowwiicczz kkppjjaass@@pprriivv..oonneett..ppll
v1.0, 27 sierpnia 1999 roku
______________________________________________________________________
Spis treci
1. Wstp
2. O tym dokumencie
3. Jak To Zrobi
4. Uwagi i ograniczenia
5. Szczegy techniczne
6. Inne pomysy jak poprawi widoczno kursora myszy
7. Informacje zwizane z tym tematem
7.1 Jak uywa font serwera
7.1.1 instalacja font serwera
7.2 Jak uzyska rda bdf jakiego fonta
______________________________________________________________________
11.. WWssttpp
Jest kilka przyczyn dla ktrych standardowy kursor myszy jest dla
niektrych niewaciwy :
+o praca na notebooku w X Window z LCD o niskim kontracie
+o na zwykych monitorach przy wysokich rozdzielczociach, np. 1600x1280
+o u osb z osabionym wzrokiem nawet na zwykych monitorach przy niszych
rozdzielczociach
W tych przypadkach pomocne s powikszone kursory myszy. Optymalnie
powinno to by robione przez jeden program X-w, ktry automatycznie
powikszaby kady kursor myszy.
O ile wiem, nie da si w prosty sposb napisa takiego programu, poniewa
protok X-w nie umoliwia dostpu do kursora myszy. Wicej szczegw
znajdziesz w rozdziale ``Szczegy techniczne'' poniej.
Jeli naszym celem nie jest takie oglne rozwizanie, co nieco da si
zrobi :
Istnieje standardowy zestaw kursorw myszy, znajdujcy si w foncie
kursora ( wyprbuj polecenie xfd -fn cursor wtedy go obejrzysz).
Wikszo programw wykorzystuje te kursory myszy i zasada polega na
zastpowaniu standardowego kursora jego powikszon wersj.
22.. OO ttyymm ddookkuummeenncciiee
Zostaem umotywowany do napisania tego MINIHOWTO, kiedy sabo widzcy
kolega student zapyta mnie jak powikszy kursor myszy w X-ach. Kiedy
ju si dowiedziaem jak to zrobi, napisaem pierwotn wersj tego
dokumentu. Poniewa wiedza o sposobie tu opisanym nie jest zapewne
powszechna, zdecydowaem podzieli si ni i utworzyem z tego dokumentu
MINIHOWTO linuksowe, mimo tego e, _n_i_e _j_e_s_t _o_n _w_c_a_l_e _t_y_p_o_w_y _d_l_a
_L_i_n_u_k_s_a. Jak inne MINIHOWTO, znajduje si on na macierzystym serwerze
Linux Documentation Project (LDP)
Matryca
tego dokumentu jest w formacie SGML/linuxdoc. Dziki temu moliwe jest
automatyczne tworzenie wersji w nastpujcych formatach (ktre s dostpne
w tym samym miejscu co matryca) : html, text, LaTeX, DVI, PostScript i
GNU info.
Shinobu Miyata
MINIHOWTO na japoski. Znajduje si ono tu :
33.. JJaakk TToo ZZrroobbii
Postpuj zgodnie z instrukcj podan poniej. Jeli nie chcesz sam
odnajdywa i kompilowa pakietu bdfresize, moesz przej do punktu 3 i
cign powikszony font zamiast tworzy go.
1. we cursor.bdf, plik rdowy fonta kursora, z jakiej dystrybucji X-w,
n. p. z
(jeli tam go nie bdzie sprbuj archie lub pobierz go ode mnie
2. zdobd, skompiluj i zainstaluj pakiet bdfresize z
(lub ode mnie
zcat bdfresize-1.4.tar.Z | tar xf -
cd bdfresize-1.4
xmkmf
make
W Linuksie pewnie trzeba uy:
make CCOPTIONS='-include /usr/include/bsd/bsd.h' clean all
3. utwrz katalog i zainstaluj w nim powikszony font kursora
(powikszenie dwukrotne w tym przykadzie):
mkdir $HOME/fonts
bdfresize -f 2 cursor.bdf | bdftopcf >$HOME/fonts/cursor2.pcf
mkfontdir $HOME/fonts
Przygotowaem kilka powikszonych fontw kursora
cych stopniach powikszenia: 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8 i 16-krotne.
Mona je cign jeden z nich i zainstalowa w $HOME/fonts jeeli nie
chcesz uywa bdfresize.
4. zmodyfikuj plik .xinitrc lub .xsession : przed uruchomieniem
jakiegokolwiek klienta X-w (ktry uywa kursora) nastpujce polecenie
musi by wykonane :
xset +fp $HOME/fonts
xsetroot -cursor_name X_cursor
5. przerwij sesj X-w i zrestartuj.
Gotowe--teraz wszystkie kursory myszy powinny by podwojonych rozmiarw.
44.. UUwwaaggii ii ooggrraanniicczzeenniiaa
+o X serwery mog mie pewien limit dla maksymalnego rozmiaru kursora,
szczeglnie gdy uywaj hardware-owej implementacji kursora myszy.
Inne X serwery nie maj takiego ograniczenia. N. p. XF86_S3 3.3
pracuje nawet z kursorem myszy 512x512 (raczej wolno).
+o Powikszony kursor myszy musi mie tak sam nazw jak pierwotny font
(_n_a_z_w_a _f_o_n_t_a musi by cursor, _n_a_z_w_a _p_l_i_k_u nie ma znaczenia)--nie ma
problemu bo bdfresize nie zmienia nazwy fonta.
+o katalog z nowym fontem kursora musi znajdowa si przed katalogiem ze
standardowym fontem kursora w ciece fontw--wykonuje si to za pomoc
xset +fp (w przeciwiestwie do xset fp+).
+o Zmiany w $HOME/fonts/ bd widoczne dopiero po wydaniu polecenia
mkfontdir $HOME/fonts; xset fp rehash i tylko w nowo otworzonych
klientach X-w (dokadniej nowo utworzonych kursorach).
+o xset +fp path moe nie dziaa na terminalu X-w. W tym wypadku mona uy
font serwera (zobacz w rozdziale ``Jak uywa font serwera'') jeli
jest wspierany przez terminal X-w lub jak inny sposb instalacji
fonta na terminalu X-w (zazwyczaj moe to tylko wykona administrator
systemu).
+o Identyczne podejcie moe by zastosowane dla fontw olcursor i
decw$cursor i i kadego innego fontu kursora, ktry znajdziesz.
+o Fonty kursora stworzone przez bdfresize nie wygldaj rwno,
szczeglnie przy wyszych stopniach powikszenia. Byoby dobrze gdyby
kto mg stworzy rcznie lepiej wygldajce wersje niektrych czciej
uywanych rozmiarw.
55.. SSzzcczzeeggyy tteecchhnniicczznnee
Czy jest moliwe napisanie programu dla X-w, powikszajcego kursory
automatycznie?
RRoozzwwiizzaanniiee ((cczzcciioowwee))
Uyj XTestCompareCursor z rozszerzenia XTEST. We wszystkich
oknach nad ktrymi znajduje si kursor porwnuj kursor tego okna z
zestawem 'znanych' kursorw (n. p. z fontu kursora ). Jeeli
kursor istnieje, zamie go na powikszony odpowiednik, w innym
przypadku albo zostaw bez zmian albo zamie na standardowy
kursor. To zadziaa tylko tam, gdzie dostpne jest rozszerzenie
XTest.
RRoozzwwiizzaanniiee 22
Napisz proxy X serwer, ktry przekazuje wszystkie dania klientw
bez zmian, lecz przechwytuje wszystkie dania odnoszce si do
funkcji Xlib XCreate*Cursor. dania XCreate*Cursor powinny by
zmieniane tak aby powikszonego kursora.
Ten serwer proxy symuluje nowy display, n. p. :1. Wszystkie
programy klienckie, ktre cz si z tym display (n. p. xterm
-display :1) s wywietlane na rzeczywistym serwerze (zwykle :0) i
ich kursory myszy s automatycznie powikszone. Kursory myszy
klientw, ktre cz si z :0 pozostan _n_i_e_z_m_i_e_n_i_o_n_e.
66.. IInnnnee ppoommyyssyy jjaakk ppoopprraawwii wwiiddoocczznnoo kkuurrssoorraa mmyysszzyy
Oto niektre pomysy dla raczej prostych programw dla X-w, ktre sprawi e
kursor myszy bdzie lepiej widoczny.
+o Kiedy "gorcy klawisz" zostanie nacinity wywietl co (duy kursor, mae
okno, ksztat okna) w pozycji kursora na 0,5 s.
+o uyj XRecolorCursor do zmiany koloru kursora co 0,1 s.
Bardziej ambitnym projektem byyby llaaddyy mmyysszzyy a la windoze, t. j. kiedy
mysz jest przesuwana i kursor myszy musi by wywietlony w innej
pozycji, wtedy "stary kursor" nie znika od razu, ale z pewnym
opnieniem. lady myszy najlepiej byoby zaimplementowa w X serwerze,
ale mona by to wykona jako klienta X-w, lub lepiej jako serwer proxy (
dokadniejszy opis w rozdziale ``Szczegy techniczne'').
77.. IInnffoorrmmaaccjjee zzwwiizzaannee zz ttyymm tteemmaatteemm
77..11.. JJaakk uuyywwaa ffoonntt sseerrwweerraa
Font serwer jest usug sieciow, ktra dostarcza zestaw fontw X11 z
nieskomplikowanym protokoem. Mona do niego wysya zapytania, ktre fonty
s dostpne i zada od niego fontu bitmapowego.
Font serwer moe by przydatny do dostarczenia X serwerowi
zmodyfikowanego fontu kursora, zamiast informowania gdzie w file
systemie on si znajduje.
Ta metoda jest szczeglnie przydatna jeli uywa si kilku maszyn, ktre
nie maja tego samego systemu plikw lub jeli uywa si X terminali, ktre
wspieraj protok font serwera.
Font serwer i zwizane z nim narzdzia s w dystrybucji X11R5+ (o ile
wiem).
77..11..11.. iinnssttaallaaccjjaa ffoonntt sseerrwweerraa
Przeczytaj strony podrcznika systemowego _f_s_(_1_), _f_s_l_s_f_o_n_t_s_(_1_) (lub
_x_f_s_(_1_), _x_f_s_l_s_f_o_n_t_s_(_1_) pod X11R6) i sprbuj--to nie jest trudne.
Powiedzmy, e serwer jest uruchomiony na hocie some.host.edu na porcie
7100. Instalacj mona wyprbowa poleceniem fslsfonts -server
some.host.edu:7100
eby naprawd uruchomi font serwer naley wyda polecenie :
xset +fp tcp/some.host.edu:7100
ktre nie powinno da informacji o bdzie.
77..22.. JJaakk uuzzyysskkaa rrddaa bbddff jjaakkiieeggoo ffoonnttaa
Jeli uruchomie font serwer uyj po prostu fstobdf doczonego do serwera
fontw.
Inne wyjcie to uycie getbdf ktry moe zapisa dowolny zainstalowany font
X11 do pliku bdf.