diff --git a/run_controller_cli.py b/run_controller_cli.py index c90e506..caf1cc8 100644 --- a/run_controller_cli.py +++ b/run_controller_cli.py @@ -10,7 +10,7 @@ from aioconsole import ainput from joycontrol import logging_default as log, utils from joycontrol.command_line_interface import ControllerCLI from joycontrol.controller import Controller -from joycontrol.controller_state import ControllerState, button_push +from joycontrol.controller_state import ControllerState, button_push, button_down, button_up from joycontrol.memory import FlashMemory from joycontrol.protocol import controller_protocol_factory from joycontrol.server import create_hid_server @@ -168,6 +168,26 @@ async def mash_button(controller_state, button, interval): await user_input +async def hold_button(controller_state, button): + # waits until controller is fully connected + await controller_state.connect() + + if button not in controller_state.button_state.get_available_buttons(): + raise ValueError(f'Button {button} does not exist on {controller_state.get_controller()}') + + await button_down(controller_state, button) + + +async def release_button(controller_state, button): + # waits until controller is fully connected + await controller_state.connect() + + if button not in controller_state.button_state.get_available_buttons(): + raise ValueError(f'Button {button} does not exist on {controller_state.get_controller()}') + + await button_up(controller_state, button) + + async def _main(args): # parse the spi flash if args.spi_flash: @@ -220,6 +240,38 @@ async def _main(args): # add the script from above cli.add_command('mash', call_mash_button) + # Hold a button command + async def hold(*args): + """ + hold - Press and hold a specified button + + Usage: + hold