projects
/
python_utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Various changes.
[python_utils.git]
/
input_utils.py
diff --git
a/input_utils.py
b/input_utils.py
index 913146a313608398d902a03eef7fe824399cd6fc..648ee301639ec876750ebdd2b5d98e0d01603eaf 100644
(file)
--- a/
input_utils.py
+++ b/
input_utils.py
@@
-7,6
+7,8
@@
import signal
import sys
from typing import List
import sys
from typing import List
+import exceptions
+
def single_keystroke_response(
valid_responses: List[str],
def single_keystroke_response(
valid_responses: List[str],
@@
-15,15
+17,13
@@
def single_keystroke_response(
default_response: str = None,
timeout_seconds: int = None,
) -> str:
default_response: str = None,
timeout_seconds: int = None,
) -> str:
- class TimeoutError(Exception):
- pass
-
def _handle_timeout(signum, frame) -> None:
def _handle_timeout(signum, frame) -> None:
- raise TimeoutError()
+ raise
exceptions.
TimeoutError()
def _single_keystroke_response_internal(
valid_responses: List[str], timeout_seconds=None
) -> str:
def _single_keystroke_response_internal(
valid_responses: List[str], timeout_seconds=None
) -> str:
+ os_special_keystrokes = [3, 26] # ^C, ^Z
if timeout_seconds is not None:
signal.signal(signal.SIGALRM, _handle_timeout)
signal.alarm(timeout_seconds)
if timeout_seconds is not None:
signal.signal(signal.SIGALRM, _handle_timeout)
signal.alarm(timeout_seconds)
@@
-33,6
+33,8
@@
def single_keystroke_response(
response = readchar.readchar()
if response in valid_responses:
break
response = readchar.readchar()
if response in valid_responses:
break
+ if ord(response) in os_special_keystrokes:
+ break
return response
finally:
if timeout_seconds is not None:
return response
finally:
if timeout_seconds is not None:
@@
-45,7
+47,7
@@
def single_keystroke_response(
response = _single_keystroke_response_internal(
valid_responses, timeout_seconds
)
response = _single_keystroke_response_internal(
valid_responses, timeout_seconds
)
- except TimeoutError:
+ except
exceptions.
TimeoutError:
if default_response is not None:
response = default_response
if prompt is not None:
if default_response is not None:
response = default_response
if prompt is not None: