Имитировать нажатие клавиши в Linux с помощью Python
Как я могу имитировать нажатие клавиши на питоне? Я также хочу нажать несколько клавиш одновременно.
Что-то вроде:
keystroke('CTRL+F4')
или
keystroke('Shift+A')
Ответы
Ответ 1
Хотя он специфичен для 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)
Ответ 2
python-uinput:
Pythonic API для Linux uinput модуль ядра...
Python-uinput - это интерфейс Python для Linux uinput kernel module, который позволяет подключать драйверы устройств userpace к ядру. На практике Python-uinput упрощает создание виртуальных джойстиков, клавиатур и мышей для произвольного создания произвольных входных событий...
Ответ 3
Рассмотрим 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()
Ответ 4
Если вы находитесь в Windows, используйте Sendkeys, а если в Linux попробуйте предложение здесь для xsendkeys или pexpect.
Ответ 5
Если вы планируете использовать его в Linux, попробуйте pyautogui.
Для нескольких клавиш вам потребуется использовать горячие клавиши, например:
pyautogui.hotkey('ctrl', 'c') # ctrl-c to copy
Для меня это сработало - см. здесь:
Как передать нажатие клавиши (ALT + TAB) с помощью Popen.communicate(в Linux)?