Aggiungere multitouch ai portatili con Synaptics TouchPad.

by

touch

Gli ultimi MacBook hanno un’interessante caratteristica, la navigazione via Safari (e per ora limitata a questo browser) mediante il rivoluzionario touchpad, che permette un’esplorazione delle pagine indietro ed avanti mediante la passata di tre dita, verso sinistra o verso destra, sul touch.

Dopo aver abilitato lo scroll a due dita, sia orizzontale che verticale, ho cercato in lungo e in largo qualcosa di più spinto, che andasse oltre alle possibilità offerte da un banale mouse esterno (click qua, scorrimento, click la), qualcosa che interagisse col sistema, pur rimanendo lontano dalle mirabolanti caratteristiche implementabili con un wii-remote. Mi sono dunque imbattuto in questa guida di un programmatore IBM che ha deciso di implementare questa caratteristica per i touchpad Synaptic. Se avete un laptop avete un touchpad e se avete un touchpad al 95% avete un touchpad Synaptics.

IMPORTANTE: Seguite questa guida solo se avete un mouse di ricambio, ad esempio un mouse usb, nel caso il vostro touchpad smettesse di funzionare fino al successivo riavvio.

Per abilitare la navigazione nel vostro browser preferito con l’ausilio delle tre dita, potete fare riferimento al sito del programmatore IBM o aprire un terminale ed eseguire i seguenti comandi:

sudo apt-get install tpconfigwget http://search.cpan.org/CPAN/authors/id/C/CT/CTRONDLP/X11-GUITest-0.21.tar.gztar -zxvf X11-GUITest-0.21.tar.gzcd X11-GUITest-0.21/

perl Makefile.PL

make

make test

sudo make install

cd ..

mkdir gestureListener

cd gestureListener/

gedit gestureListener.pl

ed incollate nel file il seguente testo:

#!/usr/bin/perl -w  
# gestureListener.pl listens for pinch and swipe events
use strict;
use Time::HiRes();
use X11::GUITest qw( :ALL );

my @xHist = ();               # x coordinate history
my @yHist = ();               # y coordinate history
my @xHistThree = ();          # x coordinate history (three fingers)

my $lastTime = 0;             # time monitor for TouchPad event reset
my $eventTime = 0;            # ensure enough time has passed between events
my $eventString = "default";  # the event to execute
my $centerTouchPad = 3000;    
my $openSt         = 1000;    # start of open pinch
my $openEn         = 500;     # end of open pinch
my $closeSt        = 1000;    # start of close pinch
my $closeEn        = 1000;    # end of close pinch

my $synCmd = qq{synclient TouchpadOff=0 -m 10};
my $currWind = GetInputFocus();
die "couldn't get input window" unless $currWind;
open(INFILE," $synCmd |") or die "can't read from synclient";

while( my $line  = <INFILE>)
{
 chomp($line);
 my(  $time, $x, $y, $z, $f ) = split " ", $line;
 next if( $time =~ /time/ ); #ignore header lines

 if( $time - $lastTime > 1 )
 { 
 @xHist = ();
 @yHist = ();
 @xHistThree = ();
 }#if time reset

 $lastTime = $time;

 # three finger swipe detection
 if( $f eq "3" )
 {
 @xHist = ();
 @yHist = ();

 push @xHistThree, $x;

 if( @xHistThree > 10 )
 { 
 my @srt = sort @xHistThree;
 my @revSrt = reverse sort @xHistThree;

 if( "@srt" eq "@xHistThree" )
 { 
 # alt + right arrow - forward
 $eventString = "'%({RIG})";
 }elsif( "@revSrt" eq "@xHistThree" ) 
 {   
 # alt + left arrow - back
 $eventString = "'%({LEF})";
 }#if forward or backward

 @xHistThree= ();

 }#if more than 10 data points in 3 finger array

 }else
 { 
 # reset all data points, yes you can have 0 fingers at x,y
 @xHist = ();
 @yHist = ();  
 @xHistThree = ();
 }# if not one or two or three fingers

 # only process one event per time window
 if( $eventString ne "default" )
 { 
 if( abs(time - $eventTime) > 1 )
 { 
 $eventTime = time;
 SendKeys( "$eventString");
 }#if enough time has passed
 $eventString = "default";
 }#if non default event

}#synclient line in

close(INFILE);

Salvate e chiudete il file.

Rimuovete i file di installazione con:

rm -r X11-GUITest-0.21/

Vi ricordo di procurarvi uno di questi:

Ora testate il file appena creato con:

perl gestureListener.pl

Testate il tutto appoggiando tre dita sul touchpad e muovendole leggermente a sinistra o a destra per navigare le pagine avanti o indietro. Questa cosa è più semplice se fatta su touchpad molto larghi o con lo scorrimento verticale (quello a destra del touchpad per intenderci) disabilitato. Se incontrate difficoltà vi conviene abilitare lo scroll con due dita, si trovano molte guide a riguardo, e disabilitare lo scroll laterale.

Nel caso qualcosa non dovesse funzionare, dal touchpad al fornello piccolo della cucina, premete Ctrl+c e tutto dovrebbe tornare alla normalità. Se continuate ad avere problemi aiutatevi con il mouse USB (Non dite che non ve l’avevo detto) per riavviare il sistema.

Se il test appena eseguito ha avuto successo, dovreste essere in grado di navigare con le tre dita. In caso affermativo potete aggiungere questa funzionalità all’avvio seguendo questa guida ed aggiungendo nello spazio “comando”:

perl /home/TUOUTENTE/gestureListener/gestureListener.pl

sostituendo a  TUOUTENTE il tuo nome utente.

Happy Touch a tutti!

Tag: , , , , , , , , , , , ,

Una Risposta to “Aggiungere multitouch ai portatili con Synaptics TouchPad.”

  1. Aggiungere multitouch ai Notebook con touchpad Synaptics Says:

    […] Aggiungere multitouch ai portatili con Synaptics TouchPad. […]

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...


%d blogger cliccano Mi Piace per questo: