admin 管理员组

文章数量: 1184232

#!/usr/bin/python
# -*- coding:utf-8 -*-

import re
import time
import pprint
import tkinter
import threading
import traceback
from pynput.mouse import Listener as mlistener
from pynput.mouse import Controller as mcontroller
from pynput.keyboard import Key
from pynput.keyboard import Listener as klistener
from pynput.keyboard import Controller as kcontroller

SHIFT_DIFF = False

class recorder:
    def __init__(
            self, 
            start_record_key  = 'f7', 
            stop_record_key   = 'f7', 
            start_repeat_key  = 'f8',
            stop_repeat_key   = 'f8',
            start_repeats_key = 'f9',
            stop_repeats_key  = 'f9',
            close_key         = 'esc',
            debug             = True,
            debug_info        = False,
            outclass          = None,
        ):
        self.lock = threading.Lock()
        self.record = []
        self.debug = debug
        self.debug_info = debug_info
        self.start_record_key = start_record_key
        self.stop_record_key = stop_record_key
        self.start_repeat_key = start_repeat_key
        self.stop_repeat_key = stop_repeat_key
        self.start_repeats_key = start_repeats_key
        self.stop_repeats_key = stop_repeats_key
        self.close_key = close_key
        self.record_status = 'stop' # only [start or stop]
        self.repeat_status = 'stop' # only [start or stop]
        self.unrecord_key = [
            self.start_record_key,
            self.stop_record_key,
            self.start_repeat_key,
            self.stop_repeat_key,
            self.start_repeats_key,
            self.stop_repeats_key,
            self.close_key,
        ]
        self.outclass = outclass
        self.key_hook = getattr(self.outclass, 'key_hook', None)
        if self.key_hook:
            self.unrecord_key.extend(list(self.key_hook))

        self.keyboard_listen_thread = None
        self.mouse_listen_thread = None
        self.main_keybord_thread = None
        self.speed = 1.0

    def safe_add_action(self, msg):
        with self.lock: self.record.append(msg)
        if self.debug_info:
            print('{} {} {}'.format(msg['type'], msg['action'], msg['time']))
            if msg['type'] == 'mouse':
                if msg['action'] == 'scroll':
                    print('    scroll:{}'.format((msg['x'], msg['y'], msg['dx'], msg['dy'])))
                else:
                    print('    xy:{}'.format((msg['x'], msg['y'])))
            if msg['type'] == 'keyboard':
                print('    key:{}'.format(msg['key']))

    def on_move(self, x, y):
        msg = {}
        msg['type'] = 'mouse'
        msg['action'] = 'move'
        msg['time'] = time.time()
        msg['x'], msg['y'] = x, y
        self.safe_add_action(msg)

    def on_click(self, x, y, button, pressed):
        msg = {}
        msg['type'] = 'mouse'
        msg['action'] = 'press' if pressed else 'release'
        msg['time'] = time.time()
        msg['x'], msg['y'] = x, y
        msg['button'] = button
        self.safe_add_action(msg)

    def on_scroll(self, x, y, dx, dy):
        msg = {}
        msg['type

本文标签: 一键 小工具 键盘鼠标 代码 python