python通过keyboard库实现模拟/监听键盘

keyboard介绍

如果我们想要通过快捷键,来调用某段代码,我们可以使用python的keyboard库,这个库可以用于发送,挂钩,以及模拟键盘事件等,并且同时支持多种操作系统(但是需要注意的是,在某些系统中,需要以管理员的权限运行才可以使用)

当我们使用这个库的时候,可以:

  • 监听键盘事件:监听全局键盘事件,包括捕获特定键的按下或释放,记录所有键盘输入(这个功能可能很危险,需要小心使用)。
  • 模拟按键输入:模拟按键事件,如按下,释放,或者同时按下多个键等。
  • 热键和快捷键:可以设置热键或快捷键,来执行特定的回调函数。

安装keyboard库,同样需要使用pip:pip install keyboard

keyboard库github地址

 keyboard使用

监听所有键盘输入

import keyboarddef log_keystroke(event):print(f"Key {event.name} {'被按下' if event.event_type == 'down' else '被释放'}")keyboard.hook(log_keystroke)# 使用esc键来停止监听
keyboard.wait("esc")

可以看到,现在我们所有的按键都会被清清楚楚的记录下来

监听并回放键盘输入

这个功能允许我们先输入内容,然后将所有的输入内容全部记录下来,然后再需要的时候,重新回放(也就是再模拟输入一次)

import keyboard
import time# 记录按键
keyboard.start_recording()# 设置记录10秒的键盘输入
time.sleep(10)events = keyboard.stop_recording()# 回放记录的按键
keyboard.play(events)

监听特定键的按下和释放

import keyboarddef on_press_reaction(event):if event.name == "b":print("你为什么要按b?")keyboard.on_press(on_press_reaction)keyboard.wait("esc")

监听按键按下:keyboard.on_press()

监听按键释放:keyboard.on_release()

设置热键

import keyboarddef print_message():print("你为什么要召唤我?")# 设置热键,例如alt+b
keyboard.add_hotkey("alt+b", print_message)keyboard.wait("esc")

添加热键:keyboard.add_hotkey()

清除所有的热键:keyboard.clear_all_hotkeys()

阻止程序直到按键:keyboard.wait("esc")

模拟输入

模拟文字输入:keyboard.write()

模拟按键按下:keyboard.press()

模拟按键释放:keyboard.release()

模拟按键按下并释放:keyboard.send()

实际例子

插入时间信息

一些输入法可能包含一个功能,可以快速插入一段时间信息,例如,将当前时间2024-10-30 22:00:00插入到文章中。

import keyboard
import datetimedef write_timestamp():current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")keyboard.write(current_time)keyboard.add_hotkey("ctrl+b", write_timestamp)
keyboard.wait("esc")

当然,我们可以对其进行扩展,插入更多的信息,例如,在写文章的时候,同时插入作者信息,联系方式等

import keyboard
import datetimedef write_info(name, mail):current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")info = f"作者:{name}\n联系方式:{mail}\n创建时间:{current_time}"keyboard.write(info)keyboard.add_hotkey("ctrl+b", lambda: write_info("sagegrass", "sagegrass@outlook.com"))
keyboard.wait("esc")

以下信息就是通过按键快速生成的,并非是我手动输入的

在设置热键的时候,一定要注意与原本的快捷键冲突,如果设置的热键冲突,即使程序正确,也可能无法运行,甚至可能因为冲突按键造成许多麻烦。

专注模式

原理:通过热键,操作写入hosts文件,将指定的网站重定向到127.0.0.1,以实现无法访问。再次按下以后,清除这些信息,从而实现继续访问。

 注意,写入hosts以后,不一定能够立即生效,可能需要一定时间的延迟。

import keyboard
import os# 工作期间拒绝玩小游戏
blocked_websites = ["4399.com","www.4399.com"
]
hosts_path = r"C:\Windows\System32\drivers\etc\hosts"
redirect_ip = "127.0.0.1"
is_focus_mode_on = Falsedef toggle_focus_mode():global is_focus_mode_onif not is_focus_mode_on:with open(hosts_path, "a") as file:for website in blocked_websites:file.write(f"{redirect_ip} {website}\n")print("专注模式已开启,干扰网站已被屏蔽。")is_focus_mode_on = Trueelse:with open(hosts_path, "r+") as file:lines = file.readlines()file.seek(0)for line in lines:if not any(website in line for website in blocked_websites):file.write(line)file.truncate()print("专注模式已关闭,干扰网站可正常访问。")is_focus_mode_on = Falsekeyboard.add_hotkey("ctrl+b", toggle_focus_mode)
keyboard.wait("esc")

风险提示

需要注意的是,由于keyboard库可以实现如读取键盘输入,模拟键盘按键等特殊性质的功能,因此存在一些隐私和安全的风险,需要小心谨慎。

比如说,使用keyboard,可能存在恶意软件的风险,比如说,该库可以用于开发键盘记录器,也就是人们常说的keylogger,这样类型的恶意软件能够记录用户的键盘输入,包括密码或者其他的敏感信息。

因此,我们需要注意:

  • 作为使用者,当使用有包含keyboard库的程序时,要确保代码来源的可靠性,避免使用来历不明的python程序。
  • 作为开发者,我们也需要保证用户的隐私和知情权,要告知软件的行为和权限,更不能尝试去制作和传播键盘记录器。

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

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

相关文章

Spring Boot 创建项目详细介绍

上篇文章简单介绍了 Spring Boot(Spring Boot 详细简介!),还没看到的读者,建议看看。 下面,介绍一下如何创建一个 Spring Boot 项目,以及自动生成的目录文件作用。 Maven 构建项目 访问 http…

windows下安装python库wordCloud报错

换电脑安装wordcloud半天安装失败,记录一下遇到的坑,也给大家节省点时间。 方法1: 错误呢就是下面这个,说没c编译器,要不就去他给的地址上安装一下,我安装了一下好像没什么用,也没太敢勾选&am…

未来之维,陈欣的智能CAD

第一章 新世界的曙光 在不远的未来,人类科技取得了前所未有的进步。人工智能不仅渗透到了生活的每一个角落,而且开始在科学研究、艺术创作乃至人类情感交流中扮演重要角色。在这个充满无限可能的时代,有一位年轻的女工程师——陈欣&#xff…

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8 1、.NET Reactor V6.9.8 功能简介2、官方下载 1、.NET Reactor V6.9.8 功能简介 业界领先的源代码保护 .NET Reactor通过多种方法来防止反编译,这些方法会将 .NET 程序集转换为任何现有工具都无法反编译的进程。…

2024 Rust现代实用教程:1.2编译器与包管理工具以及开发环境搭建

文章目录 一、Rust的编译器rustc二、开发环境搭建三、Rust的包管理工具Cargo四、项目结构1.Cargo.toml文件2.创建一个可执行文件项目3.创建一个库项目 参考 一、Rust的编译器rustc 查看版本 rustc-version编译生成二进制文件 rustc -o output filename filename.rs编译生成库…

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载 2024 年 10 月 28 日,Apple 智能今日登陆 iPhone、iPad 和 Mac。用户现可借助 Apple 智能优化写作,为通知、邮件和消息生成摘要,体验交互更自然、功能更丰富的 Siri,使…

Kafka相关API开发

(一)引入依赖 用API直接去操作kafka(读写数据)在实际开发中用的并不多,学习它主要还是为了加深对Kafka功能的理解。kafka的读写操作,实际开发中,是通过各类更上层的组件去实现。而这些组件在读写kafka数据时,用的当然是kafka的jav…

Backtrader 数据篇 02

Backtrader 数据篇 本系列是使用Backtrader在量化领域的学习与实践,着重介绍Backtrader的使用。Backtrader 中几个核心组件: Cerebro:BackTrader的基石,所有的操作都是基于Cerebro的。Feed:将运行策略所需的基础数据…

Leetcode224 -- 基本计算器及其拓展

题目分析: 其实这个计算器的实现并不难,因为除了括号就剩下加减法嘛,括号肯定比加减法先执行,但是加减法是同级的,只是会改变数字的正负号而已,所以实现的逻辑并不是很难,我们只需要一个栈&…

【jvm】为什么Xms和Xmx的值通常设置为相同的?

目录 1. 说明2. 避免性能开销3. 提升稳定性4. 简化配置5. 优化垃圾收集6. 获取参数6.1 代码示例6.2 结果示例 1. 说明 1.-Xms 和 -Xmx 参数分别用于设置堆内存的初始大小(最小值)和最大大小。2.在开发环境中,开发人员可能希望快速启动应用程…

瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了

本文介绍瑞芯微RK3566/RK3568在Android11系统下,默认屏蔽导航栏/状态栏方法,使用触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566芯片,类树莓派设计,Laval官方社区主荐,已适配全新OpenHarmony5.0 R…

使用AIM对SAP PO核心指标的自动化巡检监控

一、背景 由于SAP PO系统维护成本较高,各类型异常报错等都需要人员进行时刻监控和响应,遂由AIM平台进行自动化巡检SAP PO的各指标,然后告警通知用户,节省维护成本和提高工作效率 二、核心指标监控 SAP PO失败消息 适用于S…

openpnp - 手工修改配置文件(元件高度,size,吸嘴)

文章目录 openpnp - 手工修改配置文件(元件高度,size,吸嘴)概述笔记parts.xmlpackages.xml 手工将已经存在的NT1,NT2拷贝出来改名备注END openpnp - 手工修改配置文件(元件高度,size,吸嘴) 概述 载入新板子贴片准备时,除了引入Named CSV文件,还要在ope…

Centos下安装Maven(无坑版)

Linux 安装 Maven Maven 压缩包下载与解压 华为云下载源,自行选择版本 下面的示例使用的是 3.8.1 版本 wget https://repo.huaweicloud.com/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz解压 tar -zxvf apache-maven-3.8.1-bin.tar.gz移…

算法:排序

排序算法 1. 简单排序1.1 直接插入排序1.2 冒泡排序1.3 简单选择排序 2. 希尔排序3. 快速排序4. 堆排序5. 归并排序 将文件的内容按照某种规则进行排列。 排序算法的稳定判定:若在待排序的一个序列中, R i R_i Ri​和 R j R_j Rj​的关键码相同&#xf…

Topaz Photo AI for Mac人工智能图像降噪软件 安装教程【保姆级教程,简单操作轻松上手】

Mac分享吧 文章目录 Topaz Photo AI for Mac人工智能图像降噪软件 安装完成,软件打开效果一、Topaz Photo AI 人工智能图像降噪软件 Mac电脑版——v3.3.0⚠️注意事项:1️⃣:下载软件2️⃣:安装软件,根据步骤完成操作…

k8s部署redis远程连接示例

一、环境 节点 IP 服务 master 192.168.126.46 docker、kubeadm、kubelet、kubectl、flannel、telnet node1 192.168.126.47 docker、kubeadm、kubelet、kubectl、flannel、telnet node2 192.168.126.48 docker、kubeadm、kubelet、kubectl、flannel、telnet ubunt…

ubuntu内核更新导致显卡驱动掉的解决办法

方法1,DKMS指定内核版本 用第一个就行 1,借鉴别人博客解决方法 2,借鉴别人博客解决方法 方法2,删除多于内核的方法 系统版本:ubuntu20.24 这个方法是下下策,如果重装驱动还是不行,就删内核在…

Apache Hive分布式容错数据仓库系统

Apache Hive™是一个分布式的、容错的数据仓库系统,它支持大规模的分析,并使用SQL方便地读取、写入和管理驻留在分布式存储中的pb级数据。 Apache Hive Apache Hive是什么 Apache Hive是一个分布式的、容错的数据仓库系统,支持大规模的分析…

运用AI视频拍摄技术生成3D场景:适用于建模、XR及文旅项目Demo制作

利用AI技术从拍摄的视频中生成3D场景,这种创新方法非常适合用于快速构建高质量的3D模型。生成的3D场景不仅能够用于建筑和设计行业的模型展示,还能应用于扩展现实(XR)技术的大空间体验开发。此外,在文化旅游领域&#…