def play_mouse_events(events): iterations = get_number_of_iterations() for i in range(iterations): if stop: break mouse.play(events, speed_factor=1.0) return events
def play(self, speed_factor=1.0) -> None: if not self.data: raise RuntimeError("`data` cannot be None") if "events" not in self.data: raise RuntimeError("`data['events']` cannot be None") mouse.play(self.data["events"], speed_factor=speed_factor) mouse.unhook_all()
def zaWarudo(): #x1, y1 = win32api.GetCursorPos() recorded = [] mouse.hook(recorded.append) time.sleep(3) mouse.unhook(recorded.append) #print(recorded) print("not funny, didnt happen") mouse.play(reverseMouseEvent(recorded))
def start_server(ip, port): HOST = ip PORT = int(port) currx = 0 curry = 0 # def set_display_properties(): root = tkinter.Tk() root.attributes('-alpha', 0) root.attributes('-fullscreen', True) return (root.winfo_screenwidth(), root.winfo_screenheight()) screen_dimensions = set_display_properties() # with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as main_socket: main_socket.bind((HOST, PORT)) main_socket.listen() conn, addr = main_socket.accept() with conn: print('Connected by : ', addr) server_screen = conn.recv(1024).decode('utf-8') server_width = int(server_screen.split(':')[0]) server_height = int(server_screen.split(':')[1]) while True: data = conn.recv(1024) if not data: break point = data.decode('utf-8') try: if point.split(')')[1] == '': if point[:11] == 'ButtonEvent': button_event = eval('mouse.' + point) if button_event.event_type == 'up': m.release(button_event.button) elif button_event.event_type == 'down': m.press(button_event.button) else: mouse.play([eval('mouse.' + point)]) except: if point[:2] == 'kb': if point[3] == 'a': if point[2] == 'r': k.release(point[5:]) if point[2] == 'r': k.press(point[5:]) elif point[3] == 's': if point[2] == 'r': k.release(eval(point[5:])) if point[2] == 'r': k.press(eval(point[5:]))
def receiver(e): if e.event_type == 0: event = mouse._mouse_event.MoveEvent._make([e.x, e.y, e.time]) elif e.event_type == 1: event = mouse._mouse_event.ButtonEvent._make([e.btype, e.button, e.time]) elif e.event_type == 2: event = mouse._mouse_event.WheelEvent._make([e.delta, e.time]) l.put(event) event_to_play = [l.get()] if not e.on_hold: mouse.play(event_to_play)
def main_loop(): with open("recordings/auto_leaf_keeper.pkl", 'rb') as input: record = pickle.load(input) print('press enter to stop auto leaf keaper') click_listener_thread = threading.Thread(target=keyboard.wait, args=('enter',)) click_listener_thread.start() while click_listener_thread.is_alive(): mouse.play(record, speed_factor=10) return 1
def run(): channel = grpc.insecure_channel('localhost:54321') stub = mouse_pb2_grpc.MouseSenderStub(channel) while True: for e in stub.mouseStream(mouse_pb2.EventString(mouseevent=b)): print('*********') k = eval(e.mouseevent) lista = [] lista.append(k) print(lista) # l.put(k) print('**********************************************') mouse.play(lista)
def click_template_image_then_playback_events(template_image='btn.png', iterations=1): click_template_image(template_image) events = record_mouse_events() iterations = get_number_of_iterations() for i in range(iterations): if stop: print('stop signal received, ending program') break print('{} Playing back: template click then events'.format(i)) click_template_image(template_image) mouse.play(events, speed_factor=4.0) sleep(0.5)
def replay(): # pyautogui.moveTo(width/2,height/2) #move mouse to middle of screen time.sleep(.2) base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) keyboard.start_recording() keyboard.stop_recording() mouse_events = pickle.load(open(base_dir +r'/events/mouse.p','rb')) keyboard_events = pickle.load(open(base_dir +r'/events/keyboard.p','rb')) print(keyboard_events) #Keyboard threadings: k_thread = threading.Thread(target = lambda :keyboard.play(keyboard_events[:-1])) k_thread.start() #Mouse threadings: m_thread = threading.Thread(target = lambda :mouse.play(mouse_events)) m_thread.start() #waiting for both threadings to be completed m_thread.join() k_thread.join()
def main_loop(): with open("recordings/auto_leaf_keaper.pkl", 'rb') as input: record = pickle.load(input) click_listener_thread = threading.Thread(target=keyboard.wait, args=('enter', )) print('press enter to stop cheese grind') click_listener_thread.start() time.sleep(3) while click_listener_thread.is_alive(): #collect mouse.play(record, speed_factor=1) #wait 3 min _win_set_time(60 * 3) #buy new mouse.play(record, speed_factor=1) #wait 2 hours _win_set_time(2 * 3600) return 1
def play_shortcut(name): selectedShortcut = 0 totalShortcuts = 0 with open("name_shortcuts.txt", 'r') as nfile: for line in nfile.readlines(): if name in line: selectedShortcut = totalShortcuts totalShortcuts += 1 kfile = open("keyboard_shortcuts.txt", 'rb+') for i in range(selectedShortcut + 1): keyboard_events = load(kfile) kfile.close() mfile = open("mouse_shortcuts.txt", 'rb+') for j in range(selectedShortcut + 1): mouse_events = load(mfile) mfile.close() #just to see what inputs will be done can be removed #-------------------------------------------------- print(str(mouse_events)) print(str(keyboard_events)) #-------------------------------------------------- #Uses threading to play both mouse and keyboard movements at the same time m_thread = threading.Thread( target=lambda: mouse.play(mouse_events, speed_factor=1)) k_thread = threading.Thread( target=lambda: keyboard.play(keyboard_events, speed_factor=1)) m_thread.start() #This one line of code fixed the keyboard inputs not working (even though the mouse inputs did) keyboard._listener.start_if_necessary() k_thread.start() m_thread.join() k_thread.join()
import fileinput import json import sys class_by_name = { 'ButtonEvent': mouse.ButtonEvent, 'WheelEvent': mouse.WheelEvent, 'MoveEvent': mouse.MoveEvent, } def print_event_json(event): # Could use json.dumps(event.__dict__()), but this way we guarantee semantic order. d = event._asdict() d['event_class'] = event.__class__.__name__ print(json.dumps(d)) sys.stdout.flush() mouse.hook(print_event_json) def load(line): d = json.loads(line) class_ = class_by_name[d['event_class']] del d['event_class'] return class_(**d) mouse.play(load(line) for line in fileinput.input())
MoveEvent(x=500, y=409, time=1611227281.3726728), MoveEvent(x=500, y=409, time=1611227281.4196038), MoveEvent(x=500, y=409, time=1611227281.5522091), MoveEvent(x=500, y=408, time=1611227281.559552) ] a31 = [ MoveEvent(x=500, y=408, time=1611227281.3414292), MoveEvent(x=500, y=408, time=1611227281.3414292), MoveEvent(x=500, y=409, time=1611227281.3571086), MoveEvent(x=500, y=409, time=1611227281.3726728), MoveEvent(x=500, y=409, time=1611227281.4196038), MoveEvent(x=500, y=409, time=1611227281.5522091), MoveEvent(x=500, y=408, time=1611227281.559552), MoveEvent(x=500, y=408, time=1611227281.5682094) ] for i in range(1, 31): k = eval('a' + str(i)) print(i) mouse.play(k) time.sleep(5) print('************************************') print('************************************') print('************************************') print('************************************') print('************************************') # mouse.play(a1) # mouse.sleep(5) # mouse.play(a2) # mouse.sleep(5)
) running = True print("Playing the PMR in 5") seqExt.countdown() if not loopCnt: print("Playing recording once") loopCnt = 1 else: loopCnt = int(loopCnt) cycle = 1 timesToRun = "infinity" if loopCnt < 0 else loopCnt while running: if loopCnt != 1: print("Playing recording for time " + str(cycle) + '/' + str(timesToRun)) mouse.play(pmr) if cycle == timesToRun: running = False cycle += 1 elif option == 'j': fName = seqExt.nameFile(recType="pmr") seqExt.PMRtoFile(pmr, fName) elif option == 'k': print( "\nThe script will start recording your mouse movements, clicks, and scrolls in 5" ) seqExt.countdown() print( "Your mouse is now being recorded. Press Middle Click in any application to stop." ) pmr = mouse.record(button="middle") print("\nRecording session ended. What do you want to do now?")
def _play_mouse(self): logger.debug("Mouse kaydı oynatılıyor") mouse.play(self.events.mouse_events)
import mouse import pickle actions = [] fileName = input ("Enter template name w/o extension: \n") fileName = "Templates/" + fileName + ".dat" with open(fileName, 'rb') as f: actions = (pickle.load(f)) f.close() mouse.play(actions)
import time base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) mouse_events = [] # mouse.hook(mouse_events.append) keyboard.start_recording() time.sleep(.2) #we move to arbitrary position and press a harmless key so the keyboard and mouse events start recording at the same time. pyautogui.moveTo(500, 200) pyautogui.press('left') keyboard.wait("a") mouse.unhook(mouse_events.append) keyboard_events = keyboard.stop_recording() #Keyboard threadings: k_thread = threading.Thread(target=lambda: keyboard.play(keyboard_events)) k_thread.start() #Mouse threadings: m_thread = threading.Thread(target=lambda: mouse.play(mouse_events)) m_thread.start() #waiting for both threadings to be completed k_thread.join() m_thread.join()
def play_input(input: list): mouse.play(input, include_moves=False, include_wheel=False, speed_factor=1.01) #1.01
def play(): global events global playing mouse.play(events, 0.7) playing = False
def test_record_play(self): from threading import Thread, Lock lock = Lock() lock.acquire() def t(): self.recorded = mouse.record(RIGHT) lock.release() Thread(target=t).start() self.click() self.wheel(5) self.move(100, 50) self.press(RIGHT) lock.acquire() self.assertEqual(len(self.recorded), 5) self.assertEqual(self.recorded[0]._replace(time=None), ButtonEvent(DOWN, LEFT, None)) self.assertEqual(self.recorded[1]._replace(time=None), ButtonEvent(UP, LEFT, None)) self.assertEqual(self.recorded[2]._replace(time=None), WheelEvent(5, None)) self.assertEqual(self.recorded[3]._replace(time=None), MoveEvent(100, 50, None)) self.assertEqual(self.recorded[4]._replace(time=None), ButtonEvent(DOWN, RIGHT, None)) mouse.play(self.recorded, speed_factor=0) events = self.flush_events() self.assertEqual(len(events), 5) self.assertEqual(events[0], (DOWN, LEFT)) self.assertEqual(events[1], (UP, LEFT)) self.assertEqual(events[2], ('wheel', 5)) self.assertEqual(events[3], ('move', (100, 50))) self.assertEqual(events[4], (DOWN, RIGHT)) mouse.play(self.recorded) events = self.flush_events() self.assertEqual(len(events), 5) self.assertEqual(events[0], (DOWN, LEFT)) self.assertEqual(events[1], (UP, LEFT)) self.assertEqual(events[2], ('wheel', 5)) self.assertEqual(events[3], ('move', (100, 50))) self.assertEqual(events[4], (DOWN, RIGHT)) mouse.play(self.recorded, include_clicks=False) events = self.flush_events() self.assertEqual(len(events), 2) self.assertEqual(events[0], ('wheel', 5)) self.assertEqual(events[1], ('move', (100, 50))) mouse.play(self.recorded, include_moves=False) events = self.flush_events() self.assertEqual(len(events), 4) self.assertEqual(events[0], (DOWN, LEFT)) self.assertEqual(events[1], (UP, LEFT)) self.assertEqual(events[2], ('wheel', 5)) self.assertEqual(events[3], (DOWN, RIGHT)) mouse.play(self.recorded, include_wheel=False) events = self.flush_events() self.assertEqual(len(events), 4) self.assertEqual(events[0], (DOWN, LEFT)) self.assertEqual(events[1], (UP, LEFT)) self.assertEqual(events[2], ('move', (100, 50))) self.assertEqual(events[3], (DOWN, RIGHT))
def mouse_mover(record): while True: mouse.play(record)
# drag from (0, 0) to (100, 100) relatively with a duration of 0.1s mouse.drag(0, 0, 100, 100, absolute=False, duration=0.1) # whether a button is clicked print(mouse.is_pressed('right')) # move 100 right & 100 down mouse.move(100, 100, absolute=False, duration=0.2) # make a listener when left button is clicked mouse.on_click(lambda: print("Left Button clicked.")) # make a listener when right button is clicked mouse.on_right_click(lambda: print("Right Button clicked.")) # remove the listeners when you want mouse.unhook_all() # scroll down mouse.wheel(-1) # scroll up mouse.wheel(1) # record until you click right events = mouse.record() # replay these events mouse.play(events[:-1])