summaryrefslogtreecommitdiff
path: root/inputs.py
diff options
context:
space:
mode:
Diffstat (limited to 'inputs.py')
-rw-r--r--inputs.py34
1 files changed, 21 insertions, 13 deletions
diff --git a/inputs.py b/inputs.py
index 47160c3..37044f9 100644
--- a/inputs.py
+++ b/inputs.py
@@ -1,32 +1,35 @@
-import sys, tty, termios
+import sys
+import tty
+import termios
+import select
+import datetime
def getch():
- import sys, tty, termios
- old_settings = termios.tcgetattr(0)
+ """get next character without needing to press enter"""
+ old_settings = termios.tcgetattr(sys.stdin)
new_settings = old_settings[:]
new_settings[3] &= ~termios.ICANON
try:
termios.tcsetattr(0, termios.TCSANOW, new_settings)
ch = sys.stdin.read(1)
-# except BlockingIOError:
-# pass
finally:
termios.tcsetattr(0, termios.TCSANOW, old_settings)
return ch
+def getch_nb(timeout):
+ """gets next character in cbreak; returns false if none; cbreak must be set before"""
+ ch = False
+ if select.select([sys.stdin], [], [], timeout) == ([sys.stdin], [], []):
+ ch = sys.stdin.read(1)
+ return ch
+
def get_valid_char(char_list):
"""returns input if it matches a list of valid chars, else retruns False"""
- valid = False
-
in_char = getch()
for char in char_list:
if in_char == char:
- valid = True
- break
-
- if not valid:
- return False
- return in_char
+ return in_char
+ return False
def get_pos_int():
"""returns input as int; returns False if not a positive integer"""
@@ -38,3 +41,8 @@ def get_pos_int():
if in_int < 1:
return False
return in_int
+
+def delta_to_HM(delta):
+ """returns a %H:%M string from a timedelta object"""
+ mins, secs = divmod(int(delta.total_seconds()), 60)
+ return str(mins).zfill(2) + ":" + str(secs).zfill(2)