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

У меня есть два изображения, открытых в полноэкранном режиме на моем Raspberry Pi (с помощью программы просмотра изображений Ristretto). Когда определенные условия выполняются, мне нужно передать комбинацию клавиш 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...

Спасибо михал

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам