Amazing-Python-Scripts
85 строк · 1.9 Кб
1from pynput.mouse import Controller as MouseController, Button2from pynput.keyboard import Controller as KeyboardController, Key3
4__all__ = [5'Key',6'Button',7'Mouse',8'Keyboard',9]
10
11
12class Device:13
14active = False15
16def dispatch(self, seconds_passed):17pass18
19
20class Mouse(Device):21
22def __init__(self, speed=200):23self.speed = speed24self.controller = MouseController()25self.active = set()26self.dx = {Key.left: -1, Key.right: 1}27self.dy = {Key.up: -1, Key.down: 1}28self.pos0 = (0, 0)29self.pos1 = self.pos030
31@property32def button(self):33return (self.press, self.release)34
35def press(self, button):36self.controller.press(button)37
38def release(self, button):39self.controller.release(button)40
41def scroll(self, dx, dy):42self.controller.scroll(dx, dy)43
44@property45def motion(self):46return (self.start_motion, self.stop_motion)47
48def start_motion(self, key):49self.active.add(key)50
51def stop_motion(self, key):52self.active.discard(key)53
54def dispatch(self, delta):55dx = sum([self.dx.get(key, 0) for key in self.active])56dy = sum([self.dy.get(key, 0) for key in self.active])57x0, y0 = self.pos058x1, y1 = self.pos159x1 += dx * delta * self.speed60y1 += dy * delta * self.speed61x2 = round(x1)62y2 = round(y1)63self.pos0 = (x2, y2)64self.pos1 = (x1, y1)65if x2 != x0 or y2 != y0:66self.controller.move(x2 - x0, y2 - y0)67
68
69class Keyboard(Device):70
71def __init__(self):72self.controller = KeyboardController()73
74@property75def key(self):76return (self.press, self.release)77
78def press(self, key):79self.controller.press(key)80
81def release(self, key):82self.controller.release(key)83
84def dispatch(self, delta):85pass86