Linux Gamers e possessori di questo mouse? (la guida dovrebbe funzionare per qualunque mouse a più tasti)

A4tech X7 Mouse

A4Tech X7 Gamer Mouse

si? anche io

Caratteristiche

  • model: X-718
  • ottico
  • 5 tasti
  • fino a 2000 dpi e possibilità di cambiare al volo i dpi con un tasto addizionale ciclando fra: 600 dpi, 800dpi, 1200dpi, 1600dpi, 2000dpi

Edit: pare che la Trust abbia preso il mouse dell’A4Tech e lo abbia ribrandizzato chiamandolo Trust GM 4600 🙂 così anche i possessori di questo mouse potranno seguire la qui presente guida… in realtà la guida è riadattabile con un po’ di impegno a qualunque tipo di mouse

**********************

Aggiornamento 23 Maggio 2008

  • La guida ha un difetto non da poco per chi utilizza altre periferiche usb oltre il mouse (es. tastiere USB) questo è stato corretto spiegando una modifica della procedura

**********************

Veniamo alla guida

Di default non tutti i tasti del mouse funzionano su Linux, oppure se premete quelli laterali è come se premeste il tasto sinistro e il tasto destro? 🙂

in questa guida spiegherò come configurare questo mouse, o qualunque altro mouse per cui i tasti non funzionano

NOTA: io sono molto prolisso, ma alla fine i passi per configurare il vostro mouse non sono moltissimi e non è una cosa difficile 🙂

Il metodo gestirà l’input del mouse tramite il modulo evdev, modulo generico di gestione degli input fornito in genere con Xorg, quindi dovreste già averlo..

se così non fosse basterò installare il pacchetto xserver-xorg-input-evdev ( apt-get install xserver-xorg-input-evdev )se siete su un sistema Debian (come Ubuntu) se siete su altri sistemi cercate “evdev” tra i pacchetti ed installate il pacchetto necessario. Se non lo trovate è molto probabile (leggi: sicuro) che sia già installato con xorg (so ad esempio che nei sistemi SUSE è già installato)

Io ce l’avevo già installato nel sistema e non ho dovuto far nulla..

ora scopriamo qual’è l’handler del nostro mouse, cioè ci serve sapere come l’interfaccia evdev chiama il nostro mouse, aprite un terminale e scrivete

cat /proc/bus/input/devices

potreste ottenere una lunga lista di device, trovate il vostro, che nel caso dell’A4tech X7 è questo:

I: Bus=0003 Vendor=09da Product=000e Version=0001
N: Name=”A4Tech PS/2+USB Mouse
P: Phys=usb-0000:00:02.1-1/input0
S: Sysfs=/class/input/input3
H: Handlers=mouse1 event3 ts1
B: EV=7
B: KEY=ff0000 0 0 0 0 0 0 0 0
B: REL=303

l’handler può cambiare da computer a computer.. la riga che identifica il nostro dispositivo è quella che comincia con “N:“, come vedete il mouse viene identificato come un “A4Tech PS/2+USB Mouse”, ora però ci serve sapere qual’è l’handler di quel mouse.. lo vedete in grassetto, nella riga che comincia con “H:” si chiama eventX dove X è un numero che può variare da computer a computer, nel mio si chiama event3 e io proseguirò la guida usando event3, voi sostituitelo con il numero corretto

Adesso dobbiamo modificare le impostazioni di X perché utilizzi evdev per gestire il nostro mouse, ma prima facciamo un backup, non si sa mai!

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup

abbiamo fatto un backup della configurazione di xorg, se qualcosa andasse storto ripristinate il vecchio file di configurazione con:

sudo cp /etc/X11/xorg.conf.backup /etc/X11/xorg.conf

e quindi ricominciate..

NOTA: io ho usato il comando “sudo” in alternativa potete aprire un terminale di root e scrivere le stesse cose senza usare “sudo”, alcuni sistemi non hanno sudo abilitato 🙂 (se non sapete come fare aprite un terminale, scrivete “su” date invio e quindi inserite la password di root..)

ora.. aprite il file che dobbiamo modificare come utenti root

sudo gedit /etc/X11/xorg.conf

se non avete gedit o preferite usare altri editor di testo semplicemente sostituite “gedit” con il vostro editor preferito (kedit, nano, vim, ecc..)

quindi localizzate la sezione che riguarda la configurazione del mouse

sarà qualcosa di simile:

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "mouse"
        Option          "CorePointer"
        Option          "Device"                "/dev/input/mice"
        Option         "Protocol"              "ImPS/2"
#      Option          "Emulate3Buttons"       "false"

EndSection

e sostituitela con

Section "InputDevice"
        Identifier      "Configured Mouse"

        Driver          "evdev"
        Option          "Device"                "/dev/input/event3"
        Option          "Name"                  "A4Tech X7"
EndSection

NON cambiate l’Identifier

cambiate event3 con l’eventX del vostro mouse

se non volete eliminare le righe semplicemente mettete un cancelletto ( # ) davanti ad ogni riga che volete rimuovere, quelle righe verranno ignorate

così:

Section "InputDevice"
        Identifier      "Configured Mouse"
#       Driver          "mouse"
#       Option          "CorePointer"
#       Option          "Device"                "/dev/input/mice"
#       Option         "Protocol"              "ImPS/2"
#       Option          "Emulate3Buttons"       "false"

        Driver          "evdev"
        Option          "Device"                "/dev/input/event3"
        Option          "Name"                  "A4Tech X7"
EndSection

tutto chiaro?

***********************

Aggiornamento 23 Maggio 2008

La procedura qui sopra dà dei problemi: ogni volta che scollegate e ricollegate il mouse il sistema gli assegna un handler diverso (event3, event4, event5, ecc…):

C’è un modo semplice per risolvere la cosa. udev quando collegate il mouse crea i device associati (come /dev/input/event3) ma crea anche dei collegamenti simbolici.. ed è proprio sfruttando questi che si risolve il problema..

Prendo ad esempio il mio nuovo mouse (Logitech MX 518):

In questo momento il mio mouse è associato all’event2; se però lo stacco e lo riattacco potrebbe essere associato ad un altro event. Io ho anche una tastiera USB che ha 2 device di tipo “event” associati.. uno per il normale funzionamento da tastiera ed uno per i tasti multimediali…

Con il precedente metodo può succedere un po’ di tutto: non funziona la tastiera o i tasti speciali e neppure il mouse…

però si può notare questo:

$ ls /dev/input/by-id/

usb-BTC_USB_Multimedia_Keyboard-event-kbd
usb-Logitech_USB-PS.2_Optical_Mouse-event-mouse
usb-Logitech_USB-PS.2_Optical_Mouse-mouse

Come vedete c’è la tastiera ma c’è anche il Mouse…

e a noi interessa la seconda voce: “usb-Logitech_USB-PS.2_Optical_Mouse-event-mouse”

se infatti osservate a cosa punta questo link simbolico:

$ls -l /dev/input/by-id/

….

usb-Logitech_USB-PS.2_Optical_Mouse-event-mouse -> ../event2

….

Il “bello” è che quel link avrà sempre lo stesso nome e punterò sempre all’event device corretto.

Quindi.. una volta scoperto il nome esatto di quel link sostituite in xorg.conf

Option          "Device"                "/dev/input/by-id/usb-Logitech_USB-PS.2_Optical_Mouse-event-mouse"

Talvolta aiuta anche impostare l’opzione “name”

Option          "Name"                  "Logitech USB-PS/2 Optical Mouse"

Il nome preso da:

$ cat /proc/bus/input/devices

***********************

salvate e riavviate Xorg (CTRL+ATL+BACKSPACE) oppure semplicemente fate il Log-Out dal vostro utente e rientrate

il mouse dovrebbe funzionare..

se non dovesse partirvi l’interfaccia grafica NIENTE PANICO, e fate questo qui sotto

segnatevi qual’è il problema (anche se non capite il significato dell’errore)

salvatevi il file “sbagliato” così potrete poi studiarlo per capire qual’era l’errore

cp /etc/X11/xorg.conf ~/xorg.conf.sbagliato

per quest’ultimo comando non occorre essere root, il file xorg.conf.sbagliato verrà salvato nella vostra cartella “home”

fate il log in da quella testuale e ripristinate il backup con il comando che vi ho detto sopra, quindi provate a far ripartire l’interfaccia grafica con il comando:

sudo /etc/init.d/gdm restart

se non usate gdm sostituitelo con kdm (predefinito di kubuntu e altri sistemi KDE), o talvolta xdm

in alternativa potete riavviare il computer con il comando

sudo shutdown -r now

per quest’ultimo comando occorre essere root ovviamente ( vedete “sudo” ? )

a questo punto sarà tutto come all’inizio della guida, potete cercare l’errore su google per capire cosa avete sbagliato, o potete chiedere in qualche forum

se il mouse funziona non abbiamo ancora finito, ma quasi :D, comunque il vostro sistema non dovrebbe + correre rischi heheeh, scherzo 😛
ora bisogna dare un nome ai bottoni del mouse (button1, button2, button3, ecc…)

per cambiarlo temporaneamente possiamo usare un comando tipo questo, non fatelo ancora.. leggete sotto:

xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7"

questo comando è esattamente quello che serve per l’A4Tech X7, a meno che non abbiate la versione con un tasto in più, in quel caso dovrete procedere per tentativi come descrivo qui, altrimenti potete saltare questa parte o usarla solo come “test”

A4tech X7 Mouse con tasto in più

A4tech X7 versione con un tasto in più

prima di tutto, vediamo come capire l’assegnamento attuale

ci serve il comando xev, che nei sistemi debian si trova nel pacchetto xbase-clients, c’è una buona probabilità che abbiate già il comando xev, provatelo da un terminale (confermatemi nei commenti perfavore)

Event Tester - xev

schermata di xev

Il programma serve a visualizzare tutti gli eventi che il server grafico (X – Xorg) riconosce, quando voi lo aprite da terminale se muovete il mouse lì sopra o premete dei tasti vedrete un sacco di testo che scorre nel terminale.. a noi interessa sapere quali bottoni del mouse vengono premuti, avviate quindi xev in questo modo:

xev | grep button

in questo modo vedrete solo le righe dove vi dirò quali tasti avete premuto, posizionatevi con il mouse sulla finestra e premete i vari tasti del mouse, intanto guardate il risultato nel terminale, eccone un esempio del mio mouse già configurato:

Tasto sinistro

state 0x0, button 1, same_screen YES
state 0x100, button 1, same_screen YES

Tasto centrale (premete la rotella)

state 0x0, button 2, same_screen YES
state 0x200, button 2, same_screen YES

Tasto destro

state 0x0, button 3, same_screen YES
state 0x400, button 3, same_screen YES

Primo di lato

state 0x0, button 7, same_screen YES
state 0x0, button 7, same_screen YES

Altro bottone di lato

state 0x0, button 6, same_screen YES
state 0x0, button 6, same_screen YES

Rotella verso di voi

state 0x0, button 5, same_screen YES
state 0x1000, button 5, same_screen YES

Rotella distante da voi

state 0x0, button 4, same_screen YES
state 0x800, button 4, same_screen YES

alcune considerazioni:

  • gli eventi per i bottoni 8 e 9 non ci sono, non vi so spiegare il motivo ma non devono essere usati, suppongo siano utilizzati per qualche evento interno al mouse, se avete più bottoni credo che gli ultimi 2 non vadano usati (quindi se ne avete uno in più il 9 e il 10 non devono essere usati)
  • quando ruotate la rotella è considerato un bottone che si preme, la rotella DEVE essere associata ai bottoni 4 e 5 (4 rotella verso l’alto, distante; 5 rotella verso il basso, vicino)
  • il tasto 2 è quello centrale (premendo la rotella), il 3 quello di destra

adesso riprendiamo il comando di prima, che siamo in grado di commentarlo meglio

xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7"

in quest’ordine stiamo dando l’assegnazione che vedete in figura (il tastino piccolo che cambia la precisione del mouse non può essere personalizzato, verrà sempre e comunque usato come se cliccassimo il tasto sinistro, oltre che per cambiare la precisione del mouse)

A4tech X7 Mouse con legenda dei tasti

assegnamento con la sequenza: 1 2 3 4 5 8 9 6 7

come avete visto ci sono dei bottoni “fantasma” a volte.. quanti sono quindi i numeri che dobbiamo mettere nella sequenza? lo scopriamo facilmente dando il comando

xmodmap -e "pointer = 1 2 3 4 5 8 9 6"

Warning: Only changing the first 8 of 9 buttons.

come vedete ho messo un numero in meno e mi viene detto che ho cambiato solo i primi 8 bottoni di 9, se ne avessi messo in più mi dava lo stesso errore… sempre dicendomi quanti sono i bottoni 🙂 nel mio caso 9 (e quindi la sequenza di numeri va da 1 a 9..) l’ordine corretto lo si ottiene provando!

vi do alcuni consigli:

  • button1 deve essere il pulsante sinistro
  • button2 deve essere il pulsante centrale (rotella)
  • button3 deve essere il tasto destro
  • button4 e button5 devono essere assegnati ai movimenti della rotella
  • dal button6 in avanti tutti gli altri bottoni, nell’ordine che preferite (cercate di lasciare fuori gli ultimi)
  • in genere il primo numero è sempre 1, il secondo e il terzo possono cambiare.. il quarto e il quinto son quasi sempre i movimenti della rotella del mouse
  • provate poi ad assegnarli all’interno di qualche gioco (li vedrete come MOUSE4, MOUSE5 e così via… quando all’inizio avevo impostato i bottoni 8 e 9 ai 2 tasti laterali li vedevo come KP_HOME, ed erano inutilizzabili)

vorrei scrivere un lista di numeri per i vari modelli di mouse, se li testate e trovate una sequenza corretta fatemela sapere che la riporto qui (in particolare per l’altra versione ad un tasto in più dell’ X7)

NOTA per mancini

se siete mancini questo mouse non fa per voi 😀 perché ha i tasti laterali a destra 🙂

comunque visto che la guida è generica….

vi basta invertire i primi 3 numeri

es: pointer = 3 2 1 4 5 8 9 6 7

rendiamo la modifica predefinita

aprite con un editor di testo il file .Xmodmap (file nascosto) nella vostra home

gedit ~/.Xmodmap

(non serve essere root)

e scrivete all’interno questo (senza “xmodmap -e”):

pointer = 1 2 3 4 5 8 9 6 7

sostituite la sequenza di numeri con quella che avete trovato per il vostro mouse, questa è corretta per il mio 🙂

adesso quando entrate nel sistema dovrebbe già essere a posto…

se non funziona continuate a leggere..

in alcune distribuzioni il file .Xmodmap non viene caricato

in questo caso la soluzione è aprire il file .xinit (sempre nella home)

gedit ~/.xinit

ed aggiungere il comando

xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7"

Per completare l’opera

Se poi volete raggiungere le massime prestazioni dal vostro mouse potete aumentare la frequenza di aggiornamento dati del mouse sul vostro sistema.

Links

Linux Gamers – Make All mouse button works Howto
Note personali

sei stato un buon mouse, bello, preciso.. però adesso che la rotella non funziona più a dovere dobbiamo separarci! Ecco perché ti ho dedicato questo post sul mio blog! Addio A4Tech X7 :P!

eheh… in realtà resterai il mio mouse da viaggio 😀

Il mio nuovo mouse avrà presto il suo articolo 😀