diff --git a/examples/scroll.py b/examples/scroll.py new file mode 100644 index 0000000..4d41aa2 --- /dev/null +++ b/examples/scroll.py @@ -0,0 +1,8 @@ +from zero_hid import Mouse +from time import sleep + +with Mouse() as m: + m.scroll_y(50) + sleep(1) + m.scroll_x(50) + \ No newline at end of file diff --git a/zero_hid/Mouse.py b/zero_hid/Mouse.py index ef0bff7..b1ba3c5 100644 --- a/zero_hid/Mouse.py +++ b/zero_hid/Mouse.py @@ -7,16 +7,22 @@ class RelativeMoveRangeError(Exception): class Mouse: def __init__(self, dev = None, absolute = False) -> None: + self.__setup_device(dev, absolute) + self.__setup_move(absolute) + self.__send_mouse_event = absolute_mouse_event if absolute else relative_mouse_event # dynamic mouse event method + + + def __setup_device(self, dev, absolute: bool): if dev is None: dev = defaults.ABSOLUTE_MOUSE_PATH if absolute else defaults.RELATIVE_MOUSE_PATH - self.move = self.__move_absolute if absolute else self.__move_relative # dynamic move method - self.__send_mouse_event = absolute_mouse_event if absolute else relative_mouse_event # dynamic mouse event method if not hasattr(dev, 'write'): # check if file like object self.dev = open(dev, 'ab+') else: self.dev = dev - + def __setup_move(self, absolute: bool): + self.move = self.__move_absolute if absolute else self.__move_relative # dynamic move method + def left_click(self): self.__send_mouse_event(self.dev, 0x1, 0, 0, 0, 0) self.__send_mouse_event(self.dev, 0x0, 0, 0, 0, 0) @@ -25,6 +31,24 @@ def right_click(self): self.__send_mouse_event(self.dev, 0x2, 0, 0, 0, 0) self.__send_mouse_event(self.dev, 0x0, 0, 0, 0, 0) + def scroll_y(self, position: int): + """ + scroll in y axis (vertical) + y should be in range of -127 to 127 + """ + if not -127 <= position <= 127: + raise RelativeMoveRangeError(f"Value of y {position} out of range (-127 - 127)") + self.__send_mouse_event(self.dev, 0, 0, 0, position, 0) + + def scroll_x(self, position: int): + """ + scroll in x axis (horizontal) + x should be in range of -127 to 127 + """ + if not -127 <= position <= 127: + raise RelativeMoveRangeError(f"Value of x: {position} out of range (-127 - 127)") + self.__send_mouse_event(self.dev, 0, 0, 0, 0, position) + def __move_relative(self, x, y): """ move the mouse in relative mode