web-dev-qa-db-ja.com

LinuxでのキーストロークをPython

Pythonでキーストロークをシミュレートするにはどうすればよいですか?また、複数のキーを同時に押したいです。

何かのようなもの:

keystroke('CTRL+F4')

または

keystroke('Shift+A')
15
microo8

これはXに固有のものですが、xautomationパッケージ(apt-get install xautomation(Debianベースのシステムの場合)、xteを使用してキー入力をシミュレートします。例:

from subprocess import Popen, PIPE

control_f4_sequence = '''keydown Control_L
key F4
keyup Control_L
'''

shift_a_sequence = '''keydown Shift_L
key A
keyup Shift_L
'''

def keypress(sequence):
    p = Popen(['xte'], stdin=PIPE)
    p.communicate(input=sequence)

keypress(shift_a_sequence)
keypress(control_f4_sequence)
13
Mark Longair

python-uinput

Linux uinputカーネルモジュールへのPythonic API ...

Python-uinputは、Python Linux uinputカーネルモジュールへのインターフェイスです。これにより、ユーザー空間デバイスドライバーをカーネルに接続できます。実際には、Python-uinputを使用すると、任意の生成用の仮想ジョイスティック、キーボード、マウスを簡単に作成できますプログラムでイベントを入力...

python-uinput および evdev を検討してください。の例 shift+a後者の場合:

from evdev import uinput, ecodes as e

with uinput.UInput() as ui:
    ui.write(e.EV_KEY, e.KEY_LEFTSHIFT, 1)
    ui.write(e.EV_KEY, e.KEY_A, 1)
    ui.syn()
12
gvalkov

Linuxで使用する場合は、 pyautogui ライブラリを試してください。複数のキーについては、ホットキーを使用する必要があります。例:

pyautogui.hotkey('ctrl', 'c')  # ctrl-c to copy

私にとってはうまくいきました-こちらをご覧ください Popen.communicateを使用してキーストローク(ALT + TAB)を渡す方法(Linuxの場合)?

2
mrjoseph

Windowsを使用している場合は Sendkeys を使用し、Linuxを使用している場合はxsendkeysまたはpexpectの提案 ここで指定 を試してください。

1
Senthil Kumaran