web-dev-qa-db-ja.com

Linuxの場合はPython)を使用してキープレスイベントをシミュレート

特定のモデルの実行を自動化するスクリプトを書いています。モデルが失敗すると、ユーザー入力(Enterキー)を待ちます。モデルが失敗したことは検出できますが、python(Linuxの場合)を使用してキー押下イベントをシミュレートすることはできません。Windowsにはこれを行うためのSendKeysライブラリがありますが、疑問に思っていました。 Linuxにはpython)用の同様のライブラリがあります。

ありがとう!

14
user308827

「モデル」が(Xウィンドウシステムで)グラフィカルに実行されている場合、すでに提案されている xsendkey の可能性、または xsendkeycode の可能性があります。テキストで(ターミナルウィンドウで)実行されている場合は、 pexpect です。

7
Alex Martelli

これを見てください 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)
14
naren

より低レベルのアプローチは、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()
6
gvalkov

私はお勧めします PyAutoGui 。使い方はとてつもなく簡単で、クロスプラットフォームで、Python 3および2用です。

リンク先のページには、依存関係といくつかのコード例がリストされています。

1
Marco Sulla
1
baol