19

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

何かのようなもの:

keystroke('CTRL+F4')

また

keystroke('Shift+A')
4

6 に答える 6

19

python-uinputevdevを検討してください。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()
于 2012-08-23T17:05:38.097 に答える
16

python-uinput

LinuxuinputカーネルモジュールへのPythonicAPI..

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

于 2011-04-19T09:12:59.003 に答える
15

Xに固有ですが、xautomationパッケージを(apt-get install xautomationDebianベースのシステムに)インストールして、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)
于 2011-04-19T09:29:30.097 に答える
4

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

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

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

于 2018-01-26T14:40:20.060 に答える
2

Windowsを使用している場合は、Sendkeysを使用し、Linuxを使用している場合は、xsendkeysまたはpexpectについてここに示されている提案を試してください。

于 2011-04-19T09:15:52.287 に答える
1

私が見つけた最も簡単な解決策は、pynputを使用することでした。次のことができます。

from pynput.keyboard import Key, Controller

keyboard = Controller()
with keyboard.pressed(Key.ctrl):
   keyboard.press(Key.f4)
   keyboard.release(Key.f4)
于 2020-10-06T21:56:26.050 に答える