Как отправить нажатие клавиш (F5) с терминала на процесс?

Я использую Raspberry Pi в сочетании с Chromium (режим киоска), чтобы показать некоторые статистические данные. У Pi нет подключенной клавиатуры, поэтому я искал решение для отправки нажатий клавиш с терминала на процесс Chromium (tab) . Обычный ввод работает, но как я могу отправить что-то вроде F5 (специальный ключ: обновление браузера) через это решение?

 # pidof chromium 20809 20790 20788 20786 20783 # echo 'some text' > /proc/20809/fd/0 

5 Solutions collect form web for “Как отправить нажатие клавиш (F5) с терминала на процесс?”

Программы GUI не читаются со своего стандартного ввода, они получают свой вход с X-сервера . Есть инструменты для ввода нажатия клавиши в окно. xdotool довольно распространен и удобен.

Вам нужно будет найти идентификатор окна, на который вы хотите отправить нажатие клавиши. Вы можете сделать это с помощью xdotool. xdotool search --class Chrome возвращает список идентификаторов окон всех окон Chrome. Если это возвращает более одного, вам нужно выбрать тот, который вы хотите. Вы можете использовать xdotool search --name для соответствия заголовку вместо класса. Вы также можете проанализировать вывод wmctrl и извлечь желаемый идентификатор окна.

После того, как вы нашли нужный идентификатор окна, вы можете вызвать xdotool для ввода нажатия клавиши. К сожалению, многие приложения отклоняют синтетические события, то есть нажатия клавиш и события мыши, отправленные другим приложением. Это относится к текущим версиям Chrome. Можно вводить нажатие клавиши из другого приложения другим механизмом, но для этого требуется, чтобы окно было сфокусировано. Вы можете сделать все это с помощью xdotool, но это заставит фокус быстро мерцать в окне Chrome и обратно. Следующий фрагмент отправляет F5 в первое окно Chrome (в несколько произвольном порядке).

 xdotool search --class Chrome windowactivate --sync %1 key F5 windowactivate $(xdotool getactivewindow) 

Или со старыми версиями xdotool:

 xdotool windowactivate $(xdotool search --class Chrome) && xdotool key F5 && xdotool windowactivate $(xdotool getactivewindow) 

Помните, что это отправляет F5 в это окно, и это зависит от программы, чтобы решить, что с ней делать. В Chrome это перезагружает текущую вкладку.

В предлагаемом выше решении используется xdotool, как это

  xdotool key --windowid <window> <keystroke> 

который не работал для меня. После некоторых экспериментов я пришел к

  xdotool windowactivate --sync <window> key <keystroke> 

Однажды, казалось, работала, я определил некоторые скрипты и обновил файл .lircrc, как показано здесь:

http://pcfellow.com/ClementineRemote.html

Если вы используете Chromium для отображения пользовательской веб-страницы и хотите регулярно обновлять ее, вы можете добавить к ней следующий тег:

 <meta http-equiv="refresh" content="5"> 

автоматически обновлять его каждые 5 секунд (вы можете установить его короче или дольше, если хотите).

Я исторически использовал Auto Hot Key, чтобы делать такие вещи, как send key presses, однако это недоступно в Linux, но быстрый поиск в Google показывает, что есть IronAHK ( http://www.ironahk.net/ ), что не так много еще есть документация, но это может сделать трюк.

У меня был аналогичный вариант использования на малине Pi, в котором работает Raspbian Wheezy. Мне нужно было повернуть вкладки в Chrome с помощью режима киоска (к сожалению, установка расширения для этого в старых Chrome уже не является разумной). В примере принятого ответа есть некоторые опечатки или просто не работает с моими версиями программного обеспечения, вот что работает для меня:

 xdotool key --window "$(xdotool search --class Chromium | head -1)" Ctrl+Tab 
  • Удаленные приложения X11 имеют неправильные сопоставления клавиатуры (локальные: OSX, remote: Linux)
  • Можно ли выбрать, на каком X будет отображаться экземпляр программы?
  • как начать работу с сервером окон x из linux mint?
  • запуск экрана очищает буфер обмена x11
  • Не удалось перезапустить xmonad на archlinux
  • Как изменить цвет фона по умолчанию для всех окон в X?
  • Может ли один компьютер использоваться двумя пользователями одновременно с помощью двух мониторов?
  • X11 управляет корневым окном или устанавливает окно как фоновое окно (обои)
  • Путаница относительно низкой частоты кадров с Nvidia GeForge, но аппаратное рендеринг, похоже, работает?
  • Как выйти из TTY и в X сеанс
  • Есть ли способ дать снегу на мой Linux-джеткот?
  • Linux и Unix - лучшая ОС в мире.