keyboard键盘模块:如何用Python控制你的键盘?

2021年11月16日18:18:00 发表评论 2,440 次浏览

Python如何使用keyboard键盘模块?本文带你了解如何在 Python 中使用键盘模块来完全控制你的键盘,例如挂钩全局事件、注册热键、模拟按键按下和释放等等。

如何用Python控制你的键盘?在本教程中,你将学习如何使用键盘模块在 Python 中控制你的计算机键盘,这当然对许多任务很有用,例如使我们能够自动执行各种常规桌面任务、构建强化学习代理等等。

相关: 如何在 Python 中发送电子邮件。

Python控制键盘示例解析 - 我们将使用keyboard模块,让我们安装它:

pip3 install keyboard

好的,打开一个 Python 交互式 shell 或一个 Jupyter 笔记本/实验室,然后继续。

首先,让我们导入模块:

import keyboard

添加热键和缩写

Python如何控制键盘?该模块为我们提供了一种功能add_abbreviation(),使我们能够注册一个热键,将一个输入的文本替换为另一个。例如,让我们将文本替换"@email"为电子邮件地址"test@example.com"

# replaces every "@email" followed by a space with an actual email
keyboard.add_abbreviation("@email", "test@example.com")

Python如何使用keyboard键盘模块?现在执行这行代码,然后打开任何文本编辑器并在“@email”后面加上一个空格,你会看到神奇的!

其次,你还可以在每次按下热键时调用回调:

keyboard.add_hotkey("ctrl+alt+p", lambda: print("CTRL+ALT+P Pressed!"))

"ctrl+alt+p"指的是一次按下按钮CTRL、ALT和P字符,所以每当这些按钮被一次按下时,回调将被调用,在这种情况下,它只会打印一条简单的消息,但你可以做任何你想做的事情,比如桌面快捷方式。

检查按钮是否被按下

你还可以检查按钮是否被实际按下:

# check if a ctrl is pressed
print(keyboard.is_pressed('ctrl'))

按下和释放按钮

如何用Python控制你的键盘?接下来,你还可以使用以下send()功能模拟按键操作:

# press space
keyboard.send("space")

Python控制键盘示例:这将按下并释放空格键。事实上,有一个等效的函数press_and_release()可以做同样的事情。

你还可以传递多键:

# multi-key, windows+d as example shows the desktop in Windows machines
keyboard.send("windows+d")

+操作装置上我们按在同一时间两个按钮,你还可以使用多步热键:

# send ALT+F4 in the same time, and then send space, 
# (be carful, this will close any current open window)
keyboard.send("alt+F4, space")

但是,如果你想按下某个特定键但又不想松开它,该怎么办?那么,press()release()功能开始发挥作用:

# press CTRL button
keyboard.press("ctrl")
# release the CTRL button
keyboard.release("ctrl")

所以这将按下CTRL按钮然后释放它,你可以在这之间做任何事情,比如睡几秒钟等。

但是现在如果你想编写长文本而不仅仅是特定按钮怎么办?send()会效率低下。对我们来说幸运的是,该write()函数正是这样做的,它将人工键盘事件发送到操作系统,模拟给定文本的输入,让我们试试看:

keyboard.write("Python Programming is always fun!", delay=0.1)

将延迟设置为0.1表示在按键之间等待0.1秒,这看起来像黑客电影中的花哨!

录制和播放键盘事件

如何用Python控制你的键盘?你可以用这个模块做更多很酷的事情,比如使用record()函数记录键盘事件并使用函数再次播放它们play()

# record all keyboard clicks until esc is clicked
events = keyboard.record('esc')
# play these events
keyboard.play(events)

Python如何使用keyboard键盘模块?我传递'esc'record()方法来记录按键的按下和释放,直到我按下'esc'按钮,然后我们再次使用play()方法播放这些事件。

Python控制键盘示例 - 你可以通过简单地打印它来探索事件列表包含哪些内容,或者你​​可以使用它get_typed_strings()来获取键入的字符串:

# print all typed strings in the events
print(list(keyboard.get_typed_strings(events)))

这是我输入的内容:

['Python is indeed the best programming language.!', 'right?', '', '']

另一个有趣的函数是on_release()函数,它接受一个回调,每当一个键被释放时就会执行这个回调:

# log all pressed keys
keyboard.on_release(lambda e: print(e.name))

如何用Python控制你的键盘?这将打印你在键盘上按下的任何内容,有关如何使用此功能构建用于教育目的的键盘记录器的更多信息,请查看本教程。

最后,如果要删除所有使用中的键盘钩子,包括热键、缩写等:

keyboard.unhook_all()

结论

Python如何控制键盘?我刚刚向你介绍了该模块,请查看文档或在 Python 交互式 shell 中键入help(keyboard)以了解其他功能和方法。

你还可以完全控制你的鼠标,该模块的同一作者又制作了另一个用于处理鼠标的模块!

使用这些模块,你可以构建桌面自动化脚本、键盘快捷键、键盘记录器(尽管作者不负责)等等!

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: