Duży-kursor-w-X11 MINI-JTZ

Jak używać powiększonego kursora myszy z systemem X Window

Jörg Schneider

v2, 11 August 1997


Wersja polska: Krzysztof P. Jasiutowicz kpjas@priv.onet.pl
v1.0, 27 sierpnia 1999 roku


Ten dokument opisuje jak używać powiększonego kursora myszy z systemem X Window.

1. Wstęp

Jest kilka przyczyn dla których standardowy kursor myszy jest dla niektórych niewłaściwy :

W tych przypadkach pomocne są powiększone kursory myszy. Optymalnie powinno to być robione przez jeden program X-ów, który automatycznie powiększałby każdy kursor myszy.

O ile wiem, nie da się w prosty sposób napisać takiego programu, ponieważ protokół X-ów nie umożliwia dostępu do kursora myszy. Więcej szczegółów znajdziesz w rozdziale Szczegóły techniczne poniżej.

Jeśli naszym celem nie jest takie ogólne rozwiązanie, co nieco da się zrobić :

Istnieje standardowy zestaw kursorów myszy, znajdujący się w foncie kursora ( wypróbuj polecenie xfd -fn cursor wtedy go obejrzysz). Większość programów wykorzystuje te kursory myszy i zasada polega na zastępowaniu standardowego kursora jego powiększoną wersją.

2. O tym dokumencie

Zostałem umotywowany do napisania tego MINIHOWTO, kiedy słabo widzący kolega student zapytał mnie jak powiększyć kursor myszy w X-ach. Kiedy już się dowiedziałem jak to zrobić, napisałem pierwotną wersję tego dokumentu. Ponieważ wiedza o sposobie tu opisanym nie jest zapewne powszechna, zdecydowałem podzielić się nią i utworzyłem z tego dokumentu MINIHOWTO linuksowe, mimo tego że, nie jest on wcale typowy dla Linuksa. Jak inne MINIHOWTO, znajduje się on na macierzystym serwerze Linux Documentation Project (LDP).

Matryca tego dokumentu jest w formacie SGML/linuxdoc. Dzięki temu możliwe jest automatyczne tworzenie wersji w następujących formatach (które są dostępne w tym samym miejscu co matryca) : html, text, LaTeX, DVI, PostScript i GNU info.

Shinobu Miyata przetłumaczył to MINIHOWTO na japoński. Znajduje się ono tu : http://i11www.ira.uka.de/~schneid/jp/X11-big-cursor/.

3. Jak To Zrobić

Postępuj zgodnie z instrukcją podaną poniżej. Jeśli nie chcesz sam odnajdywać i kompilować pakietu bdfresize, możesz przejść do punktu 3 i ściągnąć powiększony font zamiast tworzyć go.

  1. weź cursor.bdf, plik źródłowy fonta kursora, z jakiejś dystrybucji X-ów, n. p. z ftp://ftp.x.org/pub/R6.3/xc/fonts/bdf/misc/cursor.bdf (jeśli tam go nie będzie spróbuj archie lub pobierz go ode mnie).
  2. zdobądź, skompiluj i zainstaluj pakiet bdfresize z ftp://ftp.cs.titech.ac.jp/X11/contrib/Local/bdfresize-1.4.tar.Z (lub ode mnie):
         zcat bdfresize-1.4.tar.Z  | tar xf -
         cd bdfresize-1.4
         xmkmf
         make
         
    
    W Linuksie pewnie trzeba użyć:
         make CCOPTIONS='-include /usr/include/bsd/bsd.h' clean all
         
    
  3. utwórz katalog i zainstaluj w nim powiększony font kursora (powiększenie dwukrotne w tym przykładzie):
         mkdir $HOME/fonts
         bdfresize -f 2 cursor.bdf | bdftopcf >$HOME/fonts/cursor2.pcf
         mkfontdir $HOME/fonts
         
    
    Przygotowałem kilka powiększonych fontów kursora o następujących stopniach powiększenia: 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8 i 16-krotne. Można je ściągnąć jeden z nich i zainstalować w $HOME/fonts jeżeli nie chcesz używać bdfresize.
  4. zmodyfikuj plik .xinitrc lub .xsession : przed uruchomieniem jakiegokolwiek klienta X-ów (który używa kursora) następujące 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 rozmiarów.

4. Uwagi i ograniczenia

5. Szczegóły techniczne

Czy jest możliwe napisanie programu dla X-ów, powiększającego kursory automatycznie?

Rozwiązanie (częściowe)

Użyj XTestCompareCursor z rozszerzenia XTEST. We wszystkich oknach nad którymi znajduje się kursor porównuj kursor tego okna z zestawem 'znanych' kursorów (n. p. z fontu kursora ). Jeżeli kursor istnieje, zamień go na powiększony odpowiednik, w innym przypadku albo zostaw bez zmian albo zamień na standardowy kursor. To zadziała tylko tam, gdzie dostępne jest rozszerzenie XTest.

Rozwiązanie 2

Napisz proxy X serwer, który przekazuje wszystkie żądania klientów bez zmian, lecz przechwytuje wszystkie żądania odnoszące się do funkcji Xlib XCreate*Cursor. Żądania XCreate*Cursor powinny być zmieniane tak aby powiększonego kursora.

Ten serwer proxy symuluje nowy display, n. p. :1. Wszystkie programy klienckie, które łączą się z tym display (n. p. xterm -display :1) są wyświetlane na rzeczywistym serwerze (zwykle :0) i ich kursory myszy są automatycznie powiększone. Kursory myszy klientów, które łączą się z :0 pozostaną niezmienione.

6. Inne pomysły jak poprawić widoczność kursora myszy

Oto niektóre pomysły dla raczej prostych programów dla X-ów, które sprawią że kursor myszy będzie lepiej widoczny.

Bardziej ambitnym projektem byłyby ślady myszy à la windoze, t. j. kiedy mysz jest przesuwana i kursor myszy musi być wyświetlony w innej pozycji, wtedy "stary kursor" nie znika od razu, ale z pewnym opóźnieniem. Ślady myszy najlepiej byłoby zaimplementować w X serwerze, ale można by to wykonać jako klienta X-ów, lub lepiej jako serwer proxy ( dokładniejszy opis w rozdziale Szczegóły techniczne).

7. Informacje związane z tym tematem

7.1 Jak używać font serwera

Font serwer jest usługą sieciową, która dostarcza zestaw fontów X11 z nieskomplikowanym protokołem. Można do niego wysyłać zapytania, które fonty są dostępne i zażądać od niego fontu bitmapowego.

Font serwer może być przydatny do dostarczenia X serwerowi zmodyfikowanego fontu kursora, zamiast informowania gdzie w file systemie on się znajduje.

Ta metoda jest szczególnie przydatna jeśli używa się kilku maszyn, które nie maja tego samego systemu plików lub jeśli używa się X terminali, które wspierają protokół font serwera.

Font serwer i związane z nim narzędzia są w dystrybucji X11R5+ (o ile wiem).

instalacja font serwera

Przeczytaj strony podręcznika systemowego fs(1), fslsfonts(1) (lub xfs(1), xfslsfonts(1) pod X11R6) i spróbuj—to nie jest trudne. Powiedzmy, że serwer jest uruchomiony na hoście some.host.edu na porcie 7100. Instalację można wypróbować poleceniem fslsfonts -server some.host.edu:7100

Żeby naprawdę uruchomić font serwer należy wydać polecenie :

xset +fp tcp/some.host.edu:7100

które nie powinno dać informacji o błędzie.

7.2 Jak uzyskać źródła bdf jakiegoś fonta

Jeśli uruchomiłeś font serwer użyj po prostu fstobdf dołączonego do serwera fontów.

Inne wyjście to użycie getbdf który może zapisać dowolny zainstalowany font X11 do pliku bdf.

# # # #

Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:22