使用Python在Linux中模拟按键事件

14 投票
6 回答
46943 浏览
提问于 2025-04-15 21:13

我正在写一个脚本,用来自动运行一个特定的模型。当模型出错时,它会等待用户输入(按下回车键)。我可以检测到模型出错了,但我不知道怎么用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

撰写回答