一、背景

有时可以通过程序来监控键盘或鼠标行为来触发鼠标的点击或者键盘的输入,类似于按键精灵,而Python是门简洁易实现的语言,同时PyUserInput库简单封装了底层的调用。

整篇文章以Windows为例。

二、PyUserInput简介

如果是Windows,底层依赖pywin32和pyHook。

三、环境流程Step.2 安装PyUserInput依赖环境:pywin32pip install pywin32,作用是执行键盘和鼠标操作

Step.3 安装PyUserInput依赖环境:pyHook然后pip install pyHook-1.5.1-cp27-none-win32.whl安装

Step.4 安装PyUserInputpip install PyUserInput

四、实战

假如想要实现鼠标左键双击时根据所在的不同区域实现不同的自动按键。

思路:监控鼠标事件,判断按键类型,如果是判断双击保留上一次的点击时间,自动按键最好新建线程,不然会卡在主线程。

#coding=utf-8

from pymouse import PyMouse, PyMouseEvent

from pykeyboard import PyKeyboard, PyKeyboardEvent

import time, threading

import math

## 初始化参数区(全局变量)

stop = False

interval = 1

is_running = False

times = 10

keys_mapping = {

0 : ['1', '2', '3', '4'],

10 : ['a', 'b'],

1 : ['c', 'd'],

11 : ['e', 'f'],

} # 左上:0 右上:10 左下:1 右下:11

mouse = PyMouse()

keyboard = PyKeyboard()

x_dim, y_dim = mouse.screen_size()

## 循环按键

def loop(key):

global stop

global is_running

global keyboard

is_running = True

for i in range(times):

for k in keys_mapping[key]:

if stop:

print('stop')

is_running = False

return

print(key, k)

#keyboard.tap_key(k)

time.sleep(interval)

is_running = False

## 监控鼠标

class Clickonacci(PyMouseEvent):

last_ts = None

last_x = None

last_y = None

last_button = None

def __init__(self):

PyMouseEvent.__init__(self)

## hori:1-上,-1-下

def scroll(self, x, y, hori, press):

print(x, y, hori)

def click(self, x, y, button, press):

if press:

return

global stop

global x_dim

global y_dim

ts = time.time()

# button:1-左键,2-右键,3-中键

# press: True-按下,False-释放

if button == 1:

## 判断双击

if self.last_ts and ts-self.last_ts<0.3 and self.last_button==button:

print('double click')

if is_running == True:

stop = True

time.sleep(interval)

stop = False

## 计算类型

key = 10*math.floor(2.0*x/x_dim) + math.floor(2.0*y/y_dim)

t = threading.Thread(target=loop, name='LoopThread', args=(key,))

t.start()

self.last_ts = ts

self.last_x = x

self.last_y = y

self.last_button = button

else:

stop = True

if __name__ == '__main__':

#main()

C = Clickonacci()

C.run()

python模拟鼠标点击和键盘输入的操作_Python模拟鼠标点击及键盘输入(PyUserInput)...相关推荐

  1. python模拟鼠标点击和键盘输入的操作_python模拟鼠标点击和键盘输入的操作

    所有代码都是网上百度出来的,通过个人实践找到适合自己的. 采用的python 库是 pymouse.pykeyboard 安装时直接pip安装的,pip install PyUserInput 安装不 ...

  2. 2020制冷与空调设备运行操作模拟考试题库及制冷与空调设备运行操作复审模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2020制冷与空调设备运行操作模拟考试题库及制冷与空调设备运行操作复审模拟考试,包含制冷与空调设备运行操作模拟考试题库答案解析及制冷与空调设备运行操作复审 ...

  3. 2020年R1快开门式压力容器操作复审模拟考试及R1快开门式压力容器操作作业模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2020R1快开门式压力容器操作复审模拟考试及R1快开门式压力容器操作作业模拟考试,包含R1快开门式压力容器操作复审模拟考试答案解析及R1快开门式压力容器 ...

  4. python基本输入与格式化_Python导学基础(三)输入、格式化输出、基本运算符

    一:输入 1.python3中的input inp_username=input("请输入您的密码:") # "18" print(inp_username) ...

  5. python对list中的每个元素进行某种操作_python对list中的每个元素进行某种操作的方法...

    python对list中的每个元素进行某种操作的方法 如下所示: ''' 对列表中的每个元素进行某种操作 ''' def add(c): return c**2 l = [1,2,3] d1 = ma ...

  6. python 模拟键盘输入组合键_Python 模拟键盘输入

    Python 模拟键盘输入,留着备用. #coding=utf-8 import win32gui,win32api,win32con import time import threading def ...

  7. python如何在所有线程结束后执行最后操作_Python线程的生命周期

    在线程的生命周期中,从创建到执行以及最终终止,线程通常处于四种状态之一:开始态.可调度状态.阻塞态和终止态. 父线程和子线程 当一个新的进程或程序开始运行时,它将以一个线程开始,这个线程被称为主线程. ...

  8. c语言栈的实现以及操作_python模拟栈的操作实现非递归方式的快速排序算法

    本文首发地址: https://yishuihancheng.blog.csdn.net/article/details/76185032 欢迎关注我的博客[Together_CZ],我是沂水寒城! ...

  9. python连接linux后一步一步的操作_Python使用技巧

    导读 Python很酷. 真的很酷. 但是,我们中的很多人都是从不同的编程语言开始的,尽管我们确实很容易地掌握了Python,但是我们仍然不擅长以pythonic的方式做事. 本文介绍了我几年来学到的 ...

最新文章

  1. c语言中程序偏离,C语言中的指针加减偏移量
  2. 开发者和矿工合二为一将是比特币世界的灾难
  3. iphone分辨率_目前最值得入手的三款安卓机!流畅度堪比iPhone,用三五年不过时...
  4. 高质量c/c++编程(5)
  5. Spring Cloud Gateway 原生支持接口限流该怎么玩
  6. 网管日志-06.07.24
  7. 光电雷达智能跟踪平台
  8. 有关C#中的引用类型的内存问题
  9. eclipse合并svn分支方法
  10. win10出现的异常解决
  11. 高一计算机函数公式,高中全部函数公式大全
  12. 2021年全球起酥油收入大约4171.6百万美元,预计2028年达到5052.7百万美元,2022至2028期间,年复合增长率CAGR为 2.8%
  13. docker安装_Java EE,Docker和Maven(技术提示#89)
  14. Python ORM框架peewee
  15. 程序员如何动手打造属于自己的智能…
  16. AR技术与VR技术哪个更能代表未来?
  17. 蒙特卡洛方法的收敛性和误差
  18. 关于联想笔记本不能连接无线网(wifi),注销后重新登录才可以连接
  19. CTFSHOW 套娃shell
  20. html 音乐 QQ播放器 外链 代码 播放器 外链 代码

热门文章

  1. Linux鼠标滚轮不是滑动页面而是翻历史命令行
  2. pyqt5入门教程(三)
  3. 如何给一个空白磁盘安装操作系统
  4. Luogu P1654 OSU! | 期望
  5. nginx配置ssl双向证书
  6. MySql基础入门-mysql体系结构
  7. @JsonProperty的使用
  8. 关于对象、构造函数、原型、原型链、继承
  9. 网站的容错性设计原则
  10. iOS开发--使用OpenSSL生成私钥和公钥的方法