[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Il mouse, in un terminale a caratteri, non è una cosa tanto comune. È normale in un ambiente grafico, ma nel caso di GNU/Linux c'è la possibilità di usarlo anche nelle console virtuali. Per gestire un mouse in questa situazione è necessario un demone che si occupi di seguirlo e di fornire ai programmi le informazioni sulle azioni del mouse stesso. Si tratta in pratica di un servente per la gestione del mouse. Trattandosi di un servente, i programmi con cui si può interagire con il mouse sono dei clienti e dipendono dal servente per il tipo di comunicazione che tra loro deve instaurarsi.
Il servente utilizzato normalmente per GNU/Linux è il demone gpm, il quale ha in particolare il vantaggio di essere utile anche con i programmi che non sono fatti per il mouse, per copiare e incollare del testo.
In alcune situazioni, la gestione del mouse può diventare conflittuale, per esempio quando si utilizza un cosiddetto mouse bus (bus-mouse). In questa situazione non è possibile avere più programmi che leggono contemporaneamente il dispositivo corrispondente al mouse; in pratica non ci può essere in funzione il demone gpm assieme al sistema grafico X (a meno che X si avvalga proprio di gpm) e nemmeno possono essere messi in funzione più sistemi grafici contemporaneamente. Il demone gpm è in grado di risolvere il problema occupandosi da solo del mouse e passando a tutte le altre applicazioni eventuali le informazioni sulle azioni compiute con il mouse stesso.
Per convenzione, il file /dev/mouse
dovrebbe corrispondere al dispositivo del mouse. In pratica, si crea un collegamento simbolico con questo nome che punta al dispositivo corrispondente al mouse utilizzato effettivamente. Di solito è lo stesso programma di installazione delle distribuzioni GNU/Linux a farlo.
Nel caso particolare dei mouse seriali, cioè di quelli connessi a una porta seriale, sono stati usati in passato i dispositivi /dev/cua*
. Attualmente, questi sono diventati obsoleti e al loro posto si fa riferimento ai corrispondenti /dev/ttyS*
.
Quando la lettura di questo dispositivo può essere solo esclusiva, a causa della sua natura, per evitare conflitti tra i programmi nel modo descritto in precedenza, si può creare il file FIFO /dev/gpmdata
. Questo viene gestito dal demone gpm allo scopo di fornire a tutti gli altri programmi che accedono direttamente al mouse le informazioni sulle azioni compiute con lo stesso.
#
mknod /dev/gpmdata p
[Invio]
Il comando appena mostrato è ciò che serve per creare questo file nel caso non sia già disponibile. Per fare in modo che gpm gestisca questo file e di conseguenza si occupi del mouse in qualunque situazione, deve essere utilizzata l'opzione -R. Inoltre, se si utilizza il sistema grafico X è necessario modificare manualmente la sua configurazione (/etc/X11/XF86Config
, /etc/X11/xorg.conf
o simili) nella sezione InputDevice, più o meno come si vede nell'esempio seguente:
|
Se si usano programmi che si avvalgono di SVGAlib (capitolo 147), conviene configurare il file /etc/vga/libvga.config
con le direttive seguenti:
|
In pratica, per il sistema grafico X e per qualunque altro programma che dovesse accedere al dispositivo del mouse direttamente, si deve fare riferimento al tipo di mouse IntelliMouse, utilizzando il file di dispositivo /dev/gpmdata
.
Il programma mdetect (1) è in grado di individuare un mouse che non è già utilizzato in qualche modo. Il risultato della scansione può essere usato per configurare gpm, o anche X. Generalmente, quando si avvia mdetect è bene muovere il mouse in modo da facilitarne l'individuazione.
mdetect [opzioni] |
Segue la descrizione di alcuni esempi.
#
mdetect
[Invio]
Scandisce le porte che potrebbero ospitare un mouse e genera un risultato che dovrebbe essere adatto alla configurazione di gpm, per esempio come quello seguente:
|
Come si vede, si tratta di un mouse PS/2, corrispondente al file di dispositivo /dev/psaux
.
#
mdetect -x
[Invio]
Scandisce le porte che potrebbero ospitare un mouse e genera un risultato adatto al file di configurazione di XFree86 versione 4.*, ovvero a quello di Xorg. Se si trattasse del mouse descritto nell'esempio precedente, il risultato sarebbe quello seguente:
|
#
mdetect -x -v
[Invio]
Come nell'esempio seguente, ma alla fine dà un pezzo di codice da inserire direttamente nel file di configurazione di XFree86 versione 4.*:
|
Per la precisione, la parte di codice da inserire è esattamente questa:
|
Il programma gpm (2) permette di copiare e incollare porzioni dello schermo con i programmi normali e fornisce a quelli predisposti l'accesso a tutte le funzionalità del mouse. Può essere messa in funzione una sola copia del programma alla volta, di conseguenza è normale che gpm venga avviato una volta per tutte attraverso la procedura di inizializzazione del sistema.
gpm [opzioni] |
A meno di fare uso di opzioni particolari, gpm si aspetta di trovare il collegamento /dev/mouse
che punti al file di dispositivo corrispondente al mouse effettivamente a disposizione.
Se gpm viene utilizzato con l'opzione -R, allora si abilita la gestione del file FIFO |
|
|
Il funzionamento di gpm è relativamente semplice. Quando il mouse è riconosciuto dal programma che si sta utilizzando, dipende da questo il modo di gestire e interpretare le azioni compiute con il mouse. Quando il programma non è in grado di controllare il mouse, è possibile utilizzare il supporto alle operazioni di copia del testo.
Si seleziona una zona dello schermo premendo il primo tasto e trascinando fino alla posizione finale. Per incollare si può cambiare console virtuale, raggiungendo così l'applicazione all'interno della quale incollare il testo, quindi si preme il secondo tasto, o in mancanza il terzo. Il testo viene inserito come se fosse digitato, di conseguenza occorre che il programma lo permetta.
L'opzione -S permette di definire tre comandi, separati con il simbolo due punti (:), da eseguire in occasione di un clic triplo con il primo e il terzo tasto. In pratica, si tiene premuto il primo o il terzo tasto, mentre con l'altro (il terzo o il primo rispettivamente) si esegue un clic triplo in rapida successione. Se entro tre secondi dal rilascio dei tasti viene premuto uno dei tre tasti, viene eseguito uno dei comandi indicati nell'argomento di questa opzione.
Per esempio, se si utilizza l'opzione -S "echo ciao:echo hello:echo bye" e si preme un clic triplo, del tipo descritto, seguito dalla pressione del primo tasto, si ottiene l'esecuzione di echo ciao, cioè viene visualizzata la parola ciao. Se invece alla fine si seleziona il secondo tasto, si ottiene la parola hello. Infine, se si tratta del terzo tasto, si ottiene bye.
Questo sistema potrebbe essere particolarmente utile per definire un comando per il riavvio del sistema, quando per qualche motivo non si può usare la tastiera per farlo e non si rendono disponibili altre alternative.
Segue la descrizione di alcuni esempi.
#
gpm -t imps2
[Invio]
Avvia gpm predisponendolo per utilizzare un mouse PS/2 a tre tasti con rotellina (va bene anche se la rotellina non c'è e se i tasti sono solo due).
#
gpm -R -t imps2
[Invio]
Avvia gpm predisponendolo per utilizzare un mouse PS/2 a tre tasti con rotellina, abilitando la gestione del file /dev/gpmdata
. Il sistema grafico X e altri programmi che dovessero accedere direttamente al dispositivo del mouse, dovrebbero essere istruiti a utilizzare il file /dev/gpmdata
, corrispondente a un mouse IntelliMouse.
#
gpm -t imps2 -m /dev/psaux -R ms3
[Invio]
Come nell'esempio precedente, avvia gpm predisponendolo per utilizzare un mouse PS/2 a tre tasti con rotellina, abilitando la gestione del file /dev/gpmdata
; in particolare viene specificato il file di dispositivo del mouse e il tipo di protocollo da usare per la comunicazione attraverso il file /dev/gpmdata
.
#
gpm -S "shutdown -h now:shutdown -r now:init 0"
[Invio]
Avvia gpm definendo i comandi speciali da eseguire in caso di un clic triplo. Se dopo il clic triplo si preme il primo tasto, si conclude l'attività del sistema; se si preme il secondo, si riavvia; se si preme il terzo, si conclude l'attività, ma attraverso una chiamata diretta all'eseguibile init.
Si è accennato al fatto che il demone gpm venga avviato normalmente dalla procedura di inizializzazione del sistema, nel modo già stabilito dalla stessa distribuzione GNU/Linux che si utilizza. Se si vogliono gestire funzionalità speciali di gpm, come per esempio il file FIFO /dev/gpmdata
, cosa che si ottiene con l'opzione -R, occorre intervenire nello script che avvia questo demone.
Alcune distribuzioni, prevedono un file di configurazione contenente l'assegnamento di variabili di ambiente che poi vengono incorporate e utilizzate nello script di avvio del servizio gpm. Tuttavia potrebbe non essere stata prevista la possibilità di aggiungere delle opzioni ulteriori; in tal caso si deve intervenire direttamente nello script.
In particolare, la distribuzione Red Hat gestisce il servizio attraverso lo script /etc/rc.d/init.d/gpm
, mentre la distribuzione Debian usa il file /etc/init.d/gpm
. Inoltre, la distribuzione Debian mette a disposizione lo script gpmconfig per facilitare l'intervento nel file di configurazione, corrispondente a /etc/gpm.conf
.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) mdetect In parte QPL 1.0 e in parte GNU GPL
2) General purpose mouse interface utility GNU GPL
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome utilizzo_del_dispositivo_di_puntamento.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]