import pyautogui
from screeninfo import get_monitors

[screenWidth, screenHeight] = [
    [screen.width, screen.height] for screen in get_monitors() if screen.is_primary
][0]

class MouseKeyboardHandler:
    @staticmethod
    def mouse(event_type, *args):
        if event_type == "CLICK":
            if args[0] == "Right":
                pyautogui.click(button='right')
            else:
                pyautogui.click(button='left')
        elif event_type == "SCROLL":
            if args[0] > 0:
                pyautogui.scroll(200)
            else:
                pyautogui.scroll(-200)
        elif event_type == "MOVE":
            x, y = args[:2]
            physicalX = x * screenWidth
            physicalY = y * screenHeight
            pyautogui.moveTo(physicalX, physicalY, duration=0.1)

    @staticmethod
    def keyboard(string):
        special_keys = {
            "enter": "enter",
            "backspace": "backspace",
            "space": "space",
            "esc": "esc",
            "ctrl": "ctrl",
            "alt": "alt",
            "shift": "shift",
            "up": "up",
            "down": "down",
            "left": "left",
            "right": "right",
            "f1": "f1",
            "f2": "f2",
            "f3": "f3",
            "f4": "f4",
            "f5": "f5",
            "f6": "f6",
            "f7": "f7",
            "f8": "f8",
            "f9": "f9",
            "f10": "f10",
            "f11": "f11",
            "f12": "f12",   
            "f13": "f13",
        }

        if string in special_keys:
            pyautogui.press(special_keys[string])
        else:
            pyautogui.typewrite(string)

