鼠标手辅助器

鼠标发生移动后 ,静止在某位置指定时间后即可触发点击事件
支持多种点击事件,支持快捷键触发,支持自定义配置

有其他更好的思路 ,支持有偿定制,留言留下联系方式,看到会加你

# !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: test.py
@time: 2024/4/11 0:04
@desc:"""
import pyautogui
import keyboard
import time
from threading import Thread
import atexitclass MouseClick(object):""""""def __init__(self,time_click_interval):atexit.register(self.exit_handler)# 位置收集开关self.flag_open_close = True# 点击间隔self.time_click_interval = time_click_interval# 点击模式self.click_mode = 1# 此处静止 点击过self.forbidden = Falseself.thread = Thread(target=self.monitor_keyboard)self.thread.start()def exit_handler(self):"""程序退出自动执行:return:"""input("\n\n\n程序终止,回车退出")def monitor_keyboard(self):""":return:"""keyboard.on_press(self.on_combination_pressed_click)keyboard.on_press(self.on_combination_pressed_doubleClick)keyboard.on_press(self.on_combination_pressed_tripleClick)keyboard.on_press(self.on_combination_pressed_down)keyboard.on_press(self.on_combination_pressed_pause)keyboard.on_press(self.on_combination_pressed_click_right)keyboard.wait('esc')def monitor_mouse_move(self, x, y):""":param x::param y::return:"""if self.flag_open_close:if self.click_mode == 1:pyautogui.click(x, y)print(f"单击:x:{x}, y:{y}")elif self.click_mode == 2:pyautogui.doubleClick(x, y)print(f"双击:x:{x}, y:{y}")elif self.click_mode == 3:pyautogui.tripleClick(x, y)print(f"三击:x:{x}, y:{y}")elif self.click_mode == 4:pyautogui.rightClick(x, y)print(f"右键单击:x:{x}, y:{y}")def on_combination_pressed_pause(self,event):"""单击:param event::return:"""if keyboard.is_pressed('ctrl') and keyboard.is_pressed('`'):if self.flag_open_close:self.flag_open_close = Falseprint("【暂停】:ctrl+`")else:self.flag_open_close = Trueprint("【开启】:ctrl+`")def on_combination_pressed_click(self,event):"""单击:param event::return:"""if keyboard.is_pressed('ctrl') and keyboard.is_pressed('shift') and keyboard.is_pressed('1'):self.click_mode = 1print("【单击模式】:ctrl+shift+1")def on_combination_pressed_click_right(self,event):"""单击:param event::return:"""if keyboard.is_pressed('tab'):self.click_mode = 4print("【右键单击模式】:tab")def on_combination_pressed_doubleClick(self,event):"""双击:param event::return:"""if keyboard.is_pressed('ctrl') and keyboard.is_pressed('shift') and keyboard.is_pressed('2'):self.click_mode = 2print("【双击模式】:ctrl+shift+2")def on_combination_pressed_tripleClick(self,event):"""三击:param event::return:"""if keyboard.is_pressed('ctrl') and keyboard.is_pressed('shift') and keyboard.is_pressed('3'):self.click_mode = 3print("【三击模式】:ctrl+shift+3")def on_combination_pressed_down(self,event):"""长按 可拖动窗体:param event::return:"""if keyboard.is_pressed('alt'):pyautogui.mouseDown()print("【左键长按模式】:alt")def process(self):""":return:"""print("鼠标手辅助器 启动")print("点击间隔:",self.time_click_interval )prev_x, prev_y = pyautogui.position()while True:try:current_x, current_y = pyautogui.position()if current_x != prev_x or current_y != prev_y:prev_x, prev_y = current_x, current_yelse:start_time = time.time()while True:new_x, new_y = pyautogui.position()if new_x != current_x or new_y != current_y:self.forbidden = Falsebreakif time.time() - start_time >= self.time_click_interval:if not self.forbidden:self.monitor_mouse_move(new_x, new_y)self.forbidden = Truebreakif keyboard.is_pressed("esc"):print("【退出】ESC")breakexcept Exception as e:print("【错误】:请勿将鼠标移动到边缘区域")if __name__ == '__main__':time_click_interval = input("请输入点击间隔时间(单位:秒):")# time_click_interval = 3mc = MouseClick(float(time_click_interval))mc.process()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务网关GateWay基础

1. 网关基础介绍1.1 网关是什么1.2 为啥要用网关1.3 常见的网关组件NginxNetflix ZuulSpring Cloud GatewayKongAPISIX综合比较 2. gateWay的使用2.1 springCloud整合gateway2.2 GateWay的相关用法2.3 GateWay路由使用示例基本用法转发/重定向负载请求动态路由 2.5 断言(Predic…

SourceInsight中文编码格式乱码

参考文章:https://blog.csdn.net/m0_53754590/article/details/135594860 file–>Reload as Encoding —>选择编码格式UTF-8,或者GB2312;哪个显示不乱码设置那个; 我这里选择GB2312

DAY32|1005.K次取反后最大化的数组和,55. 跳跃游戏,45.跳跃游戏II

122.买卖股票的最佳时机II 文字讲解:买卖股票的最佳时机II 状态:这题ok 思路: 代码: class Solution {public int maxProfit(int[] prices) {if (prices.length 0 || prices.length 1) {return 0;}int maxProfit 0;for (int …

线程池 ThreadPoolExecutor 参数详解

一、引言 提到 Java 线程池,就不得不说 ThreadPoolExecutor,它是 Java 并发包 java.util.concurrent 中的一个类,提供一个高效、稳定、灵活的线程池实现,用于实现多线程并发执行任务,提高应用程序的执行效率。 在《任…

4-22 算法刷题思路总结

leetcode46 全排列 使用回溯思想 for循环遍历每次选取的数 递归遍历下一次选取的数 选取完回溯 将暂时保存的path删除尾部 将used重置为0 class Solution {List<List<Integer>> res;List<Integer> path;public List<List<Integer>> permute(in…

【ARM 裸机】C 语言 led 驱动

前面刚学习了汇编 led 驱动的编写和验证&#xff0c;现在开始就要进入 C 语言 led 驱动编写与验证了 ! 1、C 语言运行环境构建 1.1、设置处理器模式 使 6ULL 处于 SVC 模式下&#xff0c;之前已经提到了处理器的九种模式&#xff0c;参考&#xff1a;【ARM 裸机】汇编 led 驱…

Java中String为什么不可变,这样有什么好处

简介 在Java中&#xff0c;字符串&#xff08;String&#xff09;是不可变的&#xff0c;这意味着一旦创建了一个字符串对象&#xff0c;它的内容就不能再被修改。这个设计决策是由Java的创始人詹姆斯高斯林&#xff08;James Gosling&#xff09;做出的&#xff0c;主要是出于…

Docker 的基本管理

一. 云的相关知识 1. 关于云 云端服务器都有哪些提供商&#xff1a; 国内&#xff1a; 阿里云&#xff08;Alibaba Cloud&#xff09;&#xff1a; 提供ECS&#xff08;Elastic Compute Service&#xff09;弹性计算服务&#xff0c;包括通用型、计算型、内存型等多种实例…

模拟电子技术实验(九)

单选题 1. 设计性实验完整准确的定义是什么&#xff1f; A. 设计性实验是根据电路结构和元件参数测试验证系统参数。 B. 设计性实验是根据系统参数确定电路结构和元件参数。 C. 设计性实验是根据系统参数 、电路原理和验证积累确定符合系统参数的 电路结构和元件参数。 D. …

根据图片模板动态生成图片(Java)

根据图片模板生成图片 背景流程简介代码实现 背景 根据提供的证书模板生成对应证书&#xff0c;证书内容有&#xff0c;姓名&#xff0c;身份证号&#xff0c;证书名称&#xff0c;证书编号&#xff0c;发证日期 根据用户达成的条件自动生成证书图片。 证书模板如下&#xff…

【51单片机项目】基于51单片机自制多功能小键盘/模拟USB键盘【附源码】(STC89C52RC+CH9328)

目录 一、效果展示 二、创作灵感 三、硬件电路 注意事项 工作原理 四、源码 main.c 五、附录 CH9328工作原理 CH9328的模式选择 ​编辑 全键盘键码值表 参考链接 一、效果展示 该小键盘具有三种功能&#xff1a; 1、自动输入开机密码 2、每隔一段时间自动按下ct…

Docker容器使用

文章目录 Docker 客户端容器相关命令获取镜像启动容器启动已停止运行的容器后台运行停止一个容器进入容器attach 命令exec 命令 导出和导入容器导出容器导入容器快照 删除容器web应用例子运行一个 web 应用查看 WEB 应用容器查看 WEB 应用程序日志查看WEB应用程序容器的进程检查…

MongoDB 与MySQL的区别?优势?

MongoDB 与 MySQL 是两种不同类型的数据库管理系统&#xff0c;它们各自有独特的数据模型、查询语言、扩展方式以及适用场景。以下是它们的主要区别与各自的优势&#xff1a; 区别&#xff1a; 数据模型&#xff1a; MySQL&#xff1a;基于关系模型&#xff0c;使用表格&#…

多模态大模型训练数据量以及训练方式

多模态大模型系列&#xff1a;LLaVALLaVA1.5/1.6LLaVA-Med - 知乎就在前两天LLaVA 1.6发布了&#xff0c;带来了更大的分辨率&#xff0c;更强的LLM&#xff0c;在最后补充了这一部分的介绍。 LLaVA repo&#xff1a;https://github.com/haotian-liu/LLaVA/ LLaVA 1.0&#xff…

《C语言深度解剖》(9):深度剖析数据在内存中的存储

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&am…

操作系统安全:Windows与Linux的安全标识符,身份鉴别和访问控制

「作者简介」&#xff1a;2022年北京冬奥会中国代表队&#xff0c;CSDN Top100&#xff0c;学习更多干货&#xff0c;请关注专栏《网络安全自学教程》 操作系统有4个安全目标&#xff0c;也就是说想要保证操作系统的安全&#xff0c;就必须实现这4个需求&#xff1a; 标识系统…

【Redis(9)】Spring Boot整合Redis,实现分布式锁,保证分布式系统中节点操作一致性

在上一篇系列文章中&#xff0c;咱们利用Redis解决了缓存穿透、缓存击穿、缓存雪崩等缓存问题&#xff0c;Redis除了解决缓存问题&#xff0c;还能干什么呢&#xff1f;这是今天咱们要接着探讨的问题。 在分布式系统中&#xff0c;为了保证在多个节点间操作的一致性&#xff0…

系统安全与应用(1)

目录 1、账号安全管理 &#xff08;1&#xff09;禁止程序用户登录 &#xff08;2&#xff09;锁定禁用长期不使用的用户 &#xff08;3&#xff09;删除无用的账号 &#xff08;4&#xff09;禁止账号和密码的修改 2、密码安全管理 设置密码有效期 1&#xff09;针对已…

Centos7 tcpdump -w 时遇到 Permission denied

一、问题 使用tcpdump抓包并写入文件时出现 Permission denied&#xff0c;权限不足。 [rootstorm03 tcpdumpTest]# tcpdump -i em4 udp and host 225.1.2.5 and port 10111 -G 60 -w %Y_%m%d_%H%M_%S.pcap tcpdump: listening on em4, link-type EN10MB (Ethernet), capture…

oracle之--动态sql(execute immediate ‘ ‘)

动态sql--execute immediate 原因&#xff1a;ddl语句&#xff0c;truncate语句 不能直接使用&#xff0c;需要封装起来 --动态sql--execute immediate 因为ddl&#xff0c;truncate 不能直接使用&#xff0c;需要封装起来 --1.TRUNCATE table declare BEGIN --truncate…