from talon import Module, actions, ctrl, ui from talon.screen import Screen screen: Screen = ui.main_screen() slow_scroll = False slow_mouse_move = False mod = Module() mod.tag("gamepad", desc="Activate tag to enable gamepad bindings") @mod.action_class class Actions: # DPAD buttons def gamepad_press_dpad_left(): """Gamepad press button dpad left""" gamepad_mouse_jump("left") def gamepad_release_dpad_left(): """Gamepad release button dpad left""" actions.skip() def gamepad_press_dpad_up(): """Gamepad press button dpad up""" gamepad_mouse_jump("up") def gamepad_release_dpad_up(): """Gamepad release button dpad up""" actions.skip() def gamepad_press_dpad_right(): """Gamepad press button dpad right""" gamepad_mouse_jump("right") def gamepad_release_dpad_right(): """Gamepad release button dpad right""" actions.skip() def gamepad_press_dpad_down(): """Gamepad press button dpad down""" gamepad_mouse_jump("down") def gamepad_release_dpad_down(): """Gamepad release button dpad down""" actions.skip() # Compass / ABXY buttons def gamepad_press_west(): """Gamepad press button west""" actions.mouse_drag(0) def gamepad_release_west(): """Gamepad release button west""" actions.mouse_release(0) def gamepad_press_north(): """Gamepad press button north""" actions.mouse_drag(1) def gamepad_release_north(): """Gamepad release button north""" actions.mouse_release(1) def gamepad_press_east(): """Gamepad press button east""" actions.key("ctrl:down") actions.mouse_click() actions.key("ctrl:up") def gamepad_release_east(): """Gamepad release button east""" actions.skip() def gamepad_press_south(): """Gamepad press button south""" actions.mouse_drag(2) def gamepad_release_south(): """Gamepad release button south""" actions.mouse_release(2) # Select / Start buttons def gamepad_press_select(): """Gamepad press button select""" actions.skip() def gamepad_release_select(): """Gamepad release button select""" actions.skip() def gamepad_press_start(): """Gamepad press button start""" actions.speech.toggle() def gamepad_release_start(): """Gamepad release button start""" actions.skip() # Shoulder buttons def gamepad_press_left_shoulder(): """Gamepad press button left shoulder""" actions.user.go_back() def gamepad_release_left_shoulder(): """Gamepad release button left shoulder""" actions.skip() def gamepad_press_right_shoulder(): """Gamepad press button right shoulder""" actions.user.go_forward() def gamepad_release_right_shoulder(): """Gamepad release button right shoulder""" actions.skip() # Stick buttons def gamepad_press_left_stick(): """Gamepad press button left thumb stick""" gamepad_scroll_slow_toggle() def gamepad_release_left_stick(): """Gamepad release button left thumb stick""" actions.skip() def gamepad_press_right_stick(): """Gamepad press button right thumb stick""" gamepad_mouse_move_slow_toggle() def gamepad_release_right_stick(): """Gamepad release button right thumb stick""" actions.skip() # Analog triggers def gamepad_trigger_left(value: float): """Gamepad trigger left movement""" gamepad_scroll(0, value * -1) def gamepad_trigger_right(value: float): """Gamepad trigger right movement""" gamepad_scroll(0, value) # Analog thumb sticks def gamepad_stick_left(x: float, y: float): """Gamepad left stick movement""" gamepad_scroll(x, y) def gamepad_stick_right(x: float, y: float): """Gamepad right stick movement""" gamepad_mouse_move(x, y) # Scaffolding actions used by the Talon file def gamepad_button_down(button: str): """Gamepad press button