特定のモデルの実行を自動化するスクリプトを書いています。モデルが失敗すると、ユーザー入力(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()
PyAutoGuiをお勧めします。使い方はとてつもなく簡単で、クロスプラットフォームで、Python3および2用です。
リンク先のページには、依存関係といくつかのコード例がリストされています。
私がこれと別のよくランク付けされたSO応答で見つけたソリューションの多くは、非推奨(PyUserInput)またはevdevを使用していましたが、失敗しました(UInputError: "/dev/uinput" cannot be opened for writing
)Linuxを使用する私にとって最も簡単なソリューションはpynputでした。彼らのドキュメントから直接1つの例:
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')
それは魅力のように機能しました!