• 做了个python3 pynput 监控鼠标键盘操作并回放的模块


    import pynput
    import time
    import re
    import threading
    
    
    class ControlMouseKeyboard(object):
        mouse = pynput.mouse.Controller()
        keyboard = pynput.keyboard.Controller()
    
        mouse_listener = None
        keyboard_listener = None
        mouse_keyboard_move = []
        time_order = []
    
        default_keys = {
            'Key.alt': pynput.keyboard.Key.alt,
            'Key.alt_l': pynput.keyboard.Key.alt_l,
            'Key.alt_r': pynput.keyboard.Key.alt_r,
            'Key.alt_gr': pynput.keyboard.Key.alt_gr,
            'Key.backspace': pynput.keyboard.Key.backspace,
            'Key.caps_lock': pynput.keyboard.Key.caps_lock,
            'Key.cmd': pynput.keyboard.Key.cmd,
            'Key.cmd_l': pynput.keyboard.Key.cmd_l,
            'Key.cmd_r': pynput.keyboard.Key.cmd_r,
            'Key.ctrl': pynput.keyboard.Key.ctrl,
            'Key.ctrl_l': pynput.keyboard.Key.ctrl_l,
            'Key.ctrl_r': pynput.keyboard.Key.ctrl_r,
            'Key.delete': pynput.keyboard.Key.delete,
            'Key.down': pynput.keyboard.Key.down,
            'Key.end': pynput.keyboard.Key.end,
            'Key.enter': pynput.keyboard.Key.enter,
            'Key.esc': pynput.keyboard.Key.esc,
            'Key.f1': pynput.keyboard.Key.f1,
            'Key.f2': pynput.keyboard.Key.f2,
            'Key.f3': pynput.keyboard.Key.f3,
            'Key.f4': pynput.keyboard.Key.f4,
            'Key.f5': pynput.keyboard.Key.f5,
            'Key.f6': pynput.keyboard.Key.f6,
            'Key.f7': pynput.keyboard.Key.f7,
            'Key.f8': pynput.keyboard.Key.f8,
            'Key.f9': pynput.keyboard.Key.f9,
            'Key.f10': pynput.keyboard.Key.f10,
            'Key.f11': pynput.keyboard.Key.f11,
            'Key.f12': pynput.keyboard.Key.f12,
            'Key.f13': pynput.keyboard.Key.f13,
            'Key.f14': pynput.keyboard.Key.f14,
            'Key.f15': pynput.keyboard.Key.f15,
            'Key.f16': pynput.keyboard.Key.f16,
            'Key.f17': pynput.keyboard.Key.f17,
            'Key.f18': pynput.keyboard.Key.f18,
            'Key.f19': pynput.keyboard.Key.f19,
            'Key.f20': pynput.keyboard.Key.f20,
            'Key.home': pynput.keyboard.Key.home,
            'Key.left': pynput.keyboard.Key.left,
            'Key.page_down': pynput.keyboard.Key.page_down,
            'Key.page_up': pynput.keyboard.Key.page_up,
            'Key.right': pynput.keyboard.Key.right,
            'Key.shift': pynput.keyboard.Key.shift,
            'Key.shift_l': pynput.keyboard.Key.shift_l,
            'Key.shift_r': pynput.keyboard.Key.shift_r,
            'Key.space': pynput.keyboard.Key.space,
            'Key.tab': pynput.keyboard.Key.tab,
            'Key.up': pynput.keyboard.Key.up,
            'Key.insert': pynput.keyboard.Key.insert,
            'Key.menu': pynput.keyboard.Key.menu,
            'Key.num_lock': pynput.keyboard.Key.num_lock,
            'Key.pause': pynput.keyboard.Key.pause,
            'Key.print_screen': pynput.keyboard.Key.print_screen,
            'Key.scroll_lock': pynput.keyboard.Key.scroll_lock
        }
    
        def set_mouse_coordinates(self, x, y):
            # 设置鼠标坐标
            self.mouse.position = (x, y)
    
        def mouse_move_scroll(self, x, y):
            # 鼠标滚轮
            self.mouse.scroll(x, y)              # 滚动鼠标
    
        def mouse_move(self, x, y):
            # 监听鼠标移动
            happen_time = time.time()
            self.time_order.append(happen_time)
            time_index = self.time_order.index(happen_time)
            if time_index != 0:
                sleep_time = happen_time - self.time_order[time_index - 1]
            else:
                sleep_time = 0
            self.mouse_keyboard_move.append((x, y, sleep_time))
    
        def mouse_right_click(self, x, y, key, state):
            happen_time = time.time()
            self.time_order.append(happen_time)
            time_index = self.time_order.index(happen_time)
            if time_index != 0:
                sleep_time = happen_time - self.time_order[time_index - 1]
            else:
                sleep_time = 0
            self.mouse_keyboard_move.append((x, y, key, state, sleep_time))
    
        def mouse_click(self, x, y, button, pressed):
            # 监听鼠标点击
            if pressed:
                if button == pynput.mouse.Button.left:
                    self.mouse_right_click(x, y, 'left', 'pressed')
                elif button == pynput.mouse.Button.middle:
                    self.mouse_right_click(x, y, 'middle', 'pressed')
                elif button == pynput.mouse.Button.right:
                    self.mouse_right_click(x, y, 'right', 'pressed')
            else:
                if button == pynput.mouse.Button.left:
                    self.mouse_right_click(x, y, 'left', 'release')
                elif button == pynput.mouse.Button.middle:
                    self.mouse_right_click(x, y, 'middle', 'release')
                elif button == pynput.mouse.Button.right:
                    self.mouse_right_click(x, y, 'right', 'release')
    
        def mouse_scroll(self, x, y, dx, dy):
            # 监听鼠标滚轮
            happen_time = time.time()
            self.time_order.append(happen_time)
            time_index = self.time_order.index(happen_time)
            if time_index != 0:
                sleep_time = happen_time - self.time_order[time_index - 1]
            else:
                sleep_time = 0
            self.mouse_keyboard_move.append((x, y, 'middle', dx, dy * 50, sleep_time))
    
        def listener_mouse(self):
            # 监听鼠标、键盘
            self.mouse_listener = pynput.mouse.Listener(on_move=self.mouse_move, on_click=self.mouse_click,
                                                        on_scroll=self.mouse_scroll)
            self.keyboard_listener = pynput.keyboard.Listener(on_press=self.keyboard_input_press,
                                                              on_release=self.keyboard_input_release)
            self.mouse_listener.start()
            self.keyboard_listener.start()
            self.mouse_listener.join()
            self.keyboard_listener.join()
            return
    
        def keyboard_input_press(self, key):  # 按键按下
            happen_time = time.time()
            self.time_order.append(happen_time)
            time_index = self.time_order.index(happen_time)
            if time_index != 0:
                sleep_time = happen_time - self.time_order[time_index - 1]
            else:
                sleep_time = 0
            self.mouse_keyboard_move.append((str(key), True, sleep_time))
    
        def keyboard_input_release(self, key):  # 按键释放
            happen_time = time.time()
            self.time_order.append(happen_time)
            time_index = self.time_order.index(happen_time)
            if time_index != 0:
                sleep_time = happen_time - self.time_order[time_index - 1]
            else:
                sleep_time = 0
            self.mouse_keyboard_move.append((str(key), False, sleep_time))
            if key == pynput.keyboard.Key.esc:
                self.stop_listener_keyoard()
                with open('aa.txt', "w") as f:
                    for i in self.mouse_keyboard_move:
                        f.write(str(i) + '
    ')
                    f.close()
    
        def stop_listener_keyoard(self):
            pynput.keyboard.Listener.stop(self.keyboard_listener)
            pynput.mouse.Listener.stop(self.mouse_listener)
    
        def click_mouse_press(self, x, y, keys):
            self.set_mouse_coordinates(x, y)
            if keys == 'left':
                self.mouse.press(pynput.mouse.Button.left)
            elif keys == 'right':
                self.mouse.press(pynput.mouse.Button.right)
            elif keys == 'middle':
                self.mouse.press(pynput.mouse.Button.middle)
    
        def click_mouse_release(self, x, y, keys):
            self.set_mouse_coordinates(x, y)
            if keys == 'left':
                self.mouse.release(pynput.mouse.Button.left)
            elif keys == 'right':
                self.mouse.release(pynput.mouse.Button.right)
            elif keys == 'middle':
                self.mouse.release(pynput.mouse.Button.middle)
    
        def playback(self):
            with open('aa.txt', "r") as f:
                for line in f.readlines():
                    double_list = re.findall(r'[A-Za-z0-9._/;[]\=-\`]+', line)
                    print(double_list)
                    if 'pressed' in line:
                        time.sleep(float(double_list[4]))
                        self.click_mouse_press(int(double_list[0]), int(double_list[1]), double_list[2])
                    elif 'release' in line:
                        time.sleep(float(double_list[4]))
                        self.click_mouse_release(int(double_list[0]), int(double_list[1]), double_list[2])
                    elif 'middle' in line:
                        time.sleep(float(double_list[5]))
                        self.mouse_move_scroll(int(double_list[3]), int(double_list[4]))
                    elif 'Key' in line:
                        if 'Key.esc' in line:
                            pass
                        else:
                            if 'True' in line:
                                self.keyboard_press_key(self.default_keys[double_list[0]])
                            if 'False' in line:
                                self.keyboard_release_key(self.default_keys[double_list[0]])
                    else:
                        if 'True' in line:
                            self.keyboard_press_key(double_list[0])
                        elif 'False' in line:
                            self.keyboard_release_key(double_list[0])
                        else:
                            time.sleep(0.005)
                            self.set_mouse_coordinates(int(double_list[0]), int(double_list[1]))
    
        def keyboard_press_key(self, word):
            self.keyboard.press(word)  # 按下
    
        def keyboard_release_key(self, word):
            self.keyboard.release(word)  # 松开
    
        def listener_all(self):
            thread_obj = threading.Thread(target=A.listener_mouse)
            thread_obj.start()
    
    
    if __name__ == '__main__':
        A = ControlMouseKeyboard()
        # A.listener_all()
        # A.playback()

    今天状态不怎么好,直接上代码了。有兴趣的可以了解下

  • 相关阅读:
    完整约束二(学习笔记)
    完整约束一(学习笔记)
    表的创建与管理二(学习笔记)
    闪回技术(学习笔记)
    表的创建与管理一(学习笔记)
    借助AWR报告分析解决oracleCPU过高的问题(转)
    数据的集合运算(学习笔记)
    SQL:1999基本语法(学习笔记)
    表的连接操作(学习笔记)
    多表查询(学习笔记)
  • 原文地址:https://www.cnblogs.com/gexbooks/p/12788628.html
Copyright © 2020-2023  润新知