Add support for pressing two buttons on the same side
Bu işleme şunda yer alıyor:
ebeveyn
e4cca123c9
işleme
848c9d2f74
|
@ -1,4 +1,7 @@
|
|||
|
||||
import time
|
||||
|
||||
|
||||
class InputManager:
|
||||
|
||||
currently_pressed_keys = []
|
||||
|
@ -7,6 +10,13 @@ class InputManager:
|
|||
right_paw_keys = []
|
||||
shifted_keys = {}
|
||||
|
||||
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
|
||||
|
@ -21,12 +31,35 @@ class InputManager:
|
|||
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)
|
||||
|
||||
def on_update(self, down):
|
||||
pass
|
||||
|
||||
def press_key(self, key):
|
||||
key = key.lower()
|
||||
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()
|
||||
|
||||
self.currently_pressed_keys.append(key)
|
||||
self.on_update(True)
|
||||
|
||||
|
@ -48,11 +81,11 @@ class InputManager:
|
|||
for key in self.currently_pressed_keys:
|
||||
if key in self.left_paw_keys:
|
||||
pressed = True
|
||||
return pressed
|
||||
return pressed and not self.left_paw_repressed
|
||||
|
||||
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
|
||||
return pressed and not self.right_paw_repressed
|
||||
|
|
2
main.py
2
main.py
|
@ -59,6 +59,8 @@ class Main:
|
|||
hooks_manager.cancel()
|
||||
sys.exit()
|
||||
|
||||
self.input_manager.timer_update()
|
||||
|
||||
font_surface = self.font.render("Pressed keys: " + str(self.input_manager.currently_pressed_keys),
|
||||
True, [0, 0, 0], [255, 255, 255])
|
||||
textpos = font_surface.get_rect()
|
||||
|
|
Yükleniyor…
Yeni konuda referans