使用Python在Linux中模拟按键事件
我正在写一个脚本,用来自动运行一个特定的模型。当模型出错时,它会等待用户输入(按下回车键)。我可以检测到模型出错了,但我不知道怎么用Python(在Linux上)模拟按键事件。Windows有一个叫SendKeys的库可以做到这一点,但我想知道在Linux上有没有类似的Python库。
谢谢!
6 个回答
10
一种更底层的方法是创建一个 uinput
设备,然后通过这个设备向 Linux 的输入系统发送输入事件。可以考虑以下几个库:
下面是使用后者发送 <enter>
的示例:
from evdev import uinput, ecodes as e
with uinput.UInput() as ui:
ui.write(e.EV_KEY, e.KEY_ENTER, 1)
ui.write(e.EV_KEY, e.KEY_ENTER, 0)
ui.syn()
15
看看这个链接 https://github.com/SavinaRoja/PyUserInput,它是一个可以在不同操作系统上控制鼠标和键盘的Python库。
这个键盘控制功能在X11(Linux系统)和Windows系统上都能用,但当我写这个回答的时候,Mac系统不支持。
from pykeyboard import PyKeyboard
k = PyKeyboard()
# To Create an Alt+Tab combo
k.press_key(k.alt_key)
k.tap_key(k.tab_key)
k.release_key(k.alt_key)
7
如果这个“模型”是在图形界面下运行的(也就是用X窗口系统),那么之前提到的 xsendkey 是一个可行的选择,或者可以用 xsendkeycode。如果它是在终端窗口中以文本方式运行,那么可以使用 pexpect。