Duy-kursor-w-X11 MINI-JTZ Jak uywa powikszonego kursora myszy z systemem X Window Joerg Schneider <mailto:joerg.schneider@ira.uka.de> 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) <http://sunsite.unc.edu/LDP/HOWTO/>. Matryca <http://i11www.ira.uka.de/~schneid/X11-big-cursor/master/> 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 <mailto:shinobu@emichan.rim.or.jp> przetumaczy to MINIHOWTO na japoski. Znajduje si ono tu : <http://i11www.ira.uka.de/~schneid/jp/X11-big-cursor/>. 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 <ftp://ftp.x.org/pub/R6.3/xc/fonts/bdf/misc/cursor.bdf> (jeli tam go nie bdzie sprbuj archie lub pobierz go ode mnie <http://i11www.ira.uka.de/~schneid/X11-big-cursor/cursor.bdf>). 2. zdobd, skompiluj i zainstaluj pakiet bdfresize z <ftp://ftp.cs.titech.ac.jp/X11/contrib/Local/bdfresize-1.4.tar.Z> (lub ode mnie <http://i11www.ira.uka.de/~schneid/X11-big- cursor/bdfresize-1.4.tar.gz>): 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 <http://i11www.ira.uka.de/~schneid/X11-big-cursor/fonts/> o nastpuj- 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.