forked from ufosc/TERMINALMONOPOLY
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinput_handler.py
More file actions
43 lines (35 loc) · 1.32 KB
/
input_handler.py
File metadata and controls
43 lines (35 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# input_handler.py
import platform
if platform.system() == "Darwin": # macOS
from pynput import keyboard as pynput_keyboard
_pressed_keys = set()
def _on_press(key):
try:
_pressed_keys.add(key.char.lower())
except AttributeError:
if key == pynput_keyboard.Key.up:
_pressed_keys.add('up')
elif key == pynput_keyboard.Key.down:
_pressed_keys.add('down')
elif key == pynput_keyboard.Key.enter:
_pressed_keys.add('enter')
def _on_release(key):
try:
_pressed_keys.discard(key.char.lower())
except AttributeError:
if key == pynput_keyboard.Key.up:
_pressed_keys.discard('up')
elif key == pynput_keyboard.Key.down:
_pressed_keys.discard('down')
elif key == pynput_keyboard.Key.enter:
_pressed_keys.discard('enter')
if key == pynput_keyboard.Key.esc:
return False # stop listener
listener = pynput_keyboard.Listener(on_press=_on_press, on_release=_on_release)
listener.start()
def is_pressed(key_str):
return key_str.lower() in _pressed_keys
else: # Assume Windows/Linux
import keyboard as kb
def is_pressed(key_str):
return kb.is_pressed(key_str)