在windows和linux上钩住并模拟键盘事件

keyboard的Python项目详细描述


使用这个小python库完全控制键盘。钩子 全局事件、注册热键、模拟按键等等。

功能

  • global event hook在所有键盘上(无论 聚焦)。
  • listensend键盘事件。
  • 使用windowslinux(需要sudo),使用 实验性的os x支持(感谢@glitchassasin!).
  • pure python,没有要编译的c模块。
  • 0依赖项。安装和部署很简单,只需复制 文件夹。
  • python 2和3
  • 复杂热键支持(例如ctrl+shift+m, ctrl+space),具有 可控超时。
  • 包括高级api(例如recordplayadd_abbreviation)。
  • 将键映射为它们在布局中的实际位置,full 国际化支持(例如Ctrl+ç)。
  • 在单独的线程中自动捕获的事件,不阻止main 程序。
  • 测试和记录。
  • 不会弄坏有口音的死键(我在看着你,派胡克)。
  • 通过项目提供鼠标支持 mousepip install mouse)。

用法

安装PyPI package

pip install keyboard

或者克隆存储库(不需要安装,源文件是 足够):

git clone https://github.com/boppreh/keyboard

download and extract the zip进入 你的项目文件夹。

然后检查API docs below查看哪些特性 有空。

示例

importkeyboardkeyboard.press_and_release('shift+s, space')keyboard.write('The quick brown fox jumps over the lazy dog.')keyboard.add_hotkey('ctrl+shift+a',print,args=('triggered','hotkey'))# Press PAGE UP then PAGE DOWN to type "foobar".keyboard.add_hotkey('page up, page down',lambda:keyboard.write('foobar'))# Blocks until you press esc.keyboard.wait('esc')# Record events until 'esc' is pressed.recorded=keyboard.record(until='esc')# Then replay back at three times the speed.keyboard.play(recorded,speed_factor=3)# Type @@ then press space to replace with abbreviation.keyboard.add_abbreviation('@@','my.long.email@example.com')# Block forever, like `while True`.keyboard.wait()

已知限制:

  • 在Windows下生成的事件不报告设备ID (event.device == None)。 #21
  • Linux上的媒体密钥可能显示为无名(仅扫描代码)或不在 全部。#20
  • 密钥抑制/阻塞仅在Windows上可用。 #22
  • 为了避免依赖于x,linux部分读取原始设备文件 (/dev/input/input*)但这需要根。
  • 其他应用程序(如某些游戏)可能会注册 吞下所有关键事件。在这种情况下,keyboard将无法 报告事件。
  • 这个程序不想隐藏自己,所以不要用它 键盘记录器或在线游戏机器人。负责任。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Hibernate:合并并删除,而不是从数据库中删除实体对象   java如何在WebFilter中有条件地从Mono返回?   java调用mysql c3p0函数   可执行jar Java jar文件加载错误:无法找到或加载主类。类导致的错误:java。lang.ClassNotFoundException:某些东西。班   java如何减少/更改爬网后的延迟?   从其他语言(如Java、PHP、Perl、Python等)调用C/C++代码的最佳方式是什么?   java如何模拟影响对象的void返回方法   当我试图在ubuntu上启动JavaScala时,它抛出了一个异常   java如何正确输出游戏   理解java和C++背景下的JavaScript原型   oracle如何将Java函数转换为postgresql函数   多线程为什么我的java服务器程序在超时后不退出?   java如何使listView中的按钮在单击时工作?   试图将这个嵌套的java forloop转换为python,但我不知道如何转换。有没有一种方法可以像这样为循环执行if语句?   java幂函数在计算器中的应用   如何在java中滚动浏览mysql数据库   在Spring Boot应用程序的JUnit测试中,java没有符合自动连线JPA存储库要求的bean   java如何使用扩展类的JPanel对象?