Jump to content
ElementaryOS France
Sign in to follow this  
Los_tintinos

Slide a plusieurs doigts

Recommended Posts

bonjour,

 

je cherche desesperement à faire fonctionner le slide à plusieur doigts sur mon trackpad (sur l'ecran tactile aussi mais là c'est de l'utopie pure...)

 

J'ai bien easystroke d'installé mais celui-ci ne fonctionne pas avec le multitouch et oblige a faire des gestes plus complexe qu'un simple slide.

 

J'ai aussi tenter touchegg mais j'arrive a rien avec ce truc, rien ne se passe que je le lance. C'est comme si il ne voyait pas mon pad.

 

Aprés je n'ai rien trouvé d'autre. J'aimerais avec des gestes type

Slide 3 doigts Dt/Gch pour naviger entre les bureau (trés macOS mais tellement pratique....)

Slide 4 doigts Dt/Gch pour switcher entre les fenetres (ALT+TAB)

Slide 3 doigts vers le bas (mimise la fenetre)

Slide 4 doigts vers le bas (ferme la fenetre)

 

enfin des trucs comme ça quoi. Je cherche toujours de mon coté mais si certains ont deja la solution, je prend ;-))

 

Kén@vo

Edited by Los_tintinos

Share this post


Link to post
Share on other sites

re a tous,

 

aprés moult recherche j'ai enfin réussi à faire un truc qui ressemble à ce que je voulais

 

Dans un premier temps vérifions si votre pad supporte le multidoigt

 

synclient _m 100

 

Amusez vous a swiper comme un fou avec vos petits 2, 3 voir 4 doigts. Dans la colonne f (comme finger) doit apparaître des 2, 3 ou 4 en fonction du nombre de doigts reconnus.

Pour ma part ce sera 3 doigts (mais vous ne voulez pas un whisky d'abord... pour les connaisseurs :-)).

 

Donc nous sommes parti.

Tout d'abord une petite préparation de Xconf

 

sudo cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf

 

Puis on ajoute les deux lignes "Option" a la fin

 

Section "InputClass"
  Identifier "touchpad catchall"
  MatchIsTouchpad "on"
  MatchDevicePath "/dev/input/event*"
  Driver "synaptics"
  Option "SHMConfig" "on"
  Option "Protocol" "event"
EndSection

 

On redemarre le bouzin pour que tout se mette en place.

 

Ensuite

sudo apt-get install xdotool

 

Il sera nécessaire pour notre script et il n’était pas installé chez moi. Pensez à vérifier aussi que les scripts python soient présent (cela je les avais déjà)

 

Ensuite copier coller ceci dans un fichier texte que vous nommerez : mtouch.py , à placer dans le répertoire de votre choix

 

import os
import re
import subprocess
import time

class threeFingers:
       def __init__(self, x, y):
               self.start_x = x
               self.start_y = y
       def endGesture(self, x, y, f):
               if not f==3:
                       diff_x = x-self.start_x
                       print diff_x
                       diff_y = y-self.start_y
		print diff_y
                       if diff_x > 1100:
                               os.system("xdotool key a")
                       elif diff_x < -1000:
                               os.system("xdotool key b")

                       if diff_y > 1700:
                               os.system("xdotool key c")
                       elif diff_y < -1500:
                               os.system("xdotool key d")

                       return True
               else:
                       return False

class fourFingers:
       def __init__(self, x, y):
               self.start_x = x
               self.start_y = y
       def endGesture(self, x, y, f):
               if not f==4:
                       diff_x = x-self.start_x
                       diff_y = y-self.start_y
                       if diff_x > 500:
                               os.system("xdotool key c")
                       elif diff_x < -500:
                               os.system("xdotool key d")
                       return True
               else:
                       return False


if __name__ == "__main__":
   cmd = 'synclient -m 100'

   p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, shell = True)
   skip = False
   first = True
   start = False
   start_x = 0
   start_y = 0
   diff_x = 0
   diff_y = 0 
   timeStart = 0
   timeEnd = 0
   threeF = None
   fourF = None
   finger3 = False
   finger4 = False
   try:
       while True:
           line = p.stdout.readline()
           if not line:
               break
           try:
               tokens = [x for x in re.split('([^0-9\.])+', line.strip()) if x.strip()]
               x, y, fingers = int(tokens[1]), int(tokens[2]), int(tokens[4])
               if not start:          
                       if fingers==3:
                               threeF = threeFingers(x, y)
                               start = True
                               finger3 = True
                               timeStart = time.time()
                       elif fingers==4:
                               fourF = fourFingers(x, y)
                               start = True
                               finger4 = True
                               timeStart = time.time()
               if start:
                       #Gestures have a timeout
                       if time.time()-timeStart>1.5:
                               start = False
                               threeF = None
                               fourF = None
                               finger3 = False
                               finger4 = False
                       else:
                               if finger3:
                                       if threeF.endGesture(x, y, fingers):
                                               threeF = None
                                               finger3 = False
                                               start = False
                               elif finger4:
                                       if fourF.endGesture(x, y, fingers):
                                               fourF = None
                                               finger4 = False
                                               start = False
           except (IndexError, ValueError):
               pass
   except KeyboardInterrupt:
       pass

 

Dans tout ce truc, il est possible de modifer la sensibilité du pas

 diff_y < -300:

en changant ce paramètre pour chaque axe. Chez moi c'est 1500 par exemple.

 

Enfin dans un terminal on lance le bazar

 

python /home/user/dossierdufichier/mtouch.py

 

dans la fenêtre vous verrez s'afficher les résultats de vos swipes avec les changements de coordonnée (X puis Y) Ainsi vous pouvez peaufiner vos réglages de sensibilité.

 

Pour le moment le scripts est conçu pour afficher

swipe 3 doigts gauche =b

swipe 3 doigts droite = a

swpe 3 doigts bas = c

swipe 3 doigts haut = d

 

Je ne me suit pas amuser à changer la config 4 doigts vu qu'elle ne me concerne pas.

On assigne les fonction au slides avec cette partie du scripts

   if diff_x > 500:
                               os.system("xdotool key c")
                       elif diff_x < -500:
                               os.system("xdotool key d")

 

qui pourrait devenir

   if diff_x > 500:
                               os.system("xdotool key Super+right")
                       elif diff_x < -500:
                               os.system("xdotool key Super+left")

 

Pour un changement de bureau par des slide droite/gauche à 3 doigts.

 

Il ne reste plus qu'a mettre ça au demarrage du pc et c'est tout bon.

 

 

Pour finir, je n'ai absolument rien invinté mais n'ai fait que retranscrire ce que j'ai fait à partir de cette page :

Source de cette methode et des scripts

 

Bon courage.

 

Kén@vo

Edited by Los_tintinos

Share this post


Link to post
Share on other sites

J'interviens sur ton topic, il me semble que le slide avec 2 doigts est déjà pris en compte dans eOS.

 

Regarde dans parametre onglet souris/tactile (je crois que c'est ce nom) ensuite tu dois avoir un onglet avec cette option, j'ai dus le désactivé sur mon portable, je préfère le slide a l'ancienne sur le coté droit du pavé tactile.

 

Ensuite pour ton écran tactile, ça marche comme une souris branché en usb, enfin pour les models que j'ai eu en main, si eOS le prends en charge tu devrait avoir rien a faire, sinon il faudra chercher la solution suivant le model d'écran que tu as.

Share this post


Link to post
Share on other sites

salut,

vi vi mais ce tuto est pour le slide à 3 ou 4 doigts. ce sont des gestes qui ne sont pas nativement pris en charge ni par gnome, ni par Eos. Sur unity je crois qu'il y a quelque trucs en mutlitouch mais comme je ne me fait absolument pas à cette interface je n'ai jamais vraiment eu le temps de tester.

D'ailleurs si Eos venait à intégrer des gestes multitouch nativement ce serait un gros plus pour cette distrib (à bon entendeur ;-)) J'ai du mal à concevoir qu'une distrib moderne ne supporte pas, ou pas complètement, le multitouch sur les touchpad. Sachant que la quasi totalité des laptops en sont pourvu, et qu'ils supportent quasiment tous au moins 3 doigts. Ce devrait être un minimum que de permettre un fonctionnement à plus de deux doigts.

Les pc tactiles se généralisant, et personnellement je ne pourrait plus m'en passer, ce devrait être un passage obligé pour une distribution comme Eos qui se veut légère et donc orientée laptop (enfin pour moi elle est d'enfer sur un portable) que de supporter un usage tactile evolué

 

Le slide deux doigts (pour scroller) est désactivé aussi chez moi. Je préfère, comme toi, le scroll sur les bordure du pad (horizontal et vertical). Au sujet de mon écran tactile, celui-ci est bien reconnu en tant que dalle 2 points. Je peut donc faire du clic droit et du scroll avec mes deux petits doigts. Je n'ai pas chercher plus loin, easystroke me permet de faire des gestes "évolué" pour le gestion en mode tablette. Mais easytroke ne fonctionne qu'en mono-point, je n'ai jamais réussi a le faire fonctionner en multipoint malgrés les patch dispo sur la toile.

 

Ce tuto n'a donc pour but que de permettre une utilisation du pad à la mode MacOS qui est pour le moins pratique. Et puis j'en ai marre des mac-user qui se la pète en changeant de bureau en slidant comme si c’était normal ;-p

Maintenant moi aussi je peut faire le fanfaron en arguant que mon OS fait pareil pour gratuit, non mais !!

 

Kén@vo

Edited by Los_tintinos

Share this post


Link to post
Share on other sites

Haaaaa ok j'avais pas vraiment tout compris :)

 

Donc si je suis ton truc maintenant tu peux règler la fonction multipoint de ton slide écran ?

 

Il est possible de faire des paramètrages sur la correspondance Nb doigts => fonction ?

genre 2 doigts horizontal ou vertical = slide page en cours

3 doigts = slide appli en cours ( alt+TAB)

5 doigts = slide bureau en cours ( super+ flèches directionnelles )

Share this post


Link to post
Share on other sites

re,

 

en fait pour mon ecran, le pc ayant 4 ans il ne supporte que le double touche. Avec, nativement, est supporté le click droit ( 2 doigts), le slide à deux doigts, le pinch (zoom + et -) et bien sur le mode souris à un doigts. Je n'ai jamais chercher plus loin que ça cela me suffit et comme je l'ai deja dit avec l’écran tactile easystroke est suffisant.

 

Je souhaitais configurer le multitouch pour le trackpad (la pad noir qui remplace la souris) de mon portable. Au moins à 3 doigts car le 4 doigts ne semble pas supporté.

 

Avec touchegg ou ginn normalement cela est pas trop compliqué à paramétrer mais sur la 12.04 il ne fonctionne pas bien. J'ai donc trouvé ce script qui permet d'associer une action à un geste avec un nombre de doigts défini. Cela ne fait pas mieux que touchegg mais au moins là ça marche.

 

Ké@vo

Par exemple maintenant si je slide vers la D ou la G à 3 doigts, il change de bureau. on peut ainsi configurer le trackpad pour une utilisation aux petits oignons....

Share this post


Link to post
Share on other sites

Merci, ce tuto est vraiment super, j'ai décelé une petite coquille

synclient _m 100

devrait être

synclient -m 100

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...