Имитация события нажатия клавиш с использованием Python для Linux - PullRequest
13 голосов
/ 04 апреля 2010

Я пишу скрипт для автоматизации запуска конкретной модели. Когда модель терпит неудачу, она ждет пользовательского ввода (клавиша Enter). Я могу определить, когда модель потерпела неудачу, но я не могу использовать python (в linux) для имитации события нажатия клавиши. В Windows есть библиотека SendKeys для этого, но мне было интересно, есть ли подобная библиотека для python в linux.

Спасибо!

Ответы [ 5 ]

14 голосов
/ 18 октября 2013

Посмотрите на это https://github.com/SavinaRoja/PyUserInput кроссплатформенное управление мышью и клавиатурой в python

Управление с клавиатуры работает в системах X11 (linux) и Windows. Но нет поддержки Mac (когда я написал этот ответ).

from pykeyboard import PyKeyboard
k = PyKeyboard()

# To Create an Alt+Tab combo
k.press_key(k.alt_key)
k.tap_key(k.tab_key)
k.release_key(k.alt_key)
7 голосов
/ 05 апреля 2010

Если «модель» работает графически (с системой X Window), возможно уже предложенный xsendkey или xsendkeycode . Если он работает текстуально (в окне терминала), тогда pexpect .

5 голосов
/ 09 августа 2012

Более низкоуровневый подход заключается в создании устройства uinput, с которого вы затем вводите входные события в подсистему ввода linux. Рассмотрим следующие библиотеки:

Пример отправки <enter> с последним:

from evdev import uinput, ecodes as e

with uinput.UInput() as ui:
     ui.write(e.EV_KEY, e.KEY_ENTER, 1)
     ui.write(e.EV_KEY, e.KEY_ENTER, 0)
     ui.syn()
1 голос
/ 06 октября 2015

Я рекомендую PyAutoGui . Смехотворно прост в использовании, он кроссплатформенный и предназначен для Python 3 и 2.

На связанной странице перечислены зависимости и некоторые примеры кода.

1 голос
/ 04 апреля 2010
...