Dell XPS 13 (2015) 9350 - Ubuntu 15.10 e Touchpad - middle mouse button emulation

Per chi è abituato ad utilizzare il *Primary Selection Buffer*, ovvero, molto più semplicemente, a selezionare un testo col tasto sinistro del mouse e poi a premere la rotella per incollarlo in un'altra finestra, utilizzare il touchpad del notebook in questione può rivelarsi un incubo.

La domanda è molto semplice: come è possibile emulare il tasto centrale del mouse con un touchpad synaptic? La risposta è altrettanto semplice.
Esiste un comando, synclient, attraverso cui è possibile modificare i parametri di funzionamento del touchpad gestito da Xorg tramite il driver synaptics.

/var/log/Xorg.0.log

/usr/share/X11/xorg.conf.d/50-synaptics.conf

Synclient è compreso nel pacchetto xserver-xorg-input-synaptics (credo sia lo stesso pacchetto che contiene il driver).

E'  possibile specificare cosa fare col touchpad in caso di  tap e click con una/due/tre dita: per esempio, io voglio che in caso di tap e click con 2 dita venga emulata la pressione del tasto centrale del mouse.

1 = tasto sinistro
2 = tasto centrale
3 = tasto destro
TapButton1 = Tap con un solo dito
TapButton2 = Tap con 2 dita
etc...
ClickFinger1 =Cick con un solo dito
etc...

Questi parametri sono gli stessi che potremmo poi inserire nella configurazione di Xorg sotto forma di Options in questo modo:

(sempre /usr/share/X11/xorg.conf.d/50-synaptics.conf)

opzioni che poi verranno lette da Xorg quando si riavvia (Xorg o il computer).

Tramite il comando

è possibile vedere tutti i parametri attualmente configurati.

Dal momento che le modifiche effettuate tramite synclient si perdono dopo ogni riavvio, è possibile inserire le Option nella configurazione di Xorg, oppure scrivere un semplice script da eseguire al termine del boot della macchina. Questo lo script che avevo preparato:

Ora, tutto questo è molto bello e sono convinto funzioni nel 99.9% dei casi... purtroppo non nel mio con il Dell XPS 13. La causa è semplicissima ma capirla mi è costato il sangue.

Ubuntu 15.04 vede questi dispositivi di input (ho tagliato quelli che non mi interessano)

Il primo (SynPS/2) è il touchpad synaptics, il secondo (DLL0704:01 06CB:76AE UNKNOWN) ....anche!.

Xorg infatti, quando è il momento di caricare il driver synaptics fa un po' di casino.

In sostanza, quando vado ad agire con synclient e a passre i parametri, lui li applica (non so perchè) di default al dispositivo SynsPS/2, ma il touchpad "in uso" invece è tragicamente il secondo.

Ho scoperto che synclient in realtà altro non fa che emulare i comandi della vecchia interfaccia Xinput2, andando a prendere il primo dispositivo compatibile che trova. Per risolvere il problema vado quindi a usare il vecchio comando xinput, che fa parte delle utils di x11-server (pacchetto xinput in Ubuntu).

Questa la lista dei dispositivi di input visti da xinput

Il touchpad sconosciuto ( DLL0704:01 06CB:76AE UNKNOWN ) ha id 12 (in questo caso, occhio che cambiano, quindi sempre meglio referenziarli per nome).

Vado a vedere quali sono le proprietà di questo dispositivo con id 12 (ho eliminato le proprietà che non mi interessano).

Queste proprietà sono le medesime (un po' meno comprensibili) di quelle che si modificano tramite synclient.

Vado quindi a settare le proprietà con id 302 e 303 del mio touchpad sconosciuto tramite il comando:

Synaptic Click Action ha 3 proprietà che corrispondono, nello stesso ordine, a  ClickFinger1, Clickfinger2 e ClikFinger3. Synaptics Tap Action invece ha più proprietà, ma quelle che mi interessano sono le ultime 3, ovvero quelle che in synclient vengono chiamate TapButton1, TapButton2 e TapButton3.
In questo modo ho semplicemente configurato che il tap con 2 dita  e il  click con 2 dita  emulino il tasto centrale del mouse, che il tap con un dito e il click  con un dito emulino il tasto sinistro del mouse, e che il  tap con 3 dita e il click con 3 dita emulino il tasto destro del mouse.

Ho creato un semplicissimo script di shell da eseguire all'avvio del pc in modo da non perdere queste configurazioni.

(da notare che ho usato i nomi del dispositivo sconosciuto e delle sue proprietà perchè gli id variano, per esempio, se inserisco un mouse usb).


Giusto per curiosità...

+ Il touchpad è un mouse pad con i tasti al di sotto.
+ Il clickpad è un mousepad senza tasti fisici ma cliccabile interamente.


*
I client X usano il PRIMARY selection buffer per copiare e incollare il testo attualmente selezionato. Senza alcuna azione esplicita il testo selezionato viene inserito in questo buffer e poi può essere incollato altrove premendo il tasto centrale del mouse.
Si usa invece il CLIPBOARD selection buffer per emulare lo stile di Windows (copy/cut/paste): in questo caso, dopo aver selezionato un testo,  andiamo a chiedere esplicitamente di copiarlo nel buffer e poi lo andiamo esplicitamente a incollare in un'altra finestra.
Esiste anche un SECONDARY selection buffer che non ho mai utilizzato.

Si può installare un programma chiamato xsel che va a leggere (o a modificare) i vari buffer utilizzati da X.

Con il comando xsel -p andiamo a stampare a video il PRIMARY selection buffer

Con il comando xsel -b invece andiamo a stampare a video il CLIPBOARD selection buffer.

E' anche possibile inserire esplicitamente qualcosa nei buffer via riga di comando per esempio:

inserisce la stringa gab nel clipboard selection buffer.

Utilizzando un altro strumento, xdtool,  che emula gli imput da tastiera

è possibile inserire una stringa nel buffer e poi simulare una tastiera (xdotool type) che scrive la stringa stessa (più bello che utile...)

 

 

 

Print Friendly, PDF & Email