programming-bongocat/input_manager.py

92 lines
2.7 KiB
Python
Raw Normal View History

2018-12-10 22:05:51 +01:00
import time
2018-12-10 22:05:51 +01:00
class InputManager:
currently_pressed_keys = []
left_paw_keys = []
right_paw_keys = []
shifted_keys = {}
2018-12-10 22:05:51 +01:00
right_paw_repress_time = 0
left_paw_repress_time = 0
right_paw_repressed = False
left_paw_repressed = False
repress_time = 0.05
def init(self, linux):
if linux:
import keylist_linux_fi as keys
else:
import keylist_win_fi as keys
2018-12-10 22:05:51 +01:00
self.shifted_keys = keys.shifted_keys
2018-12-11 00:52:04 +01:00
2018-12-11 01:26:21 +01:00
for key in keys.right_paw_keys:
self.right_paw_keys.append(key.lower())
for key in keys.left_paw_keys:
self.left_paw_keys.append(key.lower())
def timer_update(self):
curr_time = time.time()
update = False
if self.right_paw_repressed:
delta = curr_time - self.right_paw_repress_time
if delta > self.repress_time:
self.right_paw_repressed = False
update = True
if self.left_paw_repressed:
delta = curr_time - self.left_paw_repress_time
if delta > self.repress_time:
self.left_paw_repressed = False
update = True
if update:
self.on_update(True)
2018-12-10 22:05:51 +01:00
def on_update(self, down):
pass
def press_key(self, key):
2018-12-11 01:26:21 +01:00
key = key.lower()
2018-12-10 22:05:51 +01:00
if not key in self.currently_pressed_keys:
if key in self.left_paw_keys and self.left_keys_pressed():
self.left_paw_repressed = True
self.left_paw_repress_time = time.time()
if key in self.right_paw_keys and self.right_keys_pressed():
self.right_paw_repressed = True
self.right_paw_repress_time = time.time()
2018-12-10 22:05:51 +01:00
self.currently_pressed_keys.append(key)
self.on_update(True)
def release_key(self, key):
2018-12-11 01:26:21 +01:00
key = key.lower()
2018-12-10 22:05:51 +01:00
if key in self.currently_pressed_keys:
self.currently_pressed_keys.remove(key)
self.on_update(False)
shifted = self.shifted_keys.get(key)
2018-12-11 01:26:21 +01:00
if shifted != None:
shifted = shifted.lower()
if shifted in self.currently_pressed_keys:
2018-12-11 01:50:38 +01:00
self.currently_pressed_keys.remove(shifted)
self.on_update(False)
2018-12-10 22:05:51 +01:00
def left_keys_pressed(self):
pressed = False
for key in self.currently_pressed_keys:
if key in self.left_paw_keys:
pressed = True
return pressed and not self.left_paw_repressed
2018-12-10 22:05:51 +01:00
def right_keys_pressed(self):
pressed = False
for key in self.currently_pressed_keys:
if key in self.right_paw_keys:
pressed = True
return pressed and not self.right_paw_repressed