我正在编写一个脚本来自动运行一个特定的模型。当模型失败时,它会等待用户输入 (按 Enter 键)。虽然我能够检测到模型失败,但是我无法使用 Python (在 Linux 上) 来模拟键盘按键事件。Windows 有 SendKeys 库可以做到这一点,但我想知道是否有类似的库可以在 Linux 上使用 Python 实现。
谢谢!
看看这个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)
一种更底层的方法是创建一个 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()
xsendkey
е’Ң xsendkeycode
зҡ„й“ҫжҺҘе·Із»ҸеӨұж•ҲгҖӮ - hazzey由于我在这个和另一个 排名靠前的 SO 响应 中找到的许多解决方案都已过时(PyUserInput)或使用了失败的evdev(UInputError:无法打开“/dev/uinput”以进行写入
),所以对我而言,在Linux上最简单的解决方案是pynput。下面是他们文档中的一个示例:
from pynput.keyboard import Key, Controller
keyboard = Controller()
# Press and release space
keyboard.press(Key.space)
keyboard.release(Key.space)
# Type a lower case A; this will work even if no key on the
# physical keyboard is labelled 'A'
keyboard.press('a')
keyboard.release('a')
# Type two upper case As
keyboard.press('A')
keyboard.release('A')
with keyboard.pressed(Key.shift):
keyboard.press('a')
keyboard.release('a')
# Type 'Hello World' using the shortcut type method
keyboard.type('Hello World')
它像魔术一样奏效!
k.tab_key(k.keypad_keys['Space'])
的东西,但它不起作用。我很难理解项目文档。你能帮忙吗? - user3768495