之前在某本书上看到一个程序,可以通过 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 + '\n')

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 录制键盘事件的资料请关注我们其它相关文章!

本文标题: python 偷懒技巧——使用 keyboard 录制键盘事件

本文地址: http://www.cppcns.com/jiaoben/python/347553.html

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. python中字符串的rstrip()方法
  2. MySQL-日志、完全备份恢复和增量备份恢复
  3. python模块之configparser
  4. Java 中textarea 换行,textarea 中的换行符
  5. 佳能lbp611cn硒鼓_佳能lbp611cn说明书
  6. 两年数据对比柱形图_堆积柱形图+散点图=数据对比完美呈现(附视频)
  7. 如何在R中画出高效美观的相关性分析图
  8. 手把手教你创建第一个Vivado工程
  9. 今年出现了5种电子商务SEO趋势
  10. 15分钟带你了解lower_bound和upper_bound
  11. 爱普生连续供墨系统故障排除方法
  12. 看完面经,他拿出一打大厂offer玩起了斗地主,人生不过是如此枯燥乏味....
  13. 长尾效应环境下的电子商务
  14. html鼠标悬停事件 dw,dw制作鼠标放上去图片就显示鼠标离开图片就消失
  15. 随机森林python_实战:用Python实现随机森林
  16. 裸辞一年再就业,上班第一天就想辞职是什么体验?
  17. 紫禁繁花服务器维护一般多久,紫禁繁花手游2020年12月30日更新公告
  18. 一文弄懂软件发布生命周期中各阶段名称及代表含义
  19. 项目E-shopping cart记录
  20. 移动端的tap事件你知道多少

热门文章

  1. bios设置u盘启动重装系统教程
  2. 【绝版C++书籍】《Effective STL》读书笔记
  3. python 3.8.2(32-bit)安装教程_Python 3.8.2详细图文安装教程(附安装包)
  4. 花千骨计算机,花千骨电脑版
  5. 同构JavaScript应用以及前后端分离
  6. 防删图制作实操:贴吧防删图用什么工具软件可以制作
  7. 基于python的小说大数据预测可视化分析系统
  8. 经验小波MATLAB,EWT经验小波matlab应用实现(信号处理) 适用于一维EWT的变换文件 - 下载 - 搜珍网...
  9. 手机关闭网络没有信号显示无服务器,手机信号差怎么解决 手机没信号怎么回事...
  10. android实现一段文字中不同颜色