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)以了解其他功能和方法。
你还可以完全控制你的鼠标,该模块的同一作者又制作了另一个用于处理鼠标的模块!
使用这些模块,你可以构建桌面自动化脚本、键盘快捷键、键盘记录器(尽管作者不负责)等等!