Как передать нажатие клавиши (ALT + TAB) с помощью Popen.communicate (в Linux)?

У меня есть два изображения, открытых в полноэкранном режиме на моем Raspberry Pi (с использованием программы просмотра изображений ристретто). Когда выполняются определенные условия, мне нужно передать комбинацию клавиш ALT + TAB, чтобы отобразить другую. Я пытаюсь использовать Popen.communicate, но не знаю, как передать комбинацию клавиш, например ALT + TAB). У кого-нибудь есть какие-либо идеи?

Мне нужно что-то вроде ниже (замена "ALT + TAB" на рабочий код):

s = Popen(['ristretto', '-f', 'my.gif' ,'&'],stdin=PIPE)
if my_condition:
    s.communicate("ALT+TAB")

Я слышал о пакете SendKeys, но он работает только для Windows ...

Спасибо, Михал


person mrjoseph    schedule 25.01.2018    source источник
comment
Существует пакет под названием atspi, который имитирует нажатия клавиш. Google, это документация!   -  person Ubdus Samad    schedule 25.01.2018


Ответы (1)


Вы, вероятно, не можете сделать именно то, что говорит ваш вопрос - передавать нажатия клавиш с помощью Popen. Вы можете отправлять байты в stdin процесса, который вы открыли, но он почти наверняка не ищет их там. События клавиатуры отличаются от данных, поступающих на stdin.

Однако для этой цели может быть полезна библиотека pyautogui. После его установки вы можете запустить программу просмотра с помощью Popen, как вы это сделали, а затем использовать

pyautogui.hotkey('alt', 'tab')

Чтобы отправить alt + tab в приложение переднего плана. Возможно, вам потребуется добавить небольшую задержку, чтобы убедиться, что ристретто завершил запуск, прежде чем отправлять ключи. Дополнительные сведения о том, как ее использовать, см. В документации по клавиатуре pyautogui.

person Nathan Vērzemnieks    schedule 26.01.2018