Approfondimenti
di Michael J. Hammel traduzione di Antonio Cartelli


Approfondimenti sull'X Input


La riga di configurazione AlwaysCore per le sottosezioni WacomCore ed EraseCore, predisporrà questa configurazione in modo tale che la penna ed il dispositivo di cancellazione, presenti sulla penna Wacom, possano agire come il puntatore principale contestualmente al mouse.  In altre parole questa configurazione consente di utilizzare indifferentemente la penna o il mouse per muovere il puntatore sullo schermo.  La penna può essere utilizzata per selezionare menu dal gestore delle finestre o cliccare su bottoni di qualsivoglia applicazione proprio come il mouse, sebbene il sistema di coordinate di riga della tavoletta renda piuttosto inusuale, almeno inizialmente, l'utilizzo di questo puntatore quale puntatore principale.  Dovunque lo si possa fare si sposti il mouse, lo si sollevi e si riprenda a spostare il cursore, con la penna e la tavoletta, se si vuole un'esatta corrispondenza con le coordinate dello schermo, si deve sempre posizionare il puntatore sull'esatta coordinata del punto sul ripiano della tavoletta.  Ad esempio, per spostare il cursore nell'angolo in alto a sinistra dello schermo si deve spostare la penna nell'angolo in alto a sinistra del corrispondente ripiano della tavoletta.  Una volta che la tavoletta sarà stata configurata sarà chiaro anche ciò che intendo dire.  Io ho trovato l'utilizzo della penna, quale puntatore primario, alquanto difficoltoso, ma potrebbe trattarsi di una sensazione personale che non trova riscontro in altri.

Dopo la riga relativa alla SubSection (sottosezione) c'è quella relativa alla definizione della porta dell'unità da usare.  La mia tavoletta utilizza una porta seriale e sospetto che lo stesso accada per la maggioranza delle altre tavolette:  nel mio caso /dev/ttyS1 rappresenta la seconda porta seriale. Probabilmente chi lo vorrà potrà utilizzare, con ugual fortuna, l'unità /dev/cua1 anche se ho letto che si raccomanda l'utilizzo delle unità cua soltanto con i modem.  Se poi si utilizza una scheda seriale multiporta, quale la Comtrol RocketPort, e l'unità è collegata ad una delle sue porte allora il nome dell'unità sarà diverso: il controller Comtrol, ad esempio, predispone le porte con nomi che vanno da /dev/ttyR0 a /dev/ttyR15 (a seconda delle schede e delle porte che si sono installate).

Altra riga da predisporre è quella relativa a Mode Absolute.  Sfortunatamente non dispongo di informazioni su ciò che potrebbe accadere se non si includesse questa riga.  L'ultima riga, Suppress viene utilizzata per predisporre la sensibilità della penna al movimento:  valori elevati faranno sì che il puntatore sullo schermo non si muova alla stessa maniera della penna sulla tavoletta.  Io ho fatto qualche prova con il valore standard (preso dall'HOWTO dell'X Input) pari a 9, ed ho visto che il puntatore si spostava troppo velocemente per i miei gusti, mentre con un valore pari a 17 gli spostamenti erano più consoni ai miei desideri.

Quelli descritti sono stati gli unici cambiamenti che ho dovuto apportare al file XF86Config. Tra poco passeremo a verificare questa configurazione ma, prima di tutto ci si assicuri che l'hardware sia collegato nella maniera opportuna.  La tavoletta PenPartner, ad esempio, richiede che vengano collegati al sistema due connettori: uno va alla presa della tastiera per far sì che anche questa possa essere collegata alla tavoletta (questo collegamento consente anche di alimentare la tavoletta), l'altro è un tipico connettore seriale e va inserito nella porta specificata nella riga ad essa relativa, nel file XF86Config.  Ci si assicuri che la macchina sia spenta allorché si inserisce il connettore relativo alla testiera, in caso contrario si corre il serio rischio di danneggiare la tavoletta.  Una volta che tutti i connettori siano stati collegati si può procedere a fornire tensione alla macchina.

Nel mio sistema ho solo due porte seriali, di cui una dedicata al mouse e l'altra condivisa tra modem, PalmPilot e Wacom PenPartner. Ciascuna di queste tre unità è collegata ad una scatoletta che funge da deviatore.  Il tutto funziona alla perfezione ma occorre sempre assicurarsi che prima che venga lanciato il server X lo switch della scatoletta sia impostato sulla porta della tavoletta, in caso contrario il server X non riuscirà a "trovare" la tavoletta durante la fase di inizializzazione e non consentirà di utilizzarla.

Verifica della configurazione:  xsetpointer e gsumi

Bene! Abbiamo che il server X funziona e la tavoletta è collegata.  La prima cosa da fare è assicurarsi che la tavoletta sia vista dal server.  Per verificarlo diamo il seguente comando:

xsetpointer -l
Se la configurazione è simile a quella che ho delineato, l'output dovrebbe essere molto simile a quello riportato di seguito:
"pointer"       [XPointer]
"keyboard"      [XKeyboard]
"Wacom"         [XExtensionDevice]
"WacomCore"     [XExtensionDevice]
"ERASER"        [XExtensionDevice]
"EraserCore"    [XExtensionDevice]
Se si ritrovano le righe Wacom ed Eraser allora è tutto a posto.  In caso contrario si dovrà verificare che si sia predisposto correttamente il file XF86Config, che si disponga dei server XFree86 versioni 3.3.1 o 3.3.2 e che i moduli corretti siano caricati al suo interno (grazie al file XF86Config).

Se tutto ciò è a posto e sembra corretto, si provi a muovere la penna sulla tavoletta:  il puntatore video si muove sullo schermo?  Se si, allora è tutto a posto!  Se no, occorre rileggere la prima parte di questo articolo e controllare l'HOWTO X Input per vedere se si è dimenticata qualche cosa.

Successivamente si dovrà provare a lanciare un'applicazione con il supporto per l'X Input.  La più semplice da provare è gsumi, un semplice programma di disegno realizzato da Owen Taylor.  Per poter utilizzare gsumi occorre innanzitutto aver installato una versione delle librerie GTK+ con incluso il supporto per l'X Input. Nel caso in cui non si abbiano si può andare a scaricare il codice sorgente ed a compilarlo ed installarlo.  Ciò è abbastanza facile da fare per cui non è il caso di farsi intimorire da questa operazione.  Il documento INSTALL che accompagna il codice sorgente descrive in maniera abbastanza completa il processo di compilazione, come pure è abbastanza dettagliato nell'illustrare l'argomento opzionale da aggiungere allo script di configurazione di cui si necessita:   --with-xinput.  In pratica, seguendo quanto riportato nel file INSTALL delle librerie GTK+, e apportando le opportune modifiche si ottiene quanto segue:

% gzip -cd gtk+-1.0.5.tar.gz | tar xvf - # unpack the sources
% cd gtk+-1.0.5                          # change to the toplevel directory
% ./configure  --with-xinput=xfree       # run the `configure' script
% make                                   # build GTK
[ Become root if necessary ]
% make install                           # install GTK
Fatto questo si è pronti a compilare gsumi.  È ancora più facile che compilare le GTK+.  Basta scompattare il software ed eseguire i seguenti comandi:
% configure
% make
[ Become root if necessary ]
% make install
Finalmente si può provare ad eseguire un'applicazione che utilizza l'X input. Si lanci gsumi col comando
% gsumi
La Figura 1 mostra l'interfaccia di gsumi.
 

Figura 1:  L'interfaccia gsumi - si noti ...

Il settagggio dei pulsanti della penna in maniera da mappare i bottoni del mouse viene effettuato mediante il programma xinput.  Con la tavoletta PenPartner, si dia

% xinput set-button-map Wacom 1 3 2
In tal modo il pulsante della penna viene predisposto come pulsante destro del mouse (se il mouse è a due pulsanti) ed il cancellatore (eraser) come bottone 3. Apportando modifiche come quelle segnalate si modifica il comportamento della penna per cui si dovrà fare qualche esperimento con xinput per trovare la configurazione che più si conforma alle proprie esigenze.

Compilare il Gimp con il supporto per X Input

Siccome tutto sembra funzionare bene possiamo provare a vedere se riusciamo a far sì che anche il Gimp utilizzi l'X Input.  La prima cosa da tener presente è che, come nel caso di gsumi, il Gimp richiede di essere compilato con una versione adeguata delle librerie GTK+ che abbia abilitato anche l'X input.  Nella prima parte dell'articolo si è già installato l'insieme delle librerie GTK+ per cui ora ci si deve soltanto procurare i sorgenti del Gimp e compilarli. Contestualmente devono essere compilati tutti i plug-in del Gimp per cui anche se si è scaricato qualche plug-in individualmente, ad esempio dal Plug-In Registry, e lo si è compilato al di fuori del nocciolo dell'area principale del Gimp, lo si deve ricompilare.  Se si dovesse procedere alla compilazione dei Plug-in individualmente ci si deve assicurare che i loro Makefile siano aggiornati con i link alla libreria X Input utilizzando l'opzione -lXi.  Detta opzione va inserita esattamente prima dell'opzione -lX11 (che tutti i Makefile dei vari Plug-in dovrebbero contenere).  Ad esempio il Plug-in Curtain presenta nel suo Makefile la seguente riga:

LDADD=-L/usr/X11R6/lib -lgimp -lglib -lm -lgtk -lgdk -lXext -lX11
La si deve modificare in modo da assumere il seguente aspetto:
LDADD=-L/usr/X11R6/lib -lgimp -lglib -lm -lgtk -lgdk -lXi -lXext -lX11
Se non si procede alla ricompilazione dei plug-in questi collasseranno nel momento in cui si farà partire il Gimp.  Tutti i plug-in che fanno parte integrante del nocciolo della distribuzione verranno ricompilati nel momento in cui si ricompilerà il sorgente del Gimp.

Una volta che si sia ricompilato il Gimp con il supporto per l'X Input si potranno utilizzare indifferentemente il mouse o la tavoletta per svolgere le stesse funzioni cui ci si è abituati nell'ambito del Gimp.  C'è poi un'altra possibile caratteristica che può essere aggiunta al Gimp e che richiede un pacchetto aggiuntivo; grazie ad esso sarà possibile utilizzare una finestra di dialogo sulle unità di input all'interno del Gimp stesso.  In effetti non sono riuscito a farlo funzionare correttamente prima che l'articolo fosse pubblicato per cui tutto ciò che posso fare ora è fornire le informazioni che mi sono state date da Owen.  Queste informazioni sono riportate anche nelle istruzioni passo-passo di Owen dedicate all'uso del Gimp con l'X Input.

Per applicare questo pacchetto si deve partire, innanzitutto, con una directory appena ripulita; per far ciò si cambi l'area dei sorgenti Gimp e si scriva: 

% make distclean
Quindi si applichi il pacchetto.  Per il seguito supporremo che esso sia stato salvato nell'area /tmp:
% gzip -cd /tmp/patch-gimp-xinput.10.gz | patch -p1
% automake app/Makefile
Se quando si è scaricato il file utilizzando un browser Netscape il nome del file &erave; stato modificato ed ha perso l'estensione .gz, si ha ancora un file gzippato per verificarlo basta scrivere:
% file /tmp/patch-gimp-xinput.10
Se si ottiene in risposta che il file è del tipo gzippato si possono ancora utilizzare le due righe riportate sopra, se non lo è più, conviene utilizzare le righe seguenti: 
% cat /tmp/patch-gimp-xinput.10 | patch -p1
% automake app/Makefile
Subito dopo si può procedere a compilare il Gimp:
% make clean
% make distclean
% configure
% make
% make install
Al di là della finestra di dialogo sulle Unità di Input non c'è nulla che ora valga la pena di essere visualizzato con delle schermate e l'effetto finale di tutto il lavoro svolto è che ora si dispone di versioni di gsumi e Gimp che potranno funzionare utilizzando indifferentemente come unità di input sia il mouse che la tavoletta. Mi pare che non sia una cosa impossibile riuscire a far funzionare il tutto anche se occorre perderci un po' di tempo soprattutto se non si ha familiarità con ciò che accade quando si effettuano le modifiche alla configurazione di XF86Config.

Chi lo desiderasse può anche applicare un altro pacchetto opzionale:  patch-gimp-nopaintbrush, ma soltanto se il Gimp sembra andare molto lentamente dopo che si è applicato il primo pacchetto, ovvero se non si gradisce l'effetto che si ottiene con i pennelli sensibili alla pressione.  Il pennello sensibile alla pressione è stato inserito nella versione 1.1 del Gimp (la versione per sviluppatori del software che non è ancora utilizzabile pubblicamente) anche se il file patch-gimp-xinput.10, realizzato per la versione 1.0 del Gimp, può produrre un output abbastanza punteggiato.
In generale, patch-gimp-nopaintbrush non è un pacchetto raccommandato - per lo più serve solo a ribaltare alcune parti del pacchetto principale per chi ne avesse l'esigenza.

Per coloro che dispongono dei sorgente XFree86 o che hanno installate le librerie glibc, Owen ha un pacchetto per il driver Wacom che ci si può procurare all'indirizzo ftp://ftp.gtk.org/pub/users/otaylor/xf86Wacom-owt-patch (codice sorgente) ovvero ftp://ftp.gtk.org/pub/users/otaylor/xf86Wacom-owt-linux-glibc.so.gz.    Quest'ultimo file è un eseguibile che va a rimpiazzare proprio xf86Wacom.so nell'area /usr/X11R6/lib/modules/.  Si faccia comunque una copia di salvataggio del vecchio file, come sempre.  Esso dovrebbe risolvere una serie di problemi collegati alla pressione dei tasti ed al cancellatore (eraser). Per tavolette con switch sui due lati va anche a modificare le modalità di mappatura dei tasti, in maniera molto più saggia, in modo che lo switch sul secondo lato venga mappato sul bottone 3 e non sul bottone 4.

E questo è tutto. Rimane soltanto da dare una serie di avvertenze su problemi nei quali sono incorso utilizzando la mia tavoletta col Gimp.

Suggerimenti sull'utilizzo dell'X Input con il Gimp

L'utilizzo del Gimp con un server XFree86 configurato come descritto non richiede l'utilizzo di un demone gxid, anche se si può essere costretti a settare manualmente il cursore con xsetpinter se il server non consente di passare automaticamente dal mouse alla tavoletta.  Io ho avuto questo problema fino a quando non ho settato correttamente sia il mio file XF86Config che la mia scatoletta di deviazione.

L'opzione Suppress può essere incrementata o decrementata in maniera da far sì che il puntatore sia più o meno sensibile ai movimenti della penna.  Avendo predisposto la mia a 17 ho ottenuto pressoché la stessa risposta del mouse.

Se si preme con forza sulla tavoletta si ottiene che la penna PenPartner si comporta come se si premesse il pulsante 1 del mouse.  Non sono in grado di dire però se lo stesso comportamento si ottiene anche su altre tavolette.  In pratica ciò significa che mentre si sposta il puntatore all'interno della finestra si può ottenere l'apertura di un menu premendo con forza sulla tavoletta.  D'altro canto questo sistema non funziona altrettanto bene nella finestra dell'immagine (Image Window) quando si tenta di selezionare il menu della finestra stessa se nel contempo è stato selezionato un pacchetto di disegno.  Talvolta accade che il puntatore comincia a disegnare per i fatti suoi e devo placcarlo immediatamente per riuscire a fermarlo; non so se questa caratteristica sia voluta o se si tratta di qualche possibile errore, sicuramente non sono riuscito a trovare una maniera semplice di ripetere l'effetto a piacimento.

La Wacom non ha previsto il supporto per le oscillazioni nelle sue tavolette 4"x5", compresa la PenPartner, mentre i nuovi prodotti della linea Intuos lo prevedono; non è ancora chiaro, però, quale potrà essere la situazione dei drive per queste tavolette.

Quando si usa la penna per effettuare selezioni si deve avere l'accortezza di premere con forza con la penna stessa per cancellare la selezione corrente.  Non sempre questa tecnica funziona e talvolta può capitare che ci si ritrovi con elementi selezionati di dimensioni piccolissime, addirittura quasi puntiformi, all'interno della finestra.  In tal caso occorre utilizzare CTRL-Shift-Alt per cancellare la selezione manualmente.

Si badi a non avvicinare troppo la penna alla tavoletta quando si tenta di utilizzare il mouse, in quanto il server ne può uscire confuso e dare messaggi che indicano che il mouse non sta funzionando in maniera corretta.

Coloro che volessero provarlo, possono verificare se il demone gxid consente effettivamente ad altri server di lavorare con gsumi anche se in maniera ridotta.  In tal caso si deve compilare nuovamente GTK+, predisponendo però l'argomento with-xinput non più sul valore "xfree" quanto piuttosto sul valore "gxi". Se qualcuno riuscisse a far funzionare il tutto può inviarmi due righe con una descrizione dettagliata delle operazioni fatte, dopo di che io provvederò a trasferire il tutto sulla Musa.

Come ottenere aiuto:  Risorse per l'X Input

Il primo luogo da cui cominciare nel momento in cui si decide di configurare un tavoletta con l'X Input è l'Howto dell'X Input:

http://www.gtk.org/~otaylor/xinput/howto/XInput-HOWTO.html
Owen Taylor si occupa dell'aggiornamento di questo documento Howto, come pure dell'applicazione gsumi e del sito Web:
http://www.gimp.org/~otaylor/gsumi/index.html - GSUMI, un esempio di programma che utilizza l'X Input
C'è anche una pagina dedicata all'X Input nel sito XFree86 - http://www.xfree86.org/3.3.2/xinput.html, ma non è di grande aiuto.

Ci sono poi, naturalmente, i siti Web della Wacom e della Summagraphic:  www.wacom.com e www.summagraphics.com, rispettivamente.
 
indent

[ La pagina della Musa ] [ Indice ]


Per l'articolo originale: © 1998 Michael J. Hammel - Pubblicato sul n. 33 della Linux Gazette
Per l'edizione italiana: © 1998 A. Cartelli - Pubblicato sul n. 9 anno II di LGEI a cura di un gruppo di volontari