From e9005c1fe2e767da4b880b58242b1eb94d990e72 Mon Sep 17 00:00:00 2001 From: Ivan Maslov Date: Sun, 7 Jun 2020 18:57:29 +0300 Subject: [PATCH] # Worklogger --- .../WorkLogger/pyWorkLogger/Catcher/Mouse.py | 126 ++++++++++++++---- 1 file changed, 102 insertions(+), 24 deletions(-) diff --git a/Utils/WorkLogger/pyWorkLogger/Catcher/Mouse.py b/Utils/WorkLogger/pyWorkLogger/Catcher/Mouse.py index 5a3a510c..7ff82f77 100644 --- a/Utils/WorkLogger/pyWorkLogger/Catcher/Mouse.py +++ b/Utils/WorkLogger/pyWorkLogger/Catcher/Mouse.py @@ -16,6 +16,7 @@ inList = [ # "ValueInt": "" # MOVE: point count # } ] +gMoveWaitNextPointSecondsMaxFloat = 5 gMoveWaitNextPointPercentFloat = 4 gMoveWaitNextPointSecondsFloat = None gMovePrevious = None # {"EventDatetime": datetime.datetime.now(), "XInt": None, "YInt": None} @@ -50,31 +51,104 @@ def on_move(x, y): gMovePrevious = {"EventDatetime": lNowDatetime, "XInt": x, "YInt": y} gMovePointCountInt = gMovePointCountInt + 1 else: - # Add in result list - lResult = { - "EventStartDatetime": gMoveFirstDatetime, - "EventEndDatetime": lNowDatetime, - "EventTypeStr": "MOVE", # MOVE | CLICK | SCROLL | SELECT - "ValueInt": gMovePointCountInt # MOVE: point count - } - inList.append(lResult) - print(lResult) - # Close the move - gMoveWaitNextPointSecondsFloat = None - gMovePrevious = None - gMovePointCountInt = None - gMoveFirstDatetime= None + if "left" not in SpecialKeyList: + pass + # Add in result list + #lResult = { + # "EventStartDatetime": gMoveFirstDatetime, + # "EventEndDatetime": lNowDatetime, + # "EventTypeStr": "MOVE", # MOVE | CLICK | SCROLL | SELECT + # "ValueInt": gMovePointCountInt # MOVE: point count + #} + #inList.append(lResult) + #print(lResult) + ## Close the move + #gMoveWaitNextPointSecondsFloat = None + #gMovePrevious = None + #gMovePointCountInt = None + #gMoveFirstDatetime= None #print('Pointer moved to {0}'.format( # (x, y))) -def on_click(x, y, button, pressed): - print('{0} at {1}'.format( - 'Pressed' if pressed else 'Released', - (x, y))) - print(button) - if not pressed: - # Stop listener - return True +def on_click(inButtonEvent): + global SpecialKeyList + global gMovePrevious + global gMoveWaitNextPointSecondsFloat + global gMoveWaitNextPointPercentFloat + global gMovePointCountInt + global gMoveFirstDatetime + lNowDatetime = datetime.datetime.now() + if inButtonEvent.button=="left" and inButtonEvent.event_type == "down": + SpecialKeyList.append("left") + # Close the previous move action + if gMovePrevious is not None: + # Add in result list + lResult = { + "EventStartDatetime": gMoveFirstDatetime, + "EventEndDatetime": lNowDatetime, + "EventTypeStr": "MOVE", # MOVE | CLICK | SCROLL | SELECT + "ValueInt": gMovePointCountInt # MOVE: point count + } + inList.append(lResult) + print(lResult) + # Close the move + gMoveWaitNextPointSecondsFloat = None + gMovePrevious = None + gMovePointCountInt = None + gMoveFirstDatetime = None + elif inButtonEvent.button=="left" and inButtonEvent.event_type == "up": + if "left" in SpecialKeyList: SpecialKeyList.remove("left") + # Close the previous move action + if gMovePrevious is not None: + # Add in result list + lResult = { + "EventStartDatetime": gMoveFirstDatetime, + "EventEndDatetime": lNowDatetime, + "EventTypeStr": "SELECT", # MOVE | CLICK | SCROLL | SELECT + "ValueInt": gMovePointCountInt # MOVE: point count + } + inList.append(lResult) + print(lResult) + # Close the move + gMoveWaitNextPointSecondsFloat = None + gMovePrevious = None + gMovePointCountInt = None + gMoveFirstDatetime = None + else: + # Add in result list + lResult = { + "EventStartDatetime": lNowDatetime, + "EventEndDatetime": lNowDatetime, + "EventTypeStr": "CLICK", # MOVE | CLICK | SCROLL | SELECT + "ValueInt": 'left' # MOVE: point count + } + inList.append(lResult) + print(lResult) + # Close the move + gMoveWaitNextPointSecondsFloat = None + gMovePrevious = None + gMovePointCountInt = None + gMoveFirstDatetime = None + elif inButtonEvent.button=="right" and inButtonEvent.event_type == "up": + # Add in result list + lResult = { + "EventStartDatetime": lNowDatetime, + "EventEndDatetime": lNowDatetime, + "EventTypeStr": "CLICK", # MOVE | CLICK | SCROLL | SELECT + "ValueInt": 'right' # MOVE: point count + } + inList.append(lResult) + print(lResult) + elif inButtonEvent.button=="middle" and inButtonEvent.event_type == "up": + # Add in result list + lResult = { + "EventStartDatetime": lNowDatetime, + "EventEndDatetime": lNowDatetime, + "EventTypeStr": "CLICK", # MOVE | CLICK | SCROLL | SELECT + "ValueInt": 'middle' # MOVE: point count + } + inList.append(lResult) + print(lResult) def on_scroll(x, y, dx, dy): print('Scrolled {0} at {1}'.format( @@ -97,15 +171,19 @@ def on_scroll(x, y, dx, dy): def Test(inArg): if type(inArg) is mouse_new._mouse_event.MoveEvent: on_move(x = inArg.x, y = inArg.y) + elif type(inArg) is mouse_new._mouse_event.ButtonEvent: + on_click(inButtonEvent = inArg) + elif type(inArg) is mouse_new._mouse_event.WheelEvent: + print(inArg) mouse_new.hook(Test) import pprint while True: # Check move interval lNowDatetime = datetime.datetime.now() - if gMovePrevious is not None and gMoveWaitNextPointSecondsFloat is not None: + if gMovePrevious is not None and gMoveWaitNextPointSecondsMaxFloat is not None and "left" not in SpecialKeyList: lNewOldDeltaSecondsFloat = (lNowDatetime - gMovePrevious["EventDatetime"]).total_seconds() - if lNewOldDeltaSecondsFloat > gMoveWaitNextPointSecondsFloat: + if lNewOldDeltaSecondsFloat > gMoveWaitNextPointSecondsMaxFloat: # Add in result list lResult = { "EventStartDatetime": gMoveFirstDatetime,