The Linux Busmouse Howto Mike Battersby, mib@deakin.edu.au Traduzione Natali Giuliano, natali@tqs.it,febbraio 1996 v1.2, 2 August 1994 ____________________________________________________________ Indice Generale 1. Introduzione. 1.1 Disclaimer. 1.2 Consigli. 1.3 Ringraziamenti. 2. Determinazione del mouse in vostro possesso (tipo). 2.1 Interfaccie per il Mouse . 2.2 Inport mouse. 2.3 Logitech mouse. 2.4 PS/2 mouse. 2.5 ATI-XL mouse. 2.6 Protocolli per il mouse. 3. Fare funzionare il vostro mouse . 3.1 Settare gli interrupt del mouse . 3.2 Inport e Logitech mouse. 3.3 ATI-XL mouse. 3.4 PS/2 mouse. 3.5 Compilazione del kernel. 3.6 PS/2 mouse. 3.6.1 Selection. 3.7 I mouse "devices". 3.8 Proviamo il mouse. 4. Usare il mouse. 4.1 Selection. 4.2 XFree86. 4.3 XFree86 e selection. 5. Non riuscite ancora a far funzionare il mouse? ______________________________________________________________________ 11.. IInnttrroodduuzziioonnee.. Questo documento e` una guida per permettervi di far funzionare il vostro busmouse con Linux. L'ho scritta nella speranza, che quelle dieci persone alla settimana che mi chiedono ``Come faccio a far funzionare il mio busmouse '' attraverso il newsgroup comp.os.linux.*, se lo leggano , quindi non voglio danneggiarmi il cervello. Il supporto al Busmouse e` rimasto nel kernel a lungo, per quello che posso ricordare , e per tanto tempo non e` stato modificato , quindi questo documento dovrebbe essere riferibile a qualsiasi versione di Linux in vostro possesso. 11..11.. DDiissccllaaiimmeerr.. Le informazioni in questo documento sono corrette per quello che posso personalmente sperare , ma c'e` sempre lapossibilita che abbia fatto qualche errore, quindi non prendete tutto come oro colato, specialmente se non vi sembra esatto. Qui non c'e` niente che possa danneggiare il vostro computer, ma per eccesso di zelo evito di prendermi qualsiasi responsabilita` per qualsiasi danno derivante dall'uso delle informazioni qui fornite. Microsoft(R) is a Trademark of Microsoft Corporation. [ trademark notices for other mice, anyone? --- Mike ] 11..22.. CCoonnssiiggllii.. Se trovate qualche inesattezza in questo documento, o avete qualsiasi commento circa i suoi contenuti o revisioni ed aggiunte , mandatele all'indirizzo che compare all'inizio di questo HOWTO. 11..33.. RRiinnggrraazziiaammeennttii.. Questo howto e` frutto di uno sforzo comunitario , nel vero spirito di Linux. Molte grazie a Johan Myreen per la sezione sul mouse PS/2 ,a Robert T. Harris per l'aiuto sulla sezione riguardante il mouse ATI-XL e a Reuben Sumner per le varie informazioni e critiche costruttive. Grazie anche alla moltitudine di persone che mi hanno mandato informazioni sul mouse , correzioni e frasi di incoraggiamento. 22.. DDeetteerrmmiinnaazziioonnee ddeell mmoouussee iinn vvoossttrroo ppoosssseessssoo ((ttiippoo)).. Ci sono due caratteristiche separate,ma importanti, che dovete sapere sul vostro mouse prima di incominciare: che interfaccia usa e quale protocollo. L'interfaccia riguarda l'aspetto hardware del mouse, comunicante con l'utente cose tipo le porte i/o che usa e come controllare se e` installato esattamente. Questa e` la parte che ha a che fare con il kernel , per permettergli di comprendere i messaggi che lancia il mouse. Il protocollo riguarda l'aspetto software del mouse. Le applicazioni devono conoscere il protocollo usato per interpretare i dati del mouse inviati attraverso il kernel. 22..11.. IInntteerrffaacccciiee ppeerr iill MMoouussee .. Il "Linux kernel" correntemente supporta quattro differenti tipi di interfaccia per il busmouse : Inport (Microsoft), Logitech, PS/2 and ATI-XL. La maggioranza dei busmouse usano l'interfaccia Inport , benche` le ultime interfaccie PS/2 stiano diventando piu` popolari. Non c'e` un modo sicuro per per determinare l'interfaccia del mouse --- gli sviluppatori per il mouse generalmente se ne occupano dopo che e` diventato uno standard. Le prossime sezioni vi aiuteranno , diversamente arrangiatevi da soli. 22..22.. IInnppoorrtt mmoouussee.. Questo include la maggior parte dei mouse vecchio stile Microsoft che sono come un pezzo di sapone. Gli utenti USA che hanno acquistato computers Gateway noteranno che il mouse fornito non e` un Inport bensi` un mouse PS/2 (vedi sotto). I mouse Inport generalmente sono connessi ad un interfaccia che viene inserita nel bus della vostra motherboard. Se la spina di connessione del cavo del vostro mouse all' interfaccia e` rotonda , ha 9 pin, e una tacca su un lato probabilmente avete un mouse Inport. In base alle mie conoscenze , escludendo gli ATI-XL, tutti i mouse ATI (tipo quelli sulle Graphics Ultra cards) sono mouse Inport . 22..33.. LLooggiitteecchh mmoouussee.. I mouse Logitech normalmente sembrano esattamente dei mouse Inport . Si connettono ad un interfaccia con un connettore mini-din a 9 pin . Chiaramente, vi verranno forniti un una scatola della Logitech o avranno la scritta ``Logitech'' stampata sulla scheda cosi` potrete riconoscerli come Logitech mouse. Ci sono anche alcuni strani vecchi mouse Microsoft (uno con una pallina rotante come una "mouse ball" ed un connettore DB9 ) che usano il protocollo Logitech . 22..44.. PPSS//22 mmoouussee.. I mouse PS/2 non sono del tutto dei veri busmouse. L'interfaccia dei mouse PS/2 non e` una scheda di espansione , il mouse viene connesso alla porta ausiliaria PS/2 sul controller della tastiera. Un porta mouse PS/2 usa un connettore a 6-pin mini DIN , simile al connettore della tastiera. Alcuni laptops usano questo tipo di interfaccia per la trackballs --- ad eccezzione del connettore, chiaramente. 22..55.. AATTII--XXLL mmoouussee.. I mouse ATI-XL sono una variante dei mouse Inport , con alcune piccole differenze. Vengono forniti con schede combinate video/mouse ATI-XL . Se non sapete di avere una scheda ATI-XL (e il rispettivo mouse ATI-XL ), probabilmente non ce l'avete. E` possibile che i mouse ATI-XL usino sia ATI-XL che Inport kernel drivers, anche se il driver ATI-XL da` dei risultati migliori. 22..66.. PPrroottooccoollllii ppeerr iill mmoouussee.. Il mondo dei PC e` pieno di protocolli per il mouse diversi ed in conflitto tra di loro . Fortunatamente , la scelta per il busmouse e` da considerare minore che non per il mouse seriale. La maggior parte dei mouse Inport, Logitech e ATI-XL usano il protocollo ``BusMouse'' , benche` esistano alcuni vecchi Logitech che usano il protocollo ``MouseSystems'' , ed alcuni come i vecchi Microsoft che usano il protocollo Logitech . I mouse PS/2 usano il protocollo ``PS/2''. 33.. FFaarree ffuunnzziioonnaarree iill vvoossttrroo mmoouussee .. Dal momento in cui conoscete il protocollo e l'interfaccia del vostro mouse,siete pronti a partire. 33..11.. SSeettttaarree ggllii iinntteerrrruupptt ddeell mmoouussee .. Ora, dovrete conoscere il numero di interrupt che usa il vostro mouse , ed assicurarvi che non entri in conflitto con nessun'altra periferica installata nel sistema . Dovrete assicurarvi che il vostro mouse non tenti di usare un interrupt in uso da un altro devices --- non e` possibile per il mouse di "share" (spartire) un interrupt sotto Linux, anche se dovesse funzionare con altri sistemi operativi . Controllate la documentazione di tutte le periferiche per vedere quali sono gli interrupt in uso. Nella maggior parte dei casi l'IRQ4 viene usato dalla prima porta seriale (/dev/ttyS0), IRQ3 per la seconda (/dev/ttyS1) (questo, considerando che voi abbiate i devices --- se non li avete potrete usare gli interrupt allegramente), e l'IRQ5 per alcune schede SCSI . Noterete che per i mouse ATI-XL, Inport e Logitech l'assegnazione di default del kernel e` l' IRQ5, cosi se dovete usare un kernel precompilato (eg, utenti CD-ROM ) dovrete usare quello. 33..22.. IInnppoorrtt ee LLooggiitteecchh mmoouussee.. Se aprite lo chassis del vostro computer e controllate la scheda alla quale e` collegato il vostro mouse, dovreste vedere una serie di "jumpers" sulla scheda stessa (speriamo marcati ``INTERRUPT'') con le diverse posizioni per gli interrupt (conosciuti anche come IRQ) numero 2,3,4 e 5. Per cambiare l'interrupt semplicemente spostate il jumper dalla sua posizione al paio di pin di riferimento. *************************************************** *** ASSICURATEVI CHE IL COMPUTER SIA SPENTO*** *** PRIMA DI LAVORARE ATTORNO AI JUMPERS *** *************************************************** 33..33.. AATTII--XXLL mmoouussee.. I mouse ATI-XL hanno la possibilita` di selezionare l'IRQ via software - dovreste avere ricevuto con il mouse il programma MS-DOS (VSETUP.EXE) per settare gli IRQ. Per fare questo dovrete (temporaneamente) eseguire il boot MS-DOS ed eseguire questo programma. Noterete che il programma VSETUP propone un parametro ``/70'' per aumentare il refresh rate verticale (che causa minor flickering). Il programma VSETUP vi permette inoltre di selezionare sia l'indirizzo, del mouse, primario sia quello secondario - dovrete settarlo a quello primario altrimenti il kernel non trovera` il mouse . Dal momento in cui avrete eseguito VSETUP eseguite un reset a caldo per fare in modo che la nuova configurazione sia effettiva. 33..44.. PPSS//22 mmoouussee.. Il mouse PS/2 usa sempre l'IRQ12 -- non c'e` modo di cambiarlo(escludendo l'acquisto di un arma.) Nel raro caso che qualche altro device usi l'IRQ12, dovrete settare i jumper di quella periferica su un altro IRQ . 33..55.. CCoommppiillaazziioonnee ddeell kkeerrnneell.. Per permettere al vostro mouse di funzionare correttamente avrete bisogno di ricompilare il kernel aggiungendovi il supporto per il busmouse . Cambia directory posizionandoti nella principale del kernel (dovrebbe essere/usr/src/linux) ed esegui un : make config Se non sei sicuro del tuo tipo di mouse , la prima volta che ricompilerai il kernel dovrete abilitare tutte le opzioni per il busmouse nella speranza che il kernel trovi automaticamente il vostro mouse . Alcuni hanno avuto successo con questa operazione: non funziona sempre, ma vi salvera` da altre successive ricompilazioni. Inport, Logitech e ATI-XL mouse. Rispondi ``y'' alla domanda riguardante l'interfaccia per il busmouse e ``n'' a tutte le altre domande sul busmouse. Per esempio , se avete un mouse Inport dovete rispondere ``y'' a Microsoft busmouse support e ``n'' a tutte le altre domande sul busmouse . Rispondete alle domande non attinenti al mouse come avete sempre fatto . Se avete un Logitech o Inport mouse, editate il file /usr/src/linux/include/linux/busmouse.h e cambiate la linea che riporta : #define MOUSE_IRQ 5 in modo da rispecchiare il numero di interrupt del vostro mouse (vedi la sezione "setting the mouse interrupt" per i dettagli su come trovare il numero di interrupt). Se avete un mouse ATI-XL , editate il file /usr/src/linux/drivers/char/atixlmouse.c e cambiate la linea che riporta: #define ATIXL_MOUSE_IRQ 5 assegnando l'interrupt esatto. A causa della varieta` di architetture PC , se dovete assegnare al vostro mouse l'interrupt 2, dovrete inserire la linea #define to use interrupt 9. Esempio: Per un mouse su interrupt 3, la linea diventa #define MOUSE_IRQ 3 Per un mouse su interrupt 2, la linea diventa #define MOUSE_IRQ 9 Adesso, compilate il kernel seguendo le istruzioni normali,e reboottate la macchina con il nuovo kernel. Dovreste avere il supporto per il busmouse correttamente compilato. 33..66.. PPSS//22 mmoouussee.. Per compilare il kernel conil supporto per il mouse PS/2 rispondete ``y'' alla domanda : PS/2 mouse (aka "auxiliary device") support Il driver del mouse PS/2 supporta 2 tipi di devices: lo "standard PS/2 Auxiliary Device controller" ed una speciale interfaccia chip per il mouse PS/2 della "Chips & Technologies" che viene montata sui laptops Texas Instruments Travelmate e Gateway Nomad . Per compilare il supporto per la trackballs su quei computers, rispondi ``y'' a : C&T 82C710 mouse port support (as on TI Travelmate) Notate che dovete rispondere sempre ``y'' alle domande circa il driver standard PS/2 per avere la possibilita` di rispondere anche a questa domanda , da quando il driver 82C710 e` diventato un add-on e standard al driver del mouse PS/2 . Se configurato sia con lo standard PS/2 ed il device 82C710 , il driver tentera` prima di trovare l' 82C710 al momento del boot. Se fallisce, il driver standard verra` usato al suo posto, quindi usando un kernel configurato per ambo le interfaccie su una macchina con un mouse standard PS/2, funzionera` ugualmente. Al contrario, c'e` stata fatta menzione di un autodetect di un falso chip 82C710 , quindi per mettervi al sicuro non configurate il kernel per il chip 82C710 se non ne avete bisogno. Compilate il kernel come sempre ed eseguite il reboot. 33..66..11.. SSeelleeccttiioonn.. Rispondete ``y'' alla domanda Selection (cut and paste for virtual consoles) se volete riuscire ad eseguire il programma "selection" (vedi sezione selectionper maggiori dettagli). 33..77.. II mmoouussee ""ddeevviicceess"".. I mouse sotto Linux sono accessibili via devices nella directory /dev . La seguente tavola propone una lista dei tipi di interfaccia ed i relativi device da usare. INTERFACE DEVICE MAJOR MINOR --------------------------------------------- Logitech /dev/logibm 10 0 PS/2 /dev/psaux 10 1 Inport /dev/inportbm 10 2 ATI-XL /dev/atibm 10 3 Table 1. Mouse devices. NNoottaa:: Se state usando il mouse ATI-XL con il driver Inport , dovte usare il device /dev/inportbm , e non il device /dev/atibm . Le "major e minor entries" sono i numeri dei device per quel particolare device. Se trovate che non avete quel device , dovrete prima crearlo. Per farlo, eseguite questi comandi come utenti root. mknod /dev/logibm c 10 0 mknod /dev/psaux c 10 1 mknod /dev/inportbm c 10 2 mknod /dev/atibm c 10 3 NNoottaa:: Alle volte (sempre meno) nella storia di Linux i nomi dei devices per il busmouse sono cambiati. I seguenti device sono stati rinominati da quelli di cui sopra : bmousems, bmouseps2, bmouseatixl, bmouselogitech. Alcune persone preferiscono creare un link simbolico dai loro "mouse device" a /dev/mouse cosicche` non devono ricordarsi il nome del device di cui hanno bisogno. Se avete una delle versioni correnti delle distribuzioni di Linux dovreste accorgervi che quel link esiste gia`. Se ce l'avete , o ne create uno, assicuratevi che punti al device corretto riferito al vostro mouse. 33..88.. PPrroovviiaammoo iill mmoouussee.. Prendete il file selection-1.6.tar.gz dal vostro sito locale ftp di Linux ftp e compilate il programma ``test-mouse'' all'interno del pacchetto, seguendo le istruzioni(dovete scrivere ``make test- mouse''). Eseguite il programma in questa maniera test-mouse -t -m dove e` ``bm'' (senza le virgolette) se usate il protocollo BusMouse , o ``ps2'' se usate il protocollo PS/2 , e e` il nome del device del mouse in base alla tavola 1. Se il mouse funziona correttamente, dovreste riuscire a disegnare sullo schermo schiacciando o il tasto destro o quello sinistro e portando a spasso il mouse per lo schermo. Premete i pulsanti destro/sinistro simultaneamenteper uscire dal programma. 44.. UUssaarree iill mmoouussee.. 44..11.. SSeelleeccttiioonn.. Selection e` un programma che permette al vostro mouse di eseguire il 'cut- and-paste' tra le virtual consoles di Linux. Selection lo trovate( selection-1.6.tar.gz) sul vostro sito Linux FTP preferito (tipo sunsite.unc.edu), e contiene le istruzioni per riuscire a compilarlo. Alcune distribuzioni di Linux , tipo la Slackware, forniscono una versione precompilata del programma. Quando usate selection, inserite lo switch -t per indicare il tipo di mouse (protocollo) che viene usato e lo switch -m per indicare il device del mouse. Di default viene usato /dev/mouse , quindi potete anche omettere l'opzione -m se avete fatto un link simbolico. Per esempio, se usate il protocollo BusMouse protocol, selection dovrebbe essere eseguita cosi`: selection -t bm o se usate il protocollo PS/2 : selection -t ps2 A questo punto dovreste riuscire ad eseguire il "copia-incolla" tra le virtual consoles usando i pulsanti del mouse . Consultate la documentazione acclusa a selection, o eseguite un ``man selection'' per maggiori informazioni sul suo uso . Ci sono stati un po` di reports su selection che non funziona bene con certe trackballs dei laptop (con interfaccia PS/2 ). Rimpiazzando la linea { 0xcc, 0x00, 0x00, 0x00, 3 } /* PS/2 */ nel file mouse.c nel sorgente di selection con la linea { 0xcc, 0x08, 0x00, 0x00, 3 } /* PS/2 */ vi potra` aiutare se avete problemi e non trovate soluzioni.. 44..22.. XXFFrreeee8866.. Per usare il vostro busmouse sotto XFree86, dovrete settare il protocollo del mouse nel vostro file Xconfig . Se avete un BusMouse , il vostro Xconfig(XF86Config) deve contenere(incluse le virgolette) Busmouse "/dev/mouse" per un PS/2 avrete ps/2 "/dev/mouse" Se avete un mouse a due bottoni , dovrete inserire la linea Emulate3Buttons che vi permette di emulare l'uso del tasto centrale premendo entrambi i pulsanti simultaneamente. Tutte le altre righe relative al mouse , tipo ``BaudRate''e ``SampleRate'' devono essere commentate (inserite # all'inizio riga), visto che non hanno effetto sul busmouse. 44..33.. XXFFrreeee8866 ee sseelleeccttiioonn.. A differenza del mouse seriale , non potete "share" il busmouse tra diversi processi. Praticamente dovrete killare tutte le copie di ``selection'' (vedi sezione selection) attive prima di far partire Xfree86. Se provate a far partire X con selection attiva , riceverete un messaggio d'errore tipo: Fatal server error: Cannot open mouse (Device or resource busy) Version 1.6 of selection allows you to terminate running copies of selection by executing selection -k This should be done before starting up X11. You may wish to add a line containing the above command to the top of your startx script so that the mouse is shut down automatically. If you have an older version of selection which does not support the -k switch you will have to kill selection by hand. 55.. NNoonn rriiuusscciittee aannccoorraa aa ffaarr ffuunnzziioonnaarree iill mmoouussee?? Avete letto questo howto una dozzina di volte, eseguito tutto quello che pensavate di dover fare , ed il vostro mouse si rifiuta ancora di funzionare? Il miglior consiglio che vi posso dare e`: ssppeerriimmeennttaarree. Certo , e` un calcio nel fondoschiena, ma alla fine l'unico modo per far funzionare il vostro mouse e` di provare tutte le alternative finche` avete successo. Come sempre, se c'e` qualcosa che non capite, leggete le manual page e vedete se possono aiutarvi. Se avete una domanda specifica, o un problema che pensate io possa riuscire ad aiutarvi a risolvere, contatatemiliberamente all'indirizzo posto all'inizio dell'howto, e io vedro` se posso aiutarvi o se indirizzarvi a chi ha piu` esperienza in questa o quella branca. Il comp.os.linux.help newsgroup e` il forum appropriato per le discussione e/o le domande riguardo al mouse --- vi prego di non fare domande agli altri gruppi , e specialmente non mandate domande dello stesso tipo a due o tre gruppi di Linux , sono piu` che intasati ! Quando mandate posta, avrete risposte migliori (e meno violenza) se usate un appropriato Subject: e Keywords: lines. Per esempio: Subject: BUSMICE - Gateway 2000 mouse wont work. Keywords: mouse busmouse gateway