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)
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: