X11-big-cursor mini-HOWTO

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

Jörg Schneider <mailto:joerg_schneider@gmx.net>Vertaald door:  Ellen Bokhorst <mailto:
bokkie@nl.linux.org>  V3, 1998-03-24

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

Inhoudsopgave

1 Introductie 1 2 Over dit document 2 3 Hoe ga je te werk 2 4 Opmerkingen en beperkingen 3 5 Technische bespreking 4 6 Andere ideeën om de muiscursor beter zichtbaar te maken 4 7 Gerelateerde info 4

7.1 Hoe gebruik je een fontserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

7.1.1 Instellen van een fontserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 7.2 Hoe kom je aan de bdf-source van een font . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

8 Wijzigingslog 5

1 Introductie

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

• als je X op een notebook draait met een lage contrast LCD

• op normale schermen als je gebruik maakt van een hoge resolutie, b.v. 1600x1280

• voor visueel gehandicapte personen zelfs op gewone hardware 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 5 (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) <http://sunsite.unc.edu/LDP/HOWTO/>.
Het origineel <http://i11www.ira.uka.de/schneid/X11-big-cursor/master/> 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 <mailto:shinobu@emichan.rim.or.jp> 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 <http://i11www.ira.uka.de/schneid/X11-big-cursor/
     cursor.bdf>).

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 <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

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 <http://i11www.ira.uka.de/schneid/ X11-big-cursor/fonts/> 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 <http:

//i11www.ira.uka.de/schneid/X11-big-cursor/fonts/BigCursor2.pcf> dat er veel beter uitziet
dan de uitvoer van bdfresize. Bezoek zijn site <http://www.stna.dgac.fr/~quinton/BigCursor/>

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

• Het kan zijn dat X-servers een beperking hebben voor de maximum cursorgrootte, vooral als ze een hardware-implementatie voor de muiscursor gebruiken. Anderen hebben een dergelijke beperking niet. XF86_S3 3.3 werkt bijvoorbeeld zelfs met een 512x512 muiscursor (nogal langzaam).

• Het vergrote cursorfont moet dezelfde naam hebben als het originele font (de naam van het font moet cursor zijn, de bestandsnaam doet er niet toe) —dat is geen probleem aangezien bdfresize de naam van het font niet wijzigt.

• De directory met het nieuwe cursorfont moet voor de directory met het standaardcursorfont in het fontpath— worden geplaatst, dit wordt bewerkstelligd met xset +fp (als tegengestelde van xset fp+).

• Wijzigingen in $HOME/fonts/ zullen alleen zichtbaar zijn na de opdracht mkfontdir $HOME/fonts; xset fp rehash en alleen in nieuw opgestarte X-clients (preciezer: voor nieuw aangemaakte cursors).

• het kan zijn dat xset +fp path op een X-Terminal niet werkt. In dit geval kan een fontserver (zie de sectie 7.1 (Hoe gebruik je een fontserver)) worden gebruikt als deze door de X-Terminal wordt gebruikt, of één of andere methode om het font op de X-Terminal te installeren (dit kan meestal alleen worden gedaan door je systeembeheerder).

• Dezelfde aanpak kan voor olcursor en decw$cursorfonts en enige ander cursorfont worden gebruikt dat je aan kunt treffen.

• Cursorfonts, die door bdfresize zijn geproduceerd, zien er niet zo vloeiend uit, vooral niet bij grotere vergrotingsfactoren. Het zou fijn zijn als iemand een beter uitziend met de hand vervaardigde versie met een aantal algemene groottes kon creëren.

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.

• Toon gedurende 0.5s iets op de aanwijspositie, als er een sneltoets wordt ingedrukt (grote cursor, klein venster, gevormd venster).

• Gebruik XRecolorCursor om de kleur van de muiscursor iedere 0.1s te wijzigen

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 5 (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).

7.1.1 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

• e-mailadres van de auteur bijgewerkt

• URL van de kopie van het origineel bijgewerkt

• Het met de hand gemaakte dubbel zo grote cursorfont van Marc Quinton opgenomen

V2, 1997-08-11

• Initiële versie in SGML/linuxdoc

V1, ?

• Initiële versie