之前在某本书上看到一个程序,可以通过 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 录制键盘事件相关推荐

  1. python keyboard方法_python 偷懒技巧——使用 keyboard 录制键盘事件

    之前在某本书上看到一个程序,可以通过 Python 记录下全局范围内的键盘事件,使用的是 ctypes 库. 后来几经尝试,始终不能成功运行.原来它只支持 Python2 和 32 位的 Window ...

  2. python编程midi键盘按键_python 偷懒技巧——使用 keyboard 录制键盘事件

    之前在某本书上看到一个程序,可以通过 Python 记录下全局范围内的键盘事件,使用的是 ctypes 库. 后来几经尝试,始终不能成功运行.原来它只支持 Python2 和 32 位的 Window ...

  3. python魔法方法_Python魔法方法指南

    有很多人说学习Python基础之后不知道干什么,不管你是从w3c还是从廖雪峰的教程学习的,这些教程都有一个特点:只能引你快速入门,但是有关于Python的很多基础内容这些教程中都没介绍,而这些你没学习 ...

  4. python wait方法_Python条件类| 带有示例的wait()方法

    python wait方法 Python Condition.wait()方法 (Python Condition.wait() Method) wait() is an inbuilt method ...

  5. python 计时方法_Python计时器类| cancel()方法与示例

    python 计时方法 Python Timer.cancel()方法 (Python Timer.cancel() Method) cancel() is an inbuilt method of ...

  6. python __repr__方法_Python __repr__()方法起什么作用呢?

    摘要: 下文讲述Python中 __repr__()方法的功能说明,如下所示: __repr__()方法的功能: 用于修改实例化对象的print效果, 如:print(实例化对象) 此时则返回 __r ...

  7. python魔法方法_python,魔法方法指南

    1.简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是两 ...

  8. [转载] python并行处理任务_Python 并行任务技巧

    参考链接: Python的惊人技巧 Python的并发处理能力臭名昭著.先撇开线程以及GIL方面的问题不说,我觉得多线程问题的根源不在技术上而在于理念.大部分关于Pyhon线程和多进程的资料虽然都很不 ...

  9. python爬虫难点_Python爬虫技巧

    ​在本文中,我们将分析几个真实网站,来看看我们在<用Python写网络爬虫(第2版)>中学过的这些技巧是如何应用的.首先我们使用Google演示一个真实的搜索表单,然后是依赖JavaScr ...

最新文章

  1. AI芯片行业发展的来龙去脉
  2. java开发支持类库
  3. Asp.net MVC 的一些总结(二)——图片显示
  4. 技能UP:SAP OBYC自动记账的实例说明(含value String应用说明)
  5. oracle net conf启动无反应,weblogic突然无法启动,显示Server state changed to FORCE
  6. 需要显卡还是cpu_玩游戏卡顿,帧数低,是该升级显卡,还是升级cpu?
  7. 教你如何做人的小故事
  8. 学习opencv3 pdf_PDF的虚拟打印机,免费又好用
  9. c语言车辆管理程序,用c语言编的车辆管理
  10. 短视频jiexi客户端源代码
  11. Python turtle制作书法作品——《鸟鸣涧》
  12. Dubbo源码分析(一):概览
  13. mac 触控板手势以及常用快捷键
  14. Android 之重力感应
  15. 2022 最新TypeScript入门学习笔记
  16. oracle nbu异机恢复,通过NBU进行Oracle异机恢复的实验操作步骤
  17. 响应式网页设计_响应式网页设计–如何使网站在手机和平​​板电脑上看起来不错
  18. Excel-移动平均分析(趋势分析)
  19. apache-jmeter-5.5使用教程
  20. 写了一个实用软件:蓝牙PPT遥控器,控制电脑PPT的播放

热门文章

  1. 热词挖掘、热度值计算方法及python实现
  2. Rabbitmq集成与使用
  3. C C++ 分别编程赋不同姓名的约瑟夫环及用WindowsApi(C++及C)显示离座过程动画
  4. 硕腾“猫友好在中国”项目正式启动,改善中国猫咪诊疗环境
  5. 八一倾情奉献:云和恩墨大讲堂电子期刊第八期
  6. CSAPP LAB1 datalab-handout
  7. 分享几个发外链的地方
  8. python从后向前匹配_python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解...
  9. 【IPv6】邻节点不可到达检测学习(NUD)
  10. 文件安全复制之 FastCopy