Używam Raspberry Pi w połączeniu z Chromium (tryb kiosku), aby wyświetlić niektóre statystyki. Pi nie ma podłączonej klawiatury, więc szukałem rozwiązania do wysyłania naciśnięć klawiszy z terminala do procesu Chromium (tab) . Normalne wprowadzanie danych działa, ale jak wysłać coś takiego F5
(specjalny klucz: odświeżenie przeglądarki) za pomocą tego rozwiązania?
# pidof chromium
20809 20790 20788 20786 20783
# echo 'some text' > /proc/20809/fd/0
Odpowiedzi:
Programy GUI nie czyta ze swojego standardowego wejścia, get one swój wkład z serwera X . Istnieją narzędzia do wprowadzania naciśnięcia klawisza do okna. xdotool jest dość powszechny i wygodny.
Musisz znaleźć identyfikator okna, do którego chcesz wysłać naciśnięcie klawisza. Możesz to zrobić za pomocą xdotool.
xdotool search --class Chrome
zwraca listę identyfikatorów okien wszystkich okien Chrome. Jeśli zwraca więcej niż jeden, musisz wybrać ten, który chcesz. Możesz użyć,xdotool search --name
aby dopasować tytuł zamiast klasy. Możesz także przeanalizować dane wyjściowe wmctrl i wyodrębnić żądany identyfikator okna.Po znalezieniu odpowiedniego identyfikatora okna możesz zadzwonić,
xdotool
aby wprowadzić naciśnięcie klawisza. Niestety wiele aplikacji odrzuca zdarzenia syntetyczne, tj. Naciśnięcia klawiszy i zdarzenia myszy wysłane przez inną aplikację. Tak jest w przypadku bieżących wersji Chrome. Możliwe jest wciśnięcie klawisza z innej aplikacji za pomocą innego mechanizmu, ale wymaga to skupienia okna. Możesz to wszystko zrobić za pomocą xdotool, ale spowoduje to, że fokus szybko migocze do okna Chrome iz powrotem. Poniższy fragment kodu jest wysyłany F5do pierwszego okna Chrome (w nieco dowolnej kolejności).Lub ze starszymi wersjami xdotool:
Pamiętaj, że wysyła to F5do tego okna i to program decyduje, co z nim zrobić. W Chrome powoduje to ponowne załadowanie bieżącej karty.
źródło
--windowid
flaga jest teraz--window
(komenda ostrzega tyle)--title
Opcja jest teraz--name
(komenda wiernie przestrzega tyle)xdotool search --class Chrome key F5
W powyższym sugerowanym rozwiązaniu zastosowano xdotool
co nie działało dla mnie. Po kilku eksperymentach doszedłem do
Kiedyś wydawało się, że to działa, zdefiniowałem kilka skryptów i zaktualizowałem mój plik .lircrc, jak pokazano tutaj:
http://pcfellow.com/ClementineRemote.html
źródło
Miałem podobny przypadek użycia na Raspberry Pi z Raspbian Wheezy. Musiałem obracać karty w Chrome w trybie kiosku (niestety instalowanie rozszerzenia w tym celu w starym Chrome nie jest już uzasadnione). Przykład zaakceptowanej odpowiedzi zawiera kilka literówek lub po prostu nie działa z moimi wersjami oprogramowania, oto, co działa dla mnie:
źródło
Jeśli używasz Chromium do wyświetlania niestandardowej strony internetowej i chcesz regularnie ją odświeżać, możesz dodać do niej następujący tag:
aby automatycznie odświeżać co 5 sekund (możesz ustawić go krócej lub dłużej, jeśli chcesz).
źródło
Historycznie używałem Auto Hot Key do takich czynności jak wysyłanie naciśnięć klawiszy, jednak nie jest to dostępne w Linuksie, ale szybkie wyszukiwanie w Google ujawnia, że istnieje IronAHK ( http://www.ironahk.net/ ), nie ma wiele dostępna dokumentacja, ale może to załatwić sprawę.
źródło