Как удаленно отправить нажатие клавиши в приложение X11?

Протестировать, работает ли Ваш монитор или от Вас, может использовать

$ xset q | grep Monitor
Monitor is On

Для определения яркости подсветки ЖКД, можно работать

$ xbacklight
70.000000
5
09.12.2016, 23:05
1 ответ

Я решил проблему.

Первой частью решения была информация Жиля о том, что xdotool - это всего лишь двоичный файл, так что нет необходимости его устанавливать. Достаточно просто скопировать исполняемый файл на удаленную машину (на которой у меня есть разрешение на запуск исполняемых файлов, хранящихся в моих собственных каталогах).

Обратите внимание, что когда я упоминаю ниже любую команду, я предполагаю, что переменная DISPLAY установлена на дисплей, на котором запущена система Mathematica (в моем случае это было :0.0). Это то, что я сделал сначала после входа в систему с помощью ssh, перед выполнением любой из приведенных ниже команд.

Следующим шагом было распознавание того, что когда экран заблокирован, экранная заставка Gnome захватывает события клавиатуры, поэтому любые нажатия клавиш, отправленные в окно системы Mathematica, заканчивались вместо этого в экранной заставке. К счастью, заставку Gnome легко разблокировать из командной строки. Команда

gnome-screensaver-command -d

, которую я нашел здесь.

После этого я определил окно системы Mathematica, используя команду

xwininfo -root -tree | grep Mathematica

, которую нашел здесь. Правильное окно системы Mathematica было легко идентифицировано, поскольку в заголовке содержалось имя файла блокнота ("блокнот" - это имя системы Mathematica для определённого типа документа системы Mathematica, который обычно используется для вычислений) и звездочка, указывающая на то, что он не был сохранён. Каждая строка начинается с соответствующего идентификатора окна (шестнадцатеричный номер, например, 0x13371d)

После идентификации окна, я устанавливаю на него фокус, используя

xdotool windowactivate 0x13371d

(где шестнадцатеричный номер, конечно же, был идентификатором окна, полученным ранее) и, наконец, посылаю ему Control-S, используя

xdotool key ctrl+s

Затем я снова использую xwininfo, чтобы проверить, что звездочка действительно исчезла в заголовке окна, что указывает на то, что блокнот действительно был сохранен.

5
27.01.2020, 20:39

Теги

Похожие вопросы