当前位置: 首页 > news >正文

python——pynput

pynput 是一个 Python 库,用于控制和监听键盘与鼠标输入。它在 Windows、macOS 和 Linux 上都可以工作,为用户提供了一个跨平台的输入事件处理方式。pynput 包含两个主要模块:keyboardmouse,分别用于处理键盘和鼠标事件。

主要API介绍:

键盘模块(keyboard
  • KeyboardListener:监听键盘事件。
  • Controller:控制键盘输入。
鼠标模块(mouse
  • MouseListener:监听鼠标事件。
  • Controller:控制鼠标移动和点击。

常用API函数:

键盘API
  • keyboard.Controller.press(key): 按下键。
  • keyboard.Controller.release(key): 释放键。
  • keyboard.Controller.type(string): 输入字符串。
  • keyboard.Listener(on_press=None, on_release=None): 监听键盘按键事件。
鼠标API
  • mouse.Controller.position: 获取当前鼠标位置。
  • mouse.Controller.move(x, y): 移动鼠标。
  • mouse.Controller.press(button): 按下鼠标按钮。
  • mouse.Controller.release(button): 释放鼠标按钮。
  • mouse.Controller.click(button, n): 单击鼠标按钮n次。
  • mouse.Listener(on_click=None, on_scroll=None, on_move=None): 监听鼠标事件。

具体示例:

键盘示例
from pynput.keyboard import Key, Listener, Controller# 创建键盘控制器
keyboard = Controller()def on_press(key):try:print('Alphanumeric key {0} pressed'.format(key.char))except AttributeError:print('Special key {0} pressed'.format(key))def on_release(key):print('{0} released'.format(key))if key == Key.esc:# Stop listenerreturn False# Collect events until released
with Listener(on_press=on_press, on_release=on_release) as listener:listener.join()# 模拟键盘输入
keyboard.type("Hello World!")
keyboard.press(Key.enter)
keyboard.release(Key.enter)
鼠标示例
from pynput.mouse import Button, Controller, Listener# 创建鼠标控制器
mouse = Controller()def on_move(x, y):print('Pointer moved to {0}'.format((x, y)))def on_click(x, y, button, pressed):if pressed:print('Mouse clicked at ({0}, {1}) with {2}'.format(x, y, button))def on_scroll(x, y, dx, dy):print('Mouse scrolled at ({0}, {1})({2}, {3})'.format(x, y, dx, dy))# Collect events until released
with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:listener.join()# 模拟鼠标移动和点击
mouse.position = (100, 200)
mouse.click(Button.left, 1)

注意事项:

  • 在使用 pynput 监听键盘和鼠标事件时,程序会阻塞直到监听结束。
  • pynput 可能需要管理员权限才能运行,特别是在 Windows 上。
  • pynput 的事件监听器可以设置为非阻塞模式,但默认是阻塞的。

以上就是 pynput 的基础使用方法和一些常见API的介绍。

相关文章:

python——pynput

pynput 是一个 Python 库,用于控制和监听键盘与鼠标输入。它在 Windows、macOS 和 Linux 上都可以工作,为用户提供了一个跨平台的输入事件处理方式。pynput 包含两个主要模块:keyboard 和 mouse,分别用于处理键盘和鼠标事件。 主…...

[用AI日进斗金系列]用码上飞在企微接单开发一个项目管理系统!

今天是【日进斗金】系列的第二期文章。 先给不了解这个系列的朋友们介绍一下,在这个系列的文章中,我们将会在企微的工作台的“需求发布页面”中寻找有软件开发需求的用户 并通过自研的L4级自动化智能软件开发平台「码上飞CodeFlying」让AI生成应用以解…...

《JavaEE篇》--多线程(2)

《JavaEE篇》--多线程(1) 线程安全 线程不安全 我们先来观察一个线程不安全的案例: public class Demo {private static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() -> {//让count自增5W次…...

防爆智能手机如何助力电气行业保驾护航?

在电气行业的智能化转型浪潮中,防爆智能手机以其强大的数据处理能力、实时通讯功能及高度集成的安全特性,正成为保障电力网络稳定运行、预防安全隐患的得力助手。 防爆智能手机在电气行业中发挥着重要的保驾护航作用,主要体现在以下几个方面&…...

24.7.24数组|那几个课后得做的题

1、对长整形数据进行反转 2、对字符串进行反转 一、题目地址: 1. 实现一个函数atoi,使其能够将字符串转换整数 (Leetcode 8/中等). - 力扣(LeetCode) 2. 颠倒给定的32位无符号整数的二进制位(Leetcode 190/简单&…...

03Spring底层架构核心概念解析

为了感谢罕哥对我工作的帮助,特此记录下学习过程,期待成为和罕哥一样优秀的人 时间:2024.7.13 内容:spring源码课程3学习记录 一、BeanDefinition BeanDefinition表示Bean的定义,BeanDefinition中存在很多属性用来…...

Vue学习---vue 防抖处理函数,是处理什么场景

Vue防抖处理函数是用来处理在快速连续操作中,只执行最后一次操作的情况。 例如,在输入框输入时,我们可能希望只在用户完成输入后进行处理,而不是在每次键入时都处理。(n秒后触发一次) 以下是一个简单的Vue防抖处理函数的例子&am…...

力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组)

力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组) 文章目录 力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组)一、24. 两两交换链表中的节点二、139. 单词拆分三、560. 和为 K 的子数组四、209. 长…...

2024在线PHP加密网站源码

源码介绍 2024在线PHP加密网站源码 更新内容: 1.加强算法强度 2.优化模版UI 加密后的代码示例截图 源码下载 https://download.csdn.net/download/huayula/89568335...

网络驱动移植(RTL8189)

1、把驱动放到内核文件夹中(linux/drivers/net/wireless),对应的驱动可以在网上下载 2、修改该目录下的Kconfig和Makefile文件 3、配置内核(make menuconfig) 配置支持IEEE 802.11,选中8189模块&#xff0…...

go语言中map学习

在 Go 语言中,map 是一种引用类型,这意味着它有以下特点: 内存结构: map 实际上是一个指向底层数据结构的指针。这个底层数据结构包含键值对的集合。 赋值与传参: 当你给一个变量赋值一个 map 时,或者将 map 作为函数参数传递时,实际上传递的是指针,而不是完整的数据结构副本。…...

【C#】| 与 及其相关例子

按位或(|) 按位或运算符 | 对两个数的每一位进行比较,如果两个数中至少有一个为 1,则结果位为 1;否则,结果位为0。 1010 (10 in decimal) | 1100 (12 in decimal) ------1110 (14 in decimal) 力扣相关…...

【数据结构 | 哈希表】一文了解哈希表(散列表)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

go创建对象数组

在 Go 语言中,可以使用字面量的方式创建结构体对象数组。以下是一个示例代码,展示了如何使用字面量创建一个结构体对象数组: package mainimport "fmt"// 定义一个结构体 type Person struct {Name stringAge intAddress Address…...

Golang | Leetcode Golang题解之第278题第一个错误的版本

题目: 题解: func firstBadVersion(n int) int {return sort.Search(n, func(version int) bool { return isBadVersion(version) }) }...

自动化网络爬虫:如何它成为提升数据收集效率的终极武器?

摘要 本文深入探讨了自动化网络爬虫技术如何彻底改变数据收集领域的游戏规则,揭示其作为提升工作效率的终极工具的奥秘。通过分析其工作原理、优势及实际应用案例,我们向读者展示了如何利用这一强大工具加速业务决策过程,同时保持数据收集的…...

软件测试---测试需求分析

课程目标 什么是软件测试需求 软件测试需求的必要性 如何对软件测试需求进行分析(重点) 课程补充 灰度测试(基于功能):先发布部分功能,然后看用户的反馈,再去发布另外一部分的功能更新。 A/B测…...

Android11 framework 禁止三方应用通过广播开机自启动-独立方案

之前的文章Android11 framework 禁止三方应用开机自启动记录了我调试Android11应用自启动限制的全过程,但是之前的方案感觉还能再研究,所以有了这一篇文章。 这一篇文章主要探讨Android11上,以广播来进行自启动的应用的限制,极个别…...

Node:解决Error: error:0308010C:digital envelope routines::unsupported的解决方法

问题描述 在使用vuepress搭建博客的时候,运行项目发现报错了,检查了node的版本是18,之前用的是16或14的版本,现在报:Error: error:0308010C:digital envelope routines::unsupported错误。 查找了一些资料&#xff0…...

spring boot(学习笔记第十四课)

spring boot(学习笔记第十四课) Spring Security的密码加密,基于数据库认证 学习内容: Spring Security的密码加密基于数据库认证 1. Spring Security的密码加密 如果用户的密码保存在数据库中是以明文保存,对于公司的安全将是灾难性的&…...

UE4SS虚幻引擎Mod开发工具:从技术痛点到生态共建的完整指南

UE4SS虚幻引擎Mod开发工具:从技术痛点到生态共建的完整指南 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE…...

卡尔曼滤波+LQR实战:用Python手写一个LQG控制器(附Jupyter Notebook)

卡尔曼滤波LQR实战:用Python手写一个LQG控制器(附Jupyter Notebook) 在机器人控制和自动化系统设计中,LQG(Linear Quadratic Gaussian)控制是一种经典且强大的控制策略。它巧妙地将卡尔曼滤波的状态估计能力…...

HunyuanVideo-Foley效果展示:火车进站音效+月台场景视频生成实录

HunyuanVideo-Foley效果展示:火车进站音效月台场景视频生成实录 1. 效果展示开场 想象一下这样的场景:一列蒸汽火车缓缓驶入月台,伴随着汽笛声、铁轨摩擦声和人群嘈杂声。现在,通过HunyuanVideo-Foley技术,我们可以一…...

OpenClaw安全配置要点:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF本地运行权限管理

OpenClaw安全配置要点:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF本地运行权限管理 1. 为什么需要特别关注OpenClaw的安全配置? 第一次在本地部署OpenClaw时,我犯了一个新手常见的错误——直接使用默认配置启动服务。结果第二天…...

AI 开发实战:给团队定一套能落地的 AI 使用规范

AI 开发实战:给团队定一套能落地的 AI 使用规范 一、为什么团队用了 AI 反而容易更乱? 因为每个人都在各自试: 有人用来写代码有人用来写文档有人用来查错有人输出直接复制上线 如果没有基本规范,效率可能提升了,但风险…...

终极指南:AutoDock Vina如何轻松处理含金属元素的分子对接难题

终极指南:AutoDock Vina如何轻松处理含金属元素的分子对接难题 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina 你是否曾在使用AutoDock Vina进行分子对接时,遇到"Atom type Pd i…...

开发者社区生存手册:从潜水到活跃贡献者的5个关键步骤

开发者社区生存手册:从潜水到活跃贡献者的5个关键步骤 在数字时代的代码丛林里,开发者社区如同一个个闪烁着智慧火光的营地。你可能已经加入了几十个Slack频道,关注了无数技术大牛的Twitter,在GitHub上star了上百个仓库&#xff0…...

Stable Diffusion XL 1.0开源大模型教程:灵感画廊app.py核心逻辑解读

Stable Diffusion XL 1.0开源大模型教程:灵感画廊app.py核心逻辑解读 “见微知著,凝光成影。将梦境的碎片,凝结为永恒的视觉诗篇。” 如果你对AI绘画感兴趣,一定听说过Stable Diffusion XL 1.0这个强大的开源模型。但面对复杂的参…...

Java中灵活转换日期时间字符串格式的教程

本教程详细介绍了如何使用Java Java8及更高版本.time API,准确地将各种不同格式的日期时间字符串转换为统一”DD.MM.YYYY“格式。本文强调了现代日期时间API的优势,分析了Datetimeformater模式符号的正确使用,并提供了完整的示例代码和最佳实…...

别再只用Cesium了!Three.js + Cesium 1.8 整合实战:从零搞定天地图中文底图与BIM模型加载

Three.js与Cesium 1.8深度整合实战:天地图中文底图与BIM模型加载全解析 当我们需要在三维地理信息系统中同时展示宏观地理环境和精细建筑内部结构时,单独使用Cesium或Three.js往往难以完美兼顾。本文将带你完成一次技术栈的深度整合,解决国内…...