X11-big-cursor mini-HOWTO

Hoe vergrootte muiscursors met het X-Window Systeem te gebruiken.

Jörg SchneiderVertaald door: Ellen Bokhorst

V3, 1998-03-24


Dit document beschrijft hoe je vergrote muiscursors met het X-Window systeem kunt gebruiken.

1. Introductie

Er zijn verscheidene redenen waarom de standaard X-muiscursors voor een aantal mensen moeilijk zijn te traceren:

In alle gevallen zou het kunnen helpen om vergrote muiscursors te gebruiken. Het zou ideaal zijn, als deze taak door een enkel X-programma zou worden gedaan, waarmee iedere muiscursor automatisch zou kunnen worden vergroot.

Zover ik weet, is er geen eenvoudige manier om een dergelijk utility te schrijven, omdat het X-protocol geen voorziening heeft om muiscursors te ondervragen. Zie de sectie Technische bespreking hieronder voor meer informatie.

Als we echter naar een minder algemeen doel streven, kan er iets aan worden gedaan.

Er is een set met standaardmuiscursors, die bij de cursorfonts kan worden gevonden. (probeer xfd -fn cursor om ze te bekijken). De meeste programma's maken gebruik van deze muiscursors en de belangrijkste gedachte hierachter is het standaardcursorfont te vervangen door een vergrote versie.

2. Over dit document

De motivatie voor deze mini-HOWTO was een visueel gehandicapte mede-student, die me vroeg hoe de muiscursor onder X kon worden vergroot. Nadat ik erachter was gekomen hoe dit gedaan kan worden, schreef ik een initiële versie van dit document. De beschreven methode schijnt niet algemeen bekend te zijn, dus besloot ik het te delen. Ik leverde dit document aan als een Linux mini-HOWTO, ondanks het feit dat het helemaal niet specifiek is voor Linux. Zoals alle andere mini-HOWTO's kan het worden gevonden bij het Linux Documentatie Project (LDP).

Het origineel van dit document wordt beheerd in het SGML/linuxdoc formaat. Dit maakt het mogelijk om automatisch in de volgende formaten te voorzien (die op dezelfde plaats als het origineel kunnen worden gevonden): html, text, LaTeX, DVI, PostScript en GNU info.

Opmerking: Als de hierboven genoemde link niet werkt, probeer dan http://come.to/joerg_schneider—deze link zou zelfs moeten werken, als ik mijn homepage naar een andere webserver zou moeten verplaatsen.

Shinobu Miyata heeft deze mini-HOWTO vertaald naar het Japans. Het kan worden gevonden in http://i11www.ira.uka.de/~schneid/jp/X11-big-cursor/.

3. Hoe ga je te werk

Volg de gedetailleerde stappen hieronder. Als je het bdfresize package zelf niet wilt ophalen en compileren, kun je stap 3 overslaan en kun je daarvoor in de plaats een vergroot font downloaden.

  1. zorg dat je aan cursor.bdf komt, de source van het cursorfont, vanuit een X-distributie, b.v. vanaf ftp://ftp.x.org/pub/R6.3/xc/fonts/bdf/misc/cursor.bdf (als je het daar niet vindt, probeer dan een archie search of haal het van mijn kopie).
  2. haal, compileer en installeer het bdfresize package vanaf ftp://ftp.cs.titech.ac.jp/X11/contrib/Local/bdfresize-1.4.tar.Z (of vanaf mijn kopie):
    zcat bdfresize-1.4.tar.Z  | tar xf -
    cd bdfresize-1.4
    xmkmf
    make
    
    Onder Linux zul je waarschijnlijk het volgende moeten gebruiken:
    make CCOPTIONS='-include /usr/include/bsd/bsd.h' clean all
    
  3. maak een directory aan en installeer daarin een vergrote cursor (in dit voorbeeld met een vergrotingsfactor 2):
    mkdir $HOME/fonts
    bdfresize -f 2 cursor.bdf | bdftopcf >$HOME/fonts/cursor2.pcf
    mkfontdir $HOME/fonts
    
    Ik heb me voorbereid op een aantal cursorfonts met de volgende vergrotingsfactoren: 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8 en 16. Je kunt er énén van downloaden en het naar $HOME/fonts kopieëren, als je bdfresize niet wilt gebruiken. Marc Quinton heeft een dubbel zo groot cursorfont met de hand vervaardigd BigCursor2.pcf dat er veel beter uitziet dan de uitvoer van bdfresize. Bezoek zijn site voor meer info!
  4. wijzig je .xinitrc of .xsession bestand: voordat er een X-client (dat van cursors gebruik maakt) wordt opgestart, moeten de volgende opdrachten worden uitgevoerd:
    xset +fp $HOME/fonts
    xsetroot -cursor_name X_cursor
    
  5. verlaat je X-sessie en start opnieuw op.

Dat is het—nu zouden alle muiscursors tweemaal zo groot moeten zijn.

4. Opmerkingen en beperkingen

5. Technische bespreking

Is het mogelijk een X-programma te schrijven waarmee cursors automatisch worden vergroot?

(Gedeeltelijke) oplossing 1

Gebruik de XTestCompareCursor van de XTEST uitbreiding. Vergelijk voor alle vensters waarin de muisaanwijzer komt de cursor met een set `bekende' cursors (b. v. van het cursorfont). Als de cursor is gevonden, vervang het dan door een vergrote versie, en laat het anders met rust of vervang het door een standaardcursor. Dit zal alleen werken waar de XTest uitbreiding beschikbaar is.

Oplossing 2

Schrijf een proxy X-server die alle client-verzoeken ongewijzigd naar de echte X-server heruitzendt, behalve dat het alle verzoeken corresponderend met de XCreate*Cursor Xlib functies onderschept. XCreate*Cursor verzoeken zouden zodanig moeten worden gewijzigd dat er een vergrote cursor wordt gebruikt.

Deze proxy server simuleert een nieuw display, b. v. :1. Alle clients die een verbinding met dit display maken (b. v. xterm -display :1) worden op de werkelijke server getoond (normaal gesproken is dit :0) en hun muiscursors worden automatisch vergroot. De muiscursors van clients die een verbinding maken met :0 zullen ongewijzigd blijven.

6. Andere ideeën om de muiscursor beter zichtbaar te maken

Hier zijn een aantal ideeën voor nogal eenvoudige X-programma's, waarmee muiscursors misschien makkelijker te traceren zijn.

Het zou een veeleisender project zijn als je muissporen à la windoze zou gebruiken, d.w.z. als de muis wordt verplaatst en de muiscursor moet op een andere positie worden getekend, dan zal de oude muiscursor niet onmiddellijk verdwijnen, maar pas na een korte vertraging. Muissporen zouden waarschijnlijk het beste in een X server kunnen worden geïmplementeerd, maar het kan geschikter zijn het als een X-client te doen, of nog beter als een proxy server (zie de sectie Technische bespreking voor details).

7. Gerelateerde info

7.1 Hoe gebruik je een fontserver

Een fontserver is een netservice die voorziet in een set X11-fonts door gebruik te maken van een eenvoudig protocol. Het kan worden ondervraagd in welke fonts het voorziet en zal de bitmapgegevens van het font op verzoek aanleveren.

Het zou kunnen dat je een fontserver wilt gebruiken om de X-server te voorzien in een gewijzigd cursorfont, in plaats dat je het laat weten waar het het font op het bestandssysteem kan vinden.

Deze methode is vooral handig als je verscheidene computers gebruikt, die geen gemeenschappelijk bestandssysteem delen of als je X-terminals gebruikt, die het fontserver-protocol ondersteunen.

Met de X11R5+ distributie wordt een fontserver programma meegeleverd (AFAIK).

Instellen van een fontserver

Lees de manual pages fs(1), fslsfonts(1) (of xfs(1), xfslsfonts(1) onder X11R6) en probeer het— het is niet moelijk. Laten we ervan uitgaan dat je de server draait op host some.host.edu op poort 7100. Je kunt de setup testen met de opdracht

fslsfonts -server some.host.edu:7100

Om de server feitelijk te gebruiken roep je de opdracht

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

aan, die zou moeten retourneren met een foutmelding.

7.2 Hoe kom je aan de bdf-source van een font

Als je een fontserver hebt ingesteld, gebruik dan gewoon fstobdf, waarmee de fontserver wordt geladen.

Als alternatief zou je getbdf kunnen proberen, waarmee ieder geïnstalleerd X11-font naar een bdf bestand kan worden gedumpt.

8. Wijzigingslog

V3, 1998-03-19

V2, 1997-08-11

V1, ?