SHOW:
|
|
- or go back to the newest paste.
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 |