Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 10 del 22/09/2008 21.45.39

Nascondi questo messaggio

BR Indice() VersioniSupportate(hardy)

Anchor(introduzione)

Evdev

Evdev è un modulo per la gestione generica delle periferiche di input di X.org. Permette di gestire qualsiasi tipo di periferica di input ed utilizza direttamente i file descrittori del tipo /dev/input/event*, permettendo un'accesso più diretto alle periferiche; è così possibile sfruttare maggiormente queste, senza subire le limitazioni imposte dall'accesso tramite altri file come /dev/input/mouse*, /dev/input/kbd* o /dev/input/js*.

xserver-xorg-input-evdev

In Ubuntu 8.04, Hardy Heron, è disponibile la versione 1.2.0 di questo modulo. Per essere sicuri di averlo installato, digitare in un terminale

 sudo dpkg -s xserver-xorg-input-evdev | grep Status

La risposta a tale comando deve essere :

Status: install ok installed

Purtroppo il modulo in questo pacchetto è afflitto da bug, come riferito in [https://bugs.launchpad.net/ubuntu/hardy/+source/xserver-xorg-input-evdev questa pagina] su Launchpad. Per ovviare a questo, attualmente il metodo migliore è ricompilare tale modulo, in modo da averne una versione più recente. Apparentemente le versioni a partire dalla 1.99.2 non presentano più questi problemi.

Ricompilazione di xf86-input-evdev

Immagine(Icone/Piccole/warning.png,,center)

Nella seguente procedura si fa riferimento in più punti all'utilizzo di un terminale. Perchè la procedura funzioni, per come è strutturata la guida, è necessario far sempre uso dello stesso terminale virtuale.

Per cominciare è utile creare una cartella di lavoro, dando in un terminale i comandi:

cd ~
mkdir evdev
cd evdev

È ora necessario ottenere il pacchetto con i sorgenti. Al momento della stesura di questa guida, la versione più recente di questo modulo è la 2.0.4, e di seguito tratteremo questa, ma la guida dovrebbe funzionare anche per versioni anteriori o posteriori. Per scaricare ed estrarre i sorgenti, digitare:

wget ftp://ftp.x.org/pub/individual/driver/xf86-input-evdev-2.0.4.tar.bz2
tar -jxvf xf86-input-evdev-2.0.4.tar.bz2
cd xf86-input-evdev-2.0.4

Per la compilazione saranno anche necessari alcuni strumenti e diverse librerie. Per ottenere tutto il necessario digitare:

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get build-dep xserver-xorg-input-evdev

Per installare il modulo vi sono diversi metodi metodi, qui tratteremo l'installazione diretta e la pacchettizzazione; l'utente può seguire uno o l'altro a sua scelta.

Indifferentemente dal percorso scelto, è necessario rimuovere il pacchetto xserver-xorg-input-evdev con il comando:

sudo apt-get remove xserver-xorg-input-evdev

Qualora questo rimuova anche altri pacchetti, è bene segnarsi il nome di questi, anche se si tratterà prevalentemente di meta-pacchetti.

Immagine(Icone/Grandi/info.png,,center)

L'installazione diretta è più veloce e più facile, ma sparge in maniera incontrollata file all'interno del filesystem. La pacchettizzazione invece è più laboriosa, ma permette di utilizzare il gestore dei pacchetti, in modo da mantenere più pulita la vostra installazione di Ubuntu.

Installazione diretta

Per configurare, compilare ed installare il modulo è sufficiente eseguire nel terminale:

./configure --prefix=/usr
make
sudo make install

Verrà chiesto l'inserimento della password dell'amministratore, poiché è necessario scrivere file in cartelle di sistema.

Qualora si necessario rimuovere questo modulo, bisogna eseguire i comandi:

sudo rm /usr/lib/xorg/modules/input/evdev_drv.*
sudo rm /usr/share/man/man4/evdev.4

Immagine(Icone/Piccole/warning.png,,center)

Qualora fosse necessario reinstallare il pacchetto xserver-xorg-input-evdev è indispensabile rimuovere prima i file del modulo manualmente come descritto sopra.

Completata l'installazione è anche possibile rimuovere la cartella di lavoro senza problemi, col comando:

cd ~
rm -r evdev

Pacchettizzazione

Immagine(Icone/Piccole/note.png,,center)

Il pacchetto che verrà creato con questa procedura non rispetterà gli standard dei pacchetti Debian e Ubuntu, per motivi di inclusione di licenze e compatibilità con le diverse architetture. Funzionerà tuttavia completamente sul computer su cui è stato creato, ma non potrà essere ridistribuito, o portato su altri computer o sistemi diversi da Ubuntu 8.04.

Per pacchettizzare correttamente il modulo, ci appoggeremo ad un'altra cartella di lavoro con alcune sottocartelle. Nel crearla conviene darle un nome corretto in base al sistema operativo in uso e alla versione del modulo che si sta installando. Ad esempio:

mkdir -p ../xserver-xorg-input-evdev_1.2.0-homebuild0_i386/usr/lib/xorg/modules/input
mkdir -p ../xserver-xorg-input-evdev_1.2.0-homebuild0_i386/usr/share/man/man4
mkdir -p ../xserver-xorg-input-evdev_1.2.0-homebuild0_i386/DEBIAN

Dove "1.2.0" va sostituito con la versione che si sta compilando e se si utilizza un sistema a 64 bit, "i368" va sostituito con "amd64". Passiamo ora alla configurazione, e compilazione del programma:

./configure --prefix=/usr
make

Ora il metodo più veloce per proseguire è installare regolarmente il modulo e successivamente spostare i file installati nella cartella creata prima:

sudo make install
sudo mv /usr/lib/xorg/modules/input/evdev_drv.* ../xserver-xorg-input-evdev_1.2.0-homebuild0_i386/usr/lib/xorg/modules/input/
sudo mv /usr/share/man/man4/evdev.4 ../xserver-xorg-input-evdev_1.2.0-homebuild0_i386/usr/share/man/man4/

Ora che i file necessari sono correttamente posizionati, occorre creare un file descrittore del pacchetto in ~/evdev/xserver-xorg-input-evdev_1.2.0-homebuild0_i386/DEBIAN/control. Per creare ed editare questo file si può usare l'editor di testo preferito. Se si utilizza Gedit:

gedit ../xserver-xorg-input-evdev_1.2.0-homebuild0_i386/DEBIAN/control

Il file dovrà contenere le seguenti righe di testo:

Package: xserver-xorg-input-evdev
Version: 1:1.2.0-homebuild0
Architecture: i386
Depends: libc6 (>= 2.7-1), xserver-xorg-core (>= 2:1.4)
Replaces: xserver-xorg (<< 6.8.2-35)
Provides: xserver-xorg-input-2
Section: x11
Priority: optional
Description: X.Org X server -- evdev input driver
 This package provides the driver for input devices using evdev, the Linux
 kernel's event delivery mechanism.  This driver allows for multiple keyboards
 and mice to be treated as separate input devices, and matched on physical
 attributes such as which USB port they're connected to.
 .
 Note that this driver is different from Protocol "evdev" in the keyboard and
 mouse drivers, as shipped with Ubuntu 4.10 and 5.04, and Debian 3.1.
 .
 More information about X.Org can be found at:
 <URL:http://www.X.org>
 <URL:http://xorg.freedesktop.org>
 <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
 .
 This package is built from the X.org xf86-input-evdev driver module.

Anche in questo caso bisogna sostituire "1.2.0" con la versione del modulo che si sta compilando e, se si una un sistema a 64bit, "amd64" a "i368". Salvare il file, e uscire dal programma. Ora è necessario creare il pacchetto:

sudo dpkg -b ../xserver-xorg-input-evdev_1.2.0-homebuild0_i386 ../../xserver-xorg-input-evdev_1.2.0-homebuild0_i386.deb

Ovviamente bisogna apportare le solite modifiche ai nomi dei file e delle cartelle. Dovrebbe essere stato creato nella vostra home un file chiamato xserver-xorg-input-evdev_1.2.0-homebuild0_i386.deb. Per installare il modulo basta fare un doppio click su questo pacchetto autoinstallante. Finita questa procedura si può rimuovere la cartella di lavoro:

cd ~
sudo rm -r evdev

È anche possibile rimuovere il pacchetto .deb creato, tuttavia è consigliabile tenerne una copia, qualora fosse necessario reinstallarlo. Ora inoltre possono essere installati i pacchetti che erano stati automaticamente rimossi all'inizio. Qualora fosse necessario disinstallare questo modulo, sarà sufficiente dare il comando:

sudo apt-get remove xserver-xorg-input-evdev

Identificazione del file descrittore

Per una configurazione basilare della periferica, è sufficiente sapere qual'è il suo file descrittore. Per la maggior parte delle periferiche di acquisizione questo si può scoprire con l'analisi dell'output del comando

sudo ls -l /dev/input/by-id/ | grep event

Ad esempio, volendo configurare un particolare mouse della Logitech, nell'output del comando precedente ci sarà

lrwxrwxrwx 1 root root 9 2008-09-16 12:14 usb-Logitech_Logitech_BT_Mini-Receiver_000761AEA7CD-event-mouse -> ../event2

e quindi il file sarà /dev/input/by-id/usb-Logitech_Logitech_BT_Mini-Receiver_000761AEA7CD-event-mouse. Alcune periferiche non permettono l'identificazione "by-id" e si deve usare quella per percorso. In tal caso il comando per trovare tali periferiche sarà

sudo ls -l /dev/input/by-path/ | grep event

un esempio di queste periferiche sono i joystick su gameport, e in tal caso nell'output ci sarà una riga come

lrwxrwxrwx 1 root root 9 2008-09-16 12:13 pci-gameport0--event-joystick -> ../event6

e allora il file descrittore sarà /dev/input/by-path/pci-gameport0--event-joystick.

Immagine(Icone/Piccole/warning.png,,center)

Identificando le periferiche "by-path", queste cambieranno file ogni volta che verrà fisicamente cambiata la porta a cui è connessa la periferica.

Per verificare che il file identificato sia quello corretto si può dare il seguente comando

sudo less -f /dev/input/by-id/nome_file

sostituendo a "nome_file", il nome del file identificato in precedenza. Se muovendo la periferica o premendo i tasti su di essa compaiono caratteri non leggibili sul terminale, vuol dire che il file è stato identificato correttamente, se invece non compare nulla, si è scelto male il file descrittore, oppure il file descrittore è già utilizzato dal modulo evdev. Se non è stato possibile identificate la periferica per id, ma solo per path, allora nel comando precedente va sostituito "by-path" a "by-id".

Configurazione del server grafico

Una volta identificato correttamente il file, è necessario configurare il server grafico affinché lo usi. È quindi necessario editare il file \etc\X11\xorg.conf; è anche bene tenerne una copia di sicurezza:

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.pre_evdev
sudo gedit /etc/X11/xorg.conf

Se si sta configurando un mouse, una tastiera o un'altra periferica già in uso, bisogna come prima cosa eliminare i riferimenti a questa periferica già presenti. Controllare quindi nella sezione "ServerLayout" e commentare tutte le righe che si riferiscono a quella periferica aggiungendo un "#" all'inizio della riga. Quindi sempre all'interno di questa sezione aggiungere una nuova riga, in modo che assuma il seguente aspetto:

Section "ServerLayout"
    ...
#   InputDevice    "Mouse0"            "CorePointer"
    InputDevice    "MouseEvent0"       "CorePointer"
    InputDevice    "KeyboardEvent0"    "CoreKeyboard"
    InputDevice    "JoystickEvent0"
    ...
EndSection

Notare inoltre che per i mouse è bene aggiungere la stringa "CorePointer" e per le tastiere "CoreKeyboard". Il testo riportato sopra è solo esemplificativo, non è necessario usare tutte le periferiche di input con il modulo evdev. Ora si deve aggiungere una sezione per questa periferica. In fondo al file aggiungere delle righe come le seguenti:

Section "InputDevice"
        Identifier              "Identificativo"
        Driver                  "evdev"
        Option  "Path"  "/dev/input/by-id/nome_file"
EndSection

Dove "Identificativo va sostituito con quello aggiunto nella sezione "ServerLayout" (ad esempio "KeyboardEvent0") mantenendo le virgolette, e "nome_file" col nome del file che s'è precedentemente trovato.

Configurazione avanzata

L'attuale versione di evdev supporta poche opzioni native, in compenso supporta anche tutte le opzioni di tutti gli altri moduli di input. Ad esempio se si sta configurando una tastiera con evdev, per avere la configurazione italiana, inserire sella sezione "InputDevice" anche una riga che reciti

    Option    "XkbLayout"    "it"

come se si stesse configurando la tastiera con il modulo kbd. Per avere un elenco di tutte le opzioni utilizzabili consultare i manuali dei moduli per l'input, come

man evdev
man joystick
man kdb
man mousedrv
man synaptics
man wacom

a seconda del tipo di periferica che si sta configurando.

Ulteriori risorse


CategoryHomepage