View difference between Paste ID: TFHLnVdr and LzpM20Td
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