summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2022-04-15 09:33:45 -0700
committerScott Gasch <[email protected]>2022-04-15 09:33:45 -0700
commitc8986118d801def0e6ee269378e18e7cb355e237 (patch)
tree658d37188ceb0661d0909ec027d15744827b20ec
parent111d5ba0ac240892327c3ac8b909c60b387789f3 (diff)
Press any key to continue.
-rw-r--r--input_utils.py12
1 files changed, 8 insertions, 4 deletions
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."""