From 9f19313d3cefce9c28d4fd95966e0da024ffc7ea Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 4 Mar 2021 14:36:24 +0000 Subject: [PATCH] Waiting for keypress --- speaker_client.py | 26 ++++++++++++++++++++------ tests.py | 3 ++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/speaker_client.py b/speaker_client.py index 35bcfd6db..8b78fb285 100644 --- a/speaker_client.py +++ b/speaker_client.py @@ -8,14 +8,31 @@ __status__ = "Production" import os import html -import sys import time -from select import select from session import createSession from speaker import getSpeakerFromServer from speaker import getSpeakerPitch from speaker import getSpeakerRate from speaker import getSpeakerRange +import signal + + +def _waitForKeypress(timeout: int, debug: bool) -> str: + """Waits for a keypress with a timeout + Returns the key pressed, or None on timeout + """ + def _nothing(sig, frame): pass + signal.signal(signal.SIGALRM, _nothing) + signal.alarm(timeout) + keyPress = None + try: + keyPress = input() + signal.alarm(0) + except (IOError, EOFError): + if debug: + print('Keypress Timeout') + return None + print('You typed ' + keyPress) def runSpeakerClient(baseDir: str, proxyType: str, httpPrefix: str, @@ -109,8 +126,5 @@ def runSpeakerClient(baseDir: str, proxyType: str, httpPrefix: str, prevSay = speakerJson['say'] # wait for a while, or until a key is pressed - rlist, wlist, xlist = select([sys.stdin], [], [], 30) - if rlist: - print('wlist: ' + str(wlist)) - print('xlist: ' + str(xlist)) + if _waitForKeypress(30, debug): break diff --git a/tests.py b/tests.py index b99b65ff9..26c8bff6b 100644 --- a/tests.py +++ b/tests.py @@ -2998,7 +2998,8 @@ def testFunctions(): 'createServerEve', 'E2EEremoveDevice', 'setOrganizationScheme', - 'fill_headers' + 'fill_headers', + '_nothing' ] excludeImports = [ 'link',