Merge pull request #18 from SimLeek/keymouse

Keymouse
This commit is contained in:
Josh Miklos
2019-02-25 23:16:44 -07:00
committed by GitHub
2 changed files with 9 additions and 4 deletions

View File

@ -1 +1 @@
__version__ = '0.6.1' __version__ = '0.6.2'

View File

@ -1,5 +1,6 @@
from cvpubsubs.window_sub.winctrl import WinCtrl from cvpubsubs.window_sub.winctrl import WinCtrl
import threading import threading
import time
if False: if False:
from typing import Callable from typing import Callable
@ -18,22 +19,24 @@ class mouse_thread(object): # NOSONAR
class mouse_loop_thread(object): # NOSONAR class mouse_loop_thread(object): # NOSONAR
def __init__(self, f, run_when_no_events=False): def __init__(self, f, run_when_no_events=False, fps=60):
self.f = f self.f = f
self.sub_mouse = WinCtrl.mouse_pub.make_sub() self.sub_mouse = WinCtrl.mouse_pub.make_sub()
self.sub_cmd = WinCtrl.win_cmd_pub.make_sub() self.sub_cmd = WinCtrl.win_cmd_pub.make_sub()
self.sub_cmd.return_on_no_data = '' self.sub_cmd.return_on_no_data = ''
self.run_when_no_events = run_when_no_events self.run_when_no_events = run_when_no_events
self.fps = fps
def __call__(self, *args, **kwargs): def __call__(self, *args, **kwargs):
msg_cmd = '' msg_cmd = ''
while msg_cmd != 'quit': while msg_cmd != 'quit':
mouse_xyzclick = self.sub_mouse.get() # type: MouseEvent mouse_xyzclick = self.sub_mouse.get(blocking=True) # type: MouseEvent
if mouse_xyzclick is not self.sub_mouse.return_on_no_data: if mouse_xyzclick is not self.sub_mouse.return_on_no_data:
self.f(mouse_xyzclick, *args, **kwargs) self.f(mouse_xyzclick, *args, **kwargs)
elif self.run_when_no_events: elif self.run_when_no_events:
self.f(None, *args, **kwargs) self.f(None, *args, **kwargs)
msg_cmd = self.sub_cmd.get() msg_cmd = self.sub_cmd.get()
time.sleep(1.0 / self.fps)
WinCtrl.quit(force_all_read=False) WinCtrl.quit(force_all_read=False)
@ -59,12 +62,13 @@ class key_thread(object): # NOSONAR
class key_loop_thread(object): # NOSONAR class key_loop_thread(object): # NOSONAR
def __init__(self, f, run_when_no_events=False): def __init__(self, f, run_when_no_events=False, fps=60):
self.f = f self.f = f
self.sub_key = WinCtrl.key_pub.make_sub() self.sub_key = WinCtrl.key_pub.make_sub()
self.sub_cmd = WinCtrl.win_cmd_pub.make_sub() self.sub_cmd = WinCtrl.win_cmd_pub.make_sub()
self.sub_cmd.return_on_no_data = '' self.sub_cmd.return_on_no_data = ''
self.run_when_no_events = run_when_no_events self.run_when_no_events = run_when_no_events
self.fps = fps
def __call__(self, *args, **kwargs): def __call__(self, *args, **kwargs):
msg_cmd = '' msg_cmd = ''
@ -75,6 +79,7 @@ class key_loop_thread(object): # NOSONAR
elif self.run_when_no_events: elif self.run_when_no_events:
self.f(None, *args, **kwargs) self.f(None, *args, **kwargs)
msg_cmd = self.sub_cmd.get() msg_cmd = self.sub_cmd.get()
time.sleep(1.0 / self.fps)
WinCtrl.quit(force_all_read=False) WinCtrl.quit(force_all_read=False)