Pythonでキーストロークをシミュレートするにはどうすればよいですか?また、複数のキーを同時に押したいです。
何かのようなもの:
keystroke('CTRL+F4')
また
keystroke('Shift+A')
Pythonでキーストロークをシミュレートするにはどうすればよいですか?また、複数のキーを同時に押したいです。
何かのようなもの:
keystroke('CTRL+F4')
また
keystroke('Shift+A')
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()
LinuxuinputカーネルモジュールへのPythonicAPI..
Python-uinputは、ユーザースペースデバイスドライバーをカーネルに接続できるようにするLinuxuinputカーネルモジュールへのPythonインターフェイスです。実際には、Python-uinputを使用すると、プログラムで任意の入力イベントを生成するための仮想ジョイスティック、キーボード、およびマウスを簡単に作成できます...
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)
Linuxで使用する場合は、pyautoguiライブラリを試してください。複数のキーの場合、ホットキーを使用する必要があります。例:
pyautogui.hotkey('ctrl', 'c') # ctrl-c to copy
私にとってはうまくいきました-ここを参照してください: Popen.communicate(Linuxの場合)を使用してキーストローク(ALT + TAB)を渡す方法は?
私が見つけた最も簡単な解決策は、pynputを使用することでした。次のことができます。
from pynput.keyboard import Key, Controller
keyboard = Controller()
with keyboard.pressed(Key.ctrl):
keyboard.press(Key.f4)
keyboard.release(Key.f4)