python keyboard方法_python 偷懒技巧――使用 keyboard 录制键盘事件
之前在某本书上看到一个程序,可以通过 Python 记录下全局范围内的键盘事件,使用的是 ctypes 库。
后来几经尝试,始终不能成功运行。原来它只支持 Python2 和 32 位的 Windows 系统。。。Excuse me?
于是在网上查找可行的替代方案,比如 pyHook 。呃,不合胃口。安装比较繁琐(有依赖库且不能通过 pip 命令安装),只支持 Windows 系统,况且又是十年前就没再更新的项目。。。看了下函数调用也算不上简洁直观。
后来又多番搜索,终于找到了一个名为keyboard 的 Python 库,可以绑定全局事件、录制及模拟键盘输入、设置热键等。
尤其是安装和使用足够简单,比较合我的心意(毕竟 Github 上将近 1.5K 的小星星)。
一、特性
全局范围内的键盘事件绑定。即程序可以后台运行,捕捉其他软件下的按键动作。
跨平台,支持 Windows 、Linux 以及 MacOS 系统。支持 Python2 和 Python3 。
纯 Python 代码,无需编译 C 语言模块。无依赖库,安装简单(只是复制文件就可以)。
通过独立的线程捕捉事件,不阻塞主程序的运行。
很详细的文档,参见项目主页的 README 。
其实我真的有点感觉,这才是我心目中比较“现代”的工具。
二、录制及模拟按键动作
就像前面提到的,安装 keyboard 的流程非常简单,无需考虑任何兼容性或者依赖问题,只需要一条简短的命令:
$ pip install keyboard
可以使用下面的代码录制 10 秒钟的键盘事件,并将其回放一遍(即重复按下之前操作的按键):
import keyboard
import time
keyboard.start_recording()
time.sleep(10)
events = keyboard.stop_recording()
keyboard.replay(events)
可以使用如下代码制作一个简单的 “键盘录制器” (打印输出全局范围内的按键动作,并将按键顺序保存在文本文件中):
import keyboard
def print_pressed_keys(e):
line = ", ".join(str(code) for code in keyboard._pressed_events)
print(line)
with open("keylogger.txt", "a+") as f:
f.write(line + "
")
keyboard.hook(print_pressed_keys)
keyboard.wait()
PS:上述代码中的 code 并不是对应按键的 ASCII 码,而是根据键盘布局为按键指定的数值(如 a 键为 30,b 键为 42 等等),可以通过自行测试确认具体的对应关系。
如同时按下两个或多个按键,则上述程序会以 code, code... 的形式输出。
三、热键捕获及绑定
可以使用如下代码录制热键并为该热键绑定上特定的触发事件:
import keyboard
print("Press and release your desired hotkey: ")
hotkey = keyboard.read_hotkey()
print("Hotkey selected: ", hotkey)
def on_triggered():
print("Triggered!")
keyboard.add_hotkey(hotkey, on_triggered)
print("Press ESC to stop.")
其他的使用方式就不再一一列举了,可以参考 keyboard 项目的 Github 主页 。
几种常见的使用示例也已经包含在项目代码的 examples 目录下。
以上就是python 偷懒技巧――使用 keyboard 录制键盘事件的详细内容,更多关于python keyboard 录制键盘事件的资料请关注云海天教程其它相关文章!
原文链接:https://rollingstarky.github.io/2019/05/11/python-capture-keyboard-events/?utm_source=tuicool&utm_medium=referral
python keyboard方法_python 偷懒技巧――使用 keyboard 录制键盘事件相关推荐
- python keyboard方法_python 偷懒技巧——使用 keyboard 录制键盘事件
之前在某本书上看到一个程序,可以通过 Python 记录下全局范围内的键盘事件,使用的是 ctypes 库. 后来几经尝试,始终不能成功运行.原来它只支持 Python2 和 32 位的 Window ...
- python编程midi键盘按键_python 偷懒技巧——使用 keyboard 录制键盘事件
之前在某本书上看到一个程序,可以通过 Python 记录下全局范围内的键盘事件,使用的是 ctypes 库. 后来几经尝试,始终不能成功运行.原来它只支持 Python2 和 32 位的 Window ...
- python魔法方法_Python魔法方法指南
有很多人说学习Python基础之后不知道干什么,不管你是从w3c还是从廖雪峰的教程学习的,这些教程都有一个特点:只能引你快速入门,但是有关于Python的很多基础内容这些教程中都没介绍,而这些你没学习 ...
- python wait方法_Python条件类| 带有示例的wait()方法
python wait方法 Python Condition.wait()方法 (Python Condition.wait() Method) wait() is an inbuilt method ...
- python 计时方法_Python计时器类| cancel()方法与示例
python 计时方法 Python Timer.cancel()方法 (Python Timer.cancel() Method) cancel() is an inbuilt method of ...
- python __repr__方法_Python __repr__()方法起什么作用呢?
摘要: 下文讲述Python中 __repr__()方法的功能说明,如下所示: __repr__()方法的功能: 用于修改实例化对象的print效果, 如:print(实例化对象) 此时则返回 __r ...
- python魔法方法_python,魔法方法指南
1.简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是两 ...
- [转载] python并行处理任务_Python 并行任务技巧
参考链接: Python的惊人技巧 Python的并发处理能力臭名昭著.先撇开线程以及GIL方面的问题不说,我觉得多线程问题的根源不在技术上而在于理念.大部分关于Pyhon线程和多进程的资料虽然都很不 ...
- python爬虫难点_Python爬虫技巧
在本文中,我们将分析几个真实网站,来看看我们在<用Python写网络爬虫(第2版)>中学过的这些技巧是如何应用的.首先我们使用Google演示一个真实的搜索表单,然后是依赖JavaScr ...
最新文章
- AI芯片行业发展的来龙去脉
- java开发支持类库
- Asp.net MVC 的一些总结(二)——图片显示
- 技能UP:SAP OBYC自动记账的实例说明(含value String应用说明)
- oracle net conf启动无反应,weblogic突然无法启动,显示Server state changed to FORCE
- 需要显卡还是cpu_玩游戏卡顿,帧数低,是该升级显卡,还是升级cpu?
- 教你如何做人的小故事
- 学习opencv3 pdf_PDF的虚拟打印机,免费又好用
- c语言车辆管理程序,用c语言编的车辆管理
- 短视频jiexi客户端源代码
- Python turtle制作书法作品——《鸟鸣涧》
- Dubbo源码分析(一):概览
- mac 触控板手势以及常用快捷键
- Android 之重力感应
- 2022 最新TypeScript入门学习笔记
- oracle nbu异机恢复,通过NBU进行Oracle异机恢复的实验操作步骤
- 响应式网页设计_响应式网页设计–如何使网站在手机和平​​板电脑上看起来不错
- Excel-移动平均分析(趋势分析)
- apache-jmeter-5.5使用教程
- 写了一个实用软件:蓝牙PPT遥控器,控制电脑PPT的播放
热门文章
- 热词挖掘、热度值计算方法及python实现
- Rabbitmq集成与使用
- C C++ 分别编程赋不同姓名的约瑟夫环及用WindowsApi(C++及C)显示离座过程动画
- 硕腾“猫友好在中国”项目正式启动,改善中国猫咪诊疗环境
- 八一倾情奉献:云和恩墨大讲堂电子期刊第八期
- CSAPP LAB1 datalab-handout
- 分享几个发外链的地方
- python从后向前匹配_python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解...
- 【IPv6】邻节点不可到达检测学习(NUD)
- 文件安全复制之 FastCopy