X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=input_utils.py;fp=input_utils.py;h=635e349009f174c9d7a69b68b38a93c4abf5f4bc;hb=c8986118d801def0e6ee269378e18e7cb355e237;hp=77094daaa7a70cd83ebf0e2b5ba0adac311d2b01;hpb=111d5ba0ac240892327c3ac8b909c60b387789f3;p=python_utils.git diff --git a/input_utils.py b/input_utils.py index 77094da..635e349 100644 --- a/input_utils.py +++ b/input_utils.py @@ -7,7 +7,7 @@ import logging import signal import sys -from typing import List +from typing import List, Optional import readchar # type: ignore @@ -17,7 +17,7 @@ logger = logging.getLogger(__file__) def single_keystroke_response( - valid_responses: List[str], + valid_responses: Optional[List[str]], # None = accept anything *, prompt: str = None, default_response: str = None, @@ -29,7 +29,7 @@ def single_keystroke_response( raise exceptions.TimeoutError() def _single_keystroke_response_internal( - valid_responses: List[str], timeout_seconds=None + valid_responses: Optional[List[str]], timeout_seconds: int = None ) -> str: os_special_keystrokes = [3, 26] # ^C, ^Z if timeout_seconds is not None: @@ -40,7 +40,7 @@ def single_keystroke_response( while True: response = readchar.readchar() logger.debug('Keystroke: 0x%x', ord(response)) - if response in valid_responses: + if not valid_responses or response in valid_responses: break if ord(response) in os_special_keystrokes: break @@ -73,6 +73,10 @@ def yn_response(prompt: str = None, *, timeout_seconds=None) -> str: ).lower() +def press_any_key(prompt: str = "Press any key to continue...", *, timeout_seconds=None) -> str: + return single_keystroke_response(None, prompt=prompt, timeout_seconds=timeout_seconds) + + def keystroke_helper() -> None: """Misc util to watch keystrokes and report what they were."""