#!/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 = {}
Python小工具:键盘鼠标录制&一键生成代码
于 2022-01-17 19:27:56 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)