11import logging
2- from datetime import datetime , timedelta
32import threading
4- from time import sleep
53
6- from pykeyboard import PyKeyboardEvent
7- from pymouse import PyMouseEvent
4+ from pynput import keyboard
5+ from pynput import mouse
86
97logger = logging .getLogger (__name__ )
108
@@ -18,66 +16,61 @@ def has_new_event(self):
1816 raise NotImplementedError
1917
2018
21- class KeyboardListener (PyKeyboardEvent , EventFactory ):
19+ class KeyboardListener (EventFactory ):
2220 def __init__ (self ):
23- PyKeyboardEvent .__init__ (self )
2421 self .logger = logger .getChild ("keyboard" )
2522 # self.logger.setLevel(logging.DEBUG)
2623 self .new_event = threading .Event ()
2724 self ._reset_data ()
2825
26+ def start (self ):
27+ listener = keyboard .Listener (on_press = self .on_press , on_release = self .on_release )
28+ listener .start ()
29+
2930 def _reset_data (self ):
30- self .event_data = {
31- "presses" : 0
32- }
31+ self .event_data = {"presses" : 0 }
3332
34- def tap (self , keycode , character , press ):
35- # logging.debug("Clicked keycode: {}".format(keycode) )
33+ def on_press (self , key ):
34+ print ( "press" , key )
3635 self .logger .debug ("Input received" )
3736 self .event_data ["presses" ] += 1
3837 self .new_event .set ()
3938
40- def escape (self , event ):
41- # Always returns False so that listening is never stopped
42- return False
39+ def on_release (self , key ):
40+ print ("release" , key )
4341
4442 def next_event (self ):
4543 """Returns an event and prepares the internal state so that it can start to build a new event"""
4644 self .new_event .clear ()
4745 data = self .event_data
46+ print (data )
4847 self ._reset_data ()
4948 return data
5049
5150 def has_new_event (self ):
5251 return self .new_event .is_set ()
5352
5453
55- class MouseListener (PyMouseEvent , EventFactory ):
54+ class MouseListener (EventFactory ):
5655 def __init__ (self ):
57- PyMouseEvent .__init__ (self )
5856 self .logger = logger .getChild ("mouse" )
5957 self .logger .setLevel (logging .INFO )
6058 self .new_event = threading .Event ()
6159 self .pos = None
6260 self ._reset_data ()
6361
6462 def _reset_data (self ):
65- self .event_data = {
66- "clicks" : 0 ,
67- "deltaX" : 0 ,
68- "deltaY" : 0
69- }
63+ self .event_data = {"clicks" : 0 , "deltaX" : 0 , "deltaY" : 0 }
7064
71- def click (self , x , y , button , press ):
72- # TODO: Differentiate between leftclick and rightclick?
73- if press :
74- self .logger .debug ("Clicked mousebutton" )
75- self .event_data ["clicks" ] += 1
76- self .new_event .set ()
65+ def start (self ):
66+ listener = mouse .Listener (
67+ on_move = self .on_move , on_click = self .on_click , on_scroll = self .on_scroll
68+ )
69+ listener .start ()
7770
78- def move (self , x , y ):
71+ def on_move (self , x , y ):
7972 newpos = (x , y )
80- #self.logger.debug("Moved mouse to: {},{}".format(x, y))
73+ # self.logger.debug("Moved mouse to: {},{}".format(x, y))
8174 if not self .pos :
8275 self .pos = newpos
8376
@@ -88,6 +81,19 @@ def move(self, x, y):
8881 self .pos = newpos
8982 self .new_event .set ()
9083
84+ def on_click (self , * args ):
85+ self .logger .debug (args )
86+
87+ def click (self , x , y , button , press ):
88+ # TODO: Differentiate between leftclick and rightclick?
89+ if press :
90+ self .logger .debug ("Clicked mousebutton" )
91+ self .event_data ["clicks" ] += 1
92+ self .new_event .set ()
93+
94+ def on_scroll (self , x , y , scrollx , scrolly ):
95+ self .logger .debug (f"{ scrollx } , { scrolly } at { (x , y )} " )
96+
9197 def has_new_event (self ):
9298 answer = self .new_event .is_set ()
9399 self .new_event .clear ()
@@ -96,5 +102,6 @@ def has_new_event(self):
96102 def next_event (self ):
97103 self .new_event .clear ()
98104 data = self .event_data
105+ print (data )
99106 self ._reset_data ()
100107 return data
0 commit comments