From ff42215aa1293d5126c87cba469ecd468a6d13fa Mon Sep 17 00:00:00 2001 From: Jens Heine Date: Sun, 17 Mar 2024 20:55:46 +0100 Subject: [PATCH 1/2] added ctrl-d handling in posix --- pytimedinput/pytimedinput.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pytimedinput/pytimedinput.py b/pytimedinput/pytimedinput.py index 53f0de7..a2bc663 100644 --- a/pytimedinput/pytimedinput.py +++ b/pytimedinput/pytimedinput.py @@ -125,6 +125,9 @@ def readStdin(): break if(checkStdin()): inputCharacter = readStdin() + if inputCharacter == '\x04': # ctrl-d pressed --> raise EOFError + __setStdoutSettings(__savedConsoleSettings) + raise EOFError if(inputCharacter in endCharacters): break if(inputCharacter != '\b' and inputCharacter != '\x7f'): From b79298cfda249257ee988d166fe6bb57546ee9eb Mon Sep 17 00:00:00 2001 From: Jens Heine Date: Sun, 17 Mar 2024 21:07:00 +0100 Subject: [PATCH 2/2] added sleep to avoid cpu 100 percent --- pytimedinput/pytimedinput.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pytimedinput/pytimedinput.py b/pytimedinput/pytimedinput.py index a2bc663..84b0f68 100644 --- a/pytimedinput/pytimedinput.py +++ b/pytimedinput/pytimedinput.py @@ -153,6 +153,7 @@ def readStdin(): print("\x1b[1D\x1b[0K", end='', flush=True) if(resetOnInput and timeout > -1): timeStart = time.time() + time.sleep(0.01) print("") __setStdoutSettings(__savedConsoleSettings) return userInput, timedOut @@ -187,3 +188,10 @@ def __enableStdoutAnsiEscape(): else: # Should be enabled by default under Linux (and OSX?), just set cbreak-mode tty.setcbreak(sys.stdin.fileno(), termios.TCSADRAIN) + + +def main(): + timedInput("Enter: ", timeout=5) + +if __name__ == '__main__': + main()