Advertisement
Guest User

Untitled

a guest
May 4th, 2013
422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import os
  2. import re
  3. import subprocess
  4. import time
  5.  
  6. class threeFingers:
  7.     def __init__(self, x, y):
  8.         self.start_x = x
  9.         self.start_y = y
  10.     def endGesture(self, x, y, f):
  11.         if not f==3:
  12.             diff_x = x-self.start_x
  13.             print diff_x
  14.             diff_y = y-self.start_y
  15.                 if diff_x > 100:
  16.                 os.system("xdotool key a")
  17.             elif diff_x < -100:
  18.                 os.system("xdotool key b")
  19.             return True
  20.         else:
  21.             return False
  22.  
  23. class fourFingers:
  24.     def __init__(self, x, y):
  25.         self.start_x = x
  26.         self.start_y = y
  27.     def endGesture(self, x, y, f):
  28.         if not f==4:
  29.             diff_x = x-self.start_x
  30.             diff_y = y-self.start_y
  31.             if diff_x > 100:
  32.                 os.system("xdotool key c")
  33.             elif diff_x < -100:
  34.                 os.system("xdotool key d")
  35.             return True
  36.         else:
  37.             return False
  38.        
  39.  
  40. if __name__ == "__main__":
  41.     cmd = 'synclient -m 100'
  42.  
  43.     p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, shell = True)
  44.     skip = False
  45.     first = True
  46.     start = False
  47.     start_x = 0
  48.     start_y = 0
  49.     diff_x = 0
  50.     diff_y = 0 
  51.     timeStart = 0
  52.     timeEnd = 0
  53.     threeF = None
  54.     fourF = None
  55.     finger3 = False
  56.     finger4 = False
  57.     try:
  58.         while True:
  59.             line = p.stdout.readline()
  60.             if not line:
  61.                 break
  62.             try:
  63.                 tokens = [x for x in re.split('([^0-9\.])+', line.strip()) if x.strip()]
  64.                 x, y, fingers = int(tokens[1]), int(tokens[2]), int(tokens[4])
  65.         if not start:          
  66.             if fingers==3:
  67.                 threeF = threeFingers(x, y)
  68.                 start = True
  69.                 finger3 = True
  70.                 timeStart = time.time()
  71.             elif fingers==4:
  72.                 fourF = fourFingers(x, y)
  73.                 start = True
  74.                 finger4 = True
  75.                 timeStart = time.time()
  76.         if start:
  77.             #Gestures have a timeout
  78.             if time.time()-timeStart>0.37:
  79.                 start = False
  80.                             threeF = None
  81.                 fourF = None
  82.                 finger3 = False
  83.                 finger4 = False
  84.             else:
  85.                 if finger3:
  86.                     if threeF.endGesture(x, y, fingers):
  87.                         threeF = None
  88.                         finger3 = False
  89.                         start = False
  90.                 elif finger4:
  91.                     if fourF.endGesture(x, y, fingers):
  92.                         fourF = None
  93.                         finger4 = False
  94.                         start = False
  95.             except (IndexError, ValueError):
  96.                 pass
  97.     except KeyboardInterrupt:
  98.         pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement