Home
Repository 32bit  Forum
Repository 64bit  Wiki

Modifiche

Xorg - hal - synaptics touchpad

1 452 byte aggiunti, 21:57, 2 ott 2012
Cambiato nick
<!-- Per http://www.slacky.eu /wikislack/index.php?title=Xorg_-_hal_-_synaptics_touchpad --> 
[[Category:Server X]]
= ATTENZIONE =
Con la "morte" del progetto hal il server Xorg si autoconfigura tramite il demone udev ('''udevd'''). Questo wiki per tanto pu&ograve; considerarsi obsoleto.
 
Per configurare il driver synaptics sui server Xorg (versione => 1.9) che fanno uso di udev, dopo aver installato il pacchetto:
 
xf86-input-synaptics
 
si controlli il file:
 
/usr/share/X11/xorg.conf.d/50-synaptics.conf
 
=Introduzione=
Questo wiki spiega come settare i touchpad synaptics attraverso hal e il nuovo '''xorg''' >= 1.5.x. I nuovi server xorg supportano l'hotplugging attraverso le informazioni prelevate grazie al demone hal ('''hald'''). Si può vedere il sottosistema hal come un database di informazioni sui vari device presenti nel PC, il server xorg quindi lo contatta attraverso il message bus di sistema ('''dbus-daemon --system''') e preleva ciò di cui ha bisogno per "auto-configurarsi". In questo modo i futuri server xorg (ma anche lo stesso 1.5.x) potranno quasi certamente
fare a meno del famoso file di configurazione ''/etc/X11/xorg.conf''.<BR>
In questo wiki spiegheremo come aggiungere al database di hal le informazioni relative ai touchpad synaptics in modo tale che il server xorg le possa prelevare per
configurare il driver stesso (il driver synaptics).
=Cosa ci serve=
Tutto il software necessario si trova di default sulla slackware a partire già dalla versione current di oggi, 16 Giugno 2009. In pratica ci si deve solo assicurare di avere
installato i pacchetti (le versioni sono riferite alla distribuzione current di slackware):
* hal-0.5.11
</PRE>
Tutto ciò che è nei ... sarà la nostra configurazione, e vedremo in seguito cosa e come possiamo settarla.<BR>
Intanto cerchiamo di capire cosa abbiamo fatto creando questo file. Innanzitutto il path ''/etc/hal/fdi/policy'' ci assicura che il file verrà letto dal demone '''hald''' al suo prossimo riavvio. Il contenuto del file segue la DTD (Document Type Definition) dei file XML per hal, noi stiamo dicendo che vogliamo effettuare delle operazioni (sono
quelle nei ...) se tra le '''info.capabilities''' individuate nel PC c'è un entry che contiene il valore '''input.touchpad'''.
==Controllare le informazioni sul device presenti nel database di hal==
Come abbiamo visto, quello che noi faremo è semplicemente aggiungere informazioni al database di hal per il driver synaptics. Inoltre abbiamo anche visto che le
informazioni verranno aggiunte al device in cui compare la stringa '''input.touchpad''' come '''info.capabilities'''.<BR>
Il sistema hal prevede una serie di software con il quale è possibile interrogare il database da riga di comando, e ora noi ne sfrutteremo due per controllare le
informazioni già presenti nel database. Eseguendo:
<PRE>
Ora eseguendo '''hal-device''' passando come parametro l'udi ottenuto:
<PRE>
$> hal-device '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input'
udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input'
input.originating_device = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port' (string)
=I primi passi per la configurazione=
Ora limitiamoci ad inserire nel database di hal le informazioni minimali in modo da avere il nostro touchpad attivo, quindi inseriamo nel file
''/etc/hal/fdi/policy/11-x11-synaptics.fdi'' quanto segue:
<PRE>
input.x11_driver = synaptics
input.x11_options.SHMConfig = true
La prima chiave (input.x11_driver) viene cercata dal server xorg al momento dell'avvio per sapere quali driver deve caricare per gestire l'input, quindi noi gli diciamo di
caricare anche il driver synaptics.
La seconda chiave (input.x11_options.SHMConfig) viene invece cercata dal driver synaptics e gli serve per sapere come configurarsi. Tutte le chiavi di configurazione del driver synaptics iniziano con ''input.x11_options.'' e al momento sono tutte di tipo ''string''. Quindi per ora abbiamo detto al driver che vogliamo sfruttare la memoria
condivisa (SHM - Shared Memory), vedremo dopo il perchè.
rieseguendo:
<PRE>
$> hal-device '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input'
udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input'
...
vediamo che nel database di hal, relativamente al touchpad, sono presenti anche le nostre impostazioni.
Allora quando noi avvieremo il server xorg, lui troverà la chiave '''input.x11_driver''' e capirà che dovrà caricare il driver synaptics, il quale a sua volta troverà la
chiave '''input.x11_options.SHMConfig''' e saprà che dovrà configurarsi in modo tale da poter essere configurato tramite la memoria condivisa.
=Usare synclient per configurare il driver synaptics a runtime=
Con la semplice impostazione precedente
<merge key="input.x11_options.SHMConfig" type="string">true</merge>
abbiamo detto al driver synaptics che deve poter essere configurabile a runtime attraverso la memoria condivisa, e questo ci permette di eseguire, a server xorg attivo, il
comando '''synclient'''.
'''NOTA''': l'opzione 'SHMConfig = true' è considerata un rischio per la sicurezza, visto che tutti coloro che hanno accesso al PC possono
configurare il driver synaptics semplicemente tramite SHM.
$> synclient TapButton1=1 TapButton2=2 TapButton3=3
diciamo al driver, rispettivamente, che:
* quando clicchiamo nel centro del touchpad con un dito, si deve comportare come se fosse stato premuto il 1° pulsante (generalmente il tasto sinistro).
* quando clicchiamo nel centro del touchpad con due dita, si deve comportare come se fosse stato premuto il 2° pulsante.
* quando clicchiamo nel centro del touchpad con tre dita, si deve comportare come se fosse stato premuto il 3° pulsante.
</deviceinfo>
</PRE>
Si noti come tutte le chiavi per il driver synaptics iniziano con 'input.x11_options.' mentre il nome delle proprietà ('SHMConfig', 'VertEdgeScroll' 'MaxTapTime', etc..)
sono prese direttamente dal manuale del driver (synaptics(4)) e sono le stesse che abbiamo passato al comando '''synclient'''.
 
=Errori=
==hal-find-by-capability --capability input.touchpad non mostra niente==
Questo tipo di errore pu&ograve; essere causato dal passaggio del parametro '''proto=imp''' al modulo del kernel '''psmouse'''. Per ovviare a questo
problema, assicuratevi che nel file:
/etc/modprobe.d/psmouse.conf
sia commentata la riga:
# options psmouse proto=imps
 
===NOTA===
Alcuni utenti per essere sicuri di non fare danni usano generalmente creare dei file di backup. Se volete fare un backup di questo
file prima di modificarlo, fate attenzione a non farlo nella directory ''/etc/modprobe.d/'', altrimenti l'opzione viene passata ugualmente.
Per verificare che il parametro non sia stato passato, potete scaricare il modulo e ricaricarlo come segue:
#> modprobe -r psmouse
#> modprobe -v psmouse
facendo attenzione che il secondo comando '''non''' mostri qualcosa del tipo:
proto=imps
Se lo mostra, allora vuol dire che qualche altro file nella directory su citata ha questa opzione non commentata.
=Conclusione=
Grazie alla lettura di questo piccolo wiki dovremmo essere in grado di capire:
* come avverrà avverr&agrave; la futura configurazione dei server xorg (grazie ad hal e dbus)
* e quindi come poter intervenire per modificarla
Se notate qualche incorrettezza scrivetemi pure, generalmente accetto ben volentieri critiche o proposte di matrimonio :)<BR>
[[Utente:Spinatargzeta|Spinatargzeta]]