用Python pynput库捕捉每一次组合键的优雅舞步

news/2024/7/4 16:53:07/文章来源:https://www.cnblogs.com/bigleft/p/18278656

哈喽,大家好,我是木头左!

一、初识pynput:键盘与鼠标的监控利器

当谈论计算机交互时,键盘和鼠标无疑是最常用的设备。无论是编写代码、浏览网页还是玩游戏,都依赖于这些输入设备与机器沟通。但在一些特殊的场景中,可能需要知道用户具体按下了哪些键,甚至是以何种顺序、何种速度进行操作的。这时,pynput这个Python库就能大显身手了。
pynput是一个简单易用的Python库,它能够控制和监听键盘及鼠标的活动。通过pynput,可以检测到按键的按下与释放,甚至是鼠标的移动和点击。这为打开了一个全新的世界,让有能力去创造一些以前难以想象的应用。

二、深入pynput:如何安装和使用

安装pynput

要使用pynput,首先需要将其安装到你的Python环境中。可以通过pip包管理器来轻松完成这一任务:

pip install pynput

安装完成后,你就可以开始在你的项目中引入并使用pynput了。

基础使用教程

pynput提供了两种主要的监听器:KeyboardListenerMouseListener。它们分别用于监听键盘和鼠标的活动。

键盘监听器

要创建一个基本的键盘监听器,你可以这样做:

from pynput import keyboarddef on_press(key):print(f'{key} pressed')def on_release(key):print(f'{key} released')if str(key) == 'Key.esc':  # 如果按下的是ESC键,停止监听return Falselistener = keyboard.Listener(on_press=on_press, on_release=on_release)
listener.start()

这段代码会创建一个简单的监听器,它会在每次按键被按下或释放时打印出相应的消息。当ESC键被释放时,监听器将停止运行。

鼠标监听器

与键盘类似,你也可以创建一个鼠标监听器来追踪鼠标的活动:

from pynput import mousedef on_move(x, y):print(f'Mouse moved to ({x}, {y})')def on_click(x, y, button, pressed):if pressed:print('Mouse clicked')else:print('Mouse released')listener = mouse.Listener(on_move=on_move, on_click=on_click)
listener.start()

这段代码会跟踪鼠标的移动和点击事件,并在控制台上输出相关信息。

三、实战演练:记录组合键操作

现在已经了解了pynput的基本使用方法,接下来将进入更高级的话题:如何记录组合键操作。

设计思路

为了记录组合键操作,需要做两件事:

  • 检测多个键同时被按下的情况。
  • 记录下这些键以及它们的按下和释放时间。
    这要求的监听器不仅仅是简单地打印出按键信息,而是需要更加精细地处理这些事件。

实现代码

可以定义一个字典来存储当前被按下的键及其状态,然后在on_presson_release方法中更新这个字典。

from pynput import keyboard
import timecurrent_keys = {}def on_press(key):current_keys[str(key)] = time.time()print(f'{key} pressed at {current_keys[str(key)]}')def on_release(key):if key in current_keys:release_time = time.time()print(f'{key} released at {release_time}')del current_keys[str(key)]listener = keyboard.Listener(on_press=on_press, on_release=on_release)
listener.start()

在这个例子中,每当有键被按下或释放时,都会记录下当前的时间戳,并将其与对应的键一起存储在current_keys字典中。这样,就可以在任何时刻查看哪些键正在被按下,以及它们被按下的时间。

分析结果

通过上述代码,可以捕获到组合键的操作,并且知道它们被按下和释放的确切时间。这对于分析用户的打字习惯、游戏操作习惯等都有很大的帮助。比如,你可以分析在编写代码时常用的快捷键组合,或者在游戏中玩家喜欢使用哪些连招。

四、创意无限:pynput的更多可能

pynput不仅仅是一个按键记录器,它的功能远不止于此。结合其他Python库,可以创造出许多有趣且实用的项目。

自动化脚本

利用pynput,可以编写自动化脚本来模拟键盘和鼠标操作。例如,可以自动填充表格、自动刷题、甚至自动玩游戏。

安全软件

pynput还可以用于开发安全性软件,比如键盘记录器(虽然这可能涉及到隐私问题,所以使用时必须谨慎)。它可以帮助追踪非法操作,或者作为家长控制软件的一部分来限制孩子使用电脑的时间。

数据分析

通过对键盘和鼠标活动的记录,可以进行深入的数据分析。了解用户的使用习惯,优化软件界面设计,甚至预测用户行为都是可能的。

五、结语:开启你的创造之旅

pynput是一个强大而灵活的库,它为Python开发者提供了一个探索计算机输入设备的窗口。通过本文的介绍,你已经了解了如何使用pynput来记录组合键操作,以及如何将这一技术应用于实际项目中。
记住,技术本身并不是目的,它是一个工具,能够帮助实现自己的想法和解决问题。所以,拿起你的键盘,开启你的创造之旅吧!让pynput成为你手中的魔杖,释放出无限的可能。

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

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

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

相关文章

模拟集成电路设计系列博客——8.3.1 抖动与相位噪声

8.3.1 抖动与相位噪声 不像大部分集成电路中的模拟信号以电压或电荷来承载信息,对于时钟波形来说,其重要方面在于其穿越某些特定阈值时的特定时间点。抖动是这些特定时间点上的随机偏差,而相位噪声是这些时间点上的随即偏差,相位噪声则是抖动的频域表示。由于抖动和相位噪声…

Linux 中 uid、gid、euid、egid、groups 之间的关系

导航1 权限匹配流程 2 五种身份变化 3 有效用户/组 4 特权对 Shell 脚本无效 5 Sudo 与 SUID/SGID 的优先级 6 SUID、SGID、Sticky 各自的功能Linux最优秀的地方之一,就在于他的多人多工环境。而为了让各个使用者具有较保密的档案资料,因此档案的权限管理就变的很重要了。 Li…

通义灵码 Visual Studio 小白上手指南

本安装步骤适用于 Windows 10 及以上操作系统中安装和使用通义灵码。一、下载和安装指南 本安装步骤适用于 Windows 10 及以上操作系统中安装和使用通义灵码。 步骤 1:准备工作操作系统:Windows 10 及以上; 下载并安装 ****Visual Studio 2022 17.3.0 及以上版本。步骤 2:在…

mysql 8修改数据库用户密码

一、使用以下命令 ALTER USER root@localhost IDENTIFIED BY 1234; 二、在navicat中点击“用户”菜单然后点击“编辑”按钮修改用户密码

java中的函数式接口:(Consumer、BiConsumer、Supplier、Predicate、Function、BiFunction)

Consumer说明:(1)consumer接口来自java8中引入的Java.util.function包(2)Consumer是一个功能接口,用来作为lambda表达式或方法引用的任务目标(传递一个参数执行指定的方法)。 功能:Consumer的功能接口是一个接受单一参数并且不返回任何结果的操作。必要时,"结果&q…

ros microros 舵机控制原理

1. 什么是舵机: 舵机是一种位置伺服的驱动器,主要是由外壳、电路板、驱动马达、齿轮组和位置反馈电位计等元件所构成,适用于那些需要角度不断变化并可以保持的控制系统。 2. 舵机的工作原理是:控制电路板接收来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减…

STM32时钟配置

STM32F10x时钟配置 根据参考手册可知STM32F10x系列的时钟树如下:图中给了说明了HSE、HSI、LSI、LSE的全称。HSE(The high speed external clock signal),高速外部时钟信号,需要4-16MHz的外部振荡器 HSI(The high speed internal clock signal),高速内部时钟信号,使用8MHz…

SpringBoot项目配置文件加密

前言 防止配置文件敏感信息泄露,去年公司出现过类似事件,也防止源码泄露,对项目中的配置文件进行加密 引入方式 pom文件引入以下依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifac…

Educational Codeforces Round 167 (Rated for Div. 2) A-D

A. Catch the Coin题意:在一个二维坐标系上有一个硬币每秒y轴坐标减一,而你每秒可以向旁边八个方向移动,问你有没有一个时刻你会和硬币重叠。 思路:注意到在y小于-2时,我们无论如何都追不到硬币,而其他时候我们可以采取向左下或者右下的策略来保持和硬币y轴下落同步移动的…

ASP.NET Core MVC 从入门到精通之HttpContext

原文链接:https://www.cnblogs.com/hsiang/p/17368101.html 什么是HttpContext? 在B/S模式开发的程序中,客户端是浏览器,服务器端Web服务程序,HttpContext是连接客户端和服务器端程序的桥梁,交代了当前请求的环境信息,它封装了请求[Request]和响应[Response]及其他所有信…

实战篇——SQL注入sqli-labs-master靶场实战一

实战篇——SQL注入sqli-labs-master靶场实战(1) SQL注入的原理 没有对用户的输入进行合法性判断或过滤,而是直接将其拼接至SQL查询语句当中作为命令执行,从而导致非法操作。 SQL注入的检测 也就是闭合方式的判断,根据报错信息的不同情况可以分为3类——(1)有报错信息 (2)无报…

不用虚拟机在Windows上安装Linux子系统(win11)

打开终端输入以下命令查看是否支持安装systeminfo最底下是4个yes代表支持 在开始菜单输入如下搜索 打开拉到最底下,勾选这两个选项 按照提示重启电脑 打开终端输入以下命令会自动安装最新的Ubuntu发行版wsl --install可以通过如下命令查看其他版本wsl --list --online安装过程…

manim边学边做--Tex

Tex类继承自MathTex,具体功能和MathTex差不多,有一些细节的差别。在实际的使用中,我感觉Tex在结合一般文本和公式时更方便一些,所以我用的比较多的是Tex。Tex在manim各个模块中的位置大致如上图中所示。 1. Tex与MathTex区别 Tex的主要参数和方法和MathTex是一样的,所以本…

[开源分享]好用的在线客服系统 PHP客服系统源码 聊天源码(开源代码+终身使用+安装教程+全新UI)

源码介绍 PHP在线客服系统源码采用全新UI,重新设计前端界面,后台采用php+mysql,免费开源源码。在线客服系统已成为企业与客户之间沟通的重要渠道。通过在线客服系统,企业可以方便地与客户进行实时沟通和解决问题,提升客户满意度。php客服系統源码主要功能要求: 全新UI 自动…

不只是前端,后端、产品和测试也需要了解的浏览器知识

一、我们为什么要了解浏览器? 1. 对于前端开发者 1.浏览器是用户体验的第一线。我们需要了解浏览器的工作原理,才能有效地设计和实现用户界面,确保良好的用户体验。 2.好的产品需要考虑浏览器兼容性。我们需要了解这些差异,以确保网站或应用在不同的浏览器中都能正常工作,…

从人工到自动化到AIOps再到ChatOps:大模型在运维领域的应用

一、引言 在信息技术飞速发展的今天,运维工作已经从最初的人工操作,逐步演变为自动化、AIOps(人工智能运维)和ChatOps(通过聊天的方式去运维)。这些变革不仅提升了运维效率,还显著保障了系统的稳定性。特别是借助大模型,运维同学能够更加高效地完成工作,并应对复杂的运…

ros microros 使用超声波雷达测量距离

我们使用的超声波模块一共有四个引脚,分别是TRIG 即发送引脚,用于发送超声波ECHO 即接收引脚,用于接收反射回来的超声波VCC 电源接5VGND 电源地 一、新建工程新建example18_sr04二、编写代码带注释的代码如下#include <Arduino.h> #define Trig 27 // 设定SR04连接的A…

tensorflow-gpu配置

1.安装Anaconda 下载地址:Anaconda | The Operating System for AI 2.查询tensorflow-gpu不同版本所对应的python、cuDNN和CUDA的版本 官网:在 Windows 环境中从源代码构建 | TensorFlow (google.cn) 3.使用conda安装相应的库# tensorflow_gpu-2.3.0 conda init conda crea…

Charles 使用

一、下载安装官网:https://www.charlesproxy.com/二、移动端抓包 2.1、安装证书 设置代理弹出对应的 代理ip 和端口号,在移动端的wifi 配置对应的代理,然后返回对应的证书地址 下载证书 安装 即可