Symulowanie naciśnięcia klawisza w Linuksie za pomocą Pythona
Jak mogę symulować naciśnięcie klawisza w Pythonie? Chcę również nacisnąć kilka klawiszy jednocześnie.
Coś w stylu:
keystroke('CTRL+F4')
Lub
keystroke('Shift+A')
5 answers
Chociaż jest specyficzny dla X, możesz zainstalować pakiet xautomation (apt-get install xautomation
na systemach opartych na Debianie) i używać xte
do symulacji naciśnięć klawiszy, np.:
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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-19 09:29:30
API Pythonic do modułu jądra Linux uinput...
Python-uinput jest interfejsem Pythona do Linux uinput kernel module, który pozwala na podłączenie sterowników urządzeń przestrzeni użytkownika do jądra. W praktyce Python - uinput ułatwia tworzenie wirtualnych joysticków, klawiatur i myszy do programowego generowania dowolnych zdarzeń wejściowych...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 22:35:25
Rozważmy python-uinput i evdev . Przykład shift+a
z tym ostatnim:
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()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 21:09:43
Jeśli planujesz używać go w Linuksie, spróbuj pyautogui library. Dla wielu klawiszy będziesz musiał użyć skrótu klawiszowego, np.:
pyautogui.hotkey('ctrl', 'c') # ctrl-c to copy
Dla mnie zadziałało-zobacz tutaj: Jak przekazać naciśnięcie klawisza (ALT + TAB) za pomocą Popen.komunikować się (na Linuksie)?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-26 14:40:20
Jeśli używasz Windows, użyj Sendkeys , a jeśli używasz Linuksa, wypróbuj sugestię podaną tutaj dla xsendkeys lub pexpect.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:33