J'utilise un Raspberry Pi en combinaison avec Chromium (mode kiosque) pour afficher certaines statistiques. Le Pi n’ayant pas de clavier connecté, j’ai donc cherché une solution pour envoyer des frappes du terminal au processus Chromium (onglet) . La saisie normale fonctionne, mais comment puis-je envoyer quelque chose comme F5
(une touche spéciale: rafraîchissement du navigateur) via cette solution?
# pidof chromium
20809 20790 20788 20786 20783
# echo 'some text' > /proc/20809/fd/0
Réponses:
Programmes GUI ne lisent pas de leur entrée standard, ils obtiennent leur entrée à partir du serveur X . Il existe des outils pour injecter une frappe dans une fenêtre. xdotool est assez commun et pratique.
Vous devez trouver l'ID de la fenêtre à laquelle vous souhaitez envoyer la frappe. Vous pouvez le faire avec xdotool.
xdotool search --class Chrome
renvoie la liste des identifiants de toutes les fenêtres de Chrome. Si cela retourne plus d'un, vous devez choisir celui que vous voulez. Vous pouvez utiliserxdotool search --name
pour faire correspondre le titre à la place de la classe. Vous pouvez également analyser la sortie de wmctrl et extraire l'ID de fenêtre souhaité.Une fois que vous avez trouvé le bon identifiant de fenêtre, vous pouvez appeler
xdotool
pour injecter une frappe. Malheureusement, de nombreuses applications rejettent les événements synthétiques, par exemple les frappes au clavier et les événements de souris envoyés par une autre application. C'est le cas des versions actuelles de Chrome. Il est possible d'injecter une frappe d'une autre application par un mécanisme différent, mais cela nécessite que la fenêtre soit focalisée. Vous pouvez faire tout cela avec xdotool, mais le focus clignotera rapidement dans la fenêtre Chrome et inversement. L'extrait de code suivant est envoyé F5à la première fenêtre de Chrome (dans un ordre quelque peu arbitraire).Ou avec les anciennes versions de xdotool:
Rappelez-vous que cela envoie F5à cette fenêtre et qu’il appartient au programme de décider quoi en faire. Dans Chrome, cela recharge l'onglet en cours.
la source
--windowid
drapeau est maintenant--window
(la commande vous en avertit)--title
option est maintenant--name
(la commande l'avertit fidèlement)xdotool search --class Chrome key F5
La solution suggérée ci-dessus utilisait xdotool comme ceci
qui n'a pas fonctionné pour moi. Après quelques expériences, je suis arrivé à
Une fois, cela semblait fonctionner, j'ai défini des scripts et mis à jour mon fichier .lircrc comme indiqué ici:
http://pcfellow.com/ClementineRemote.html
la source
J'ai eu un cas d'utilisation similaire sur un Raspberry Pi sous Raspbian Wheezy. J'avais besoin de faire pivoter les onglets sur Chrome en utilisant le mode kiosque (malheureusement, l'installation d'une extension pour le faire sur l'ancien Chrome n'est plus raisonnable). L'exemple de la réponse acceptée comporte des fautes de frappe ou ne fonctionne tout simplement pas avec les versions de mon logiciel. Voici ce qui fonctionne pour moi:
la source
Si vous utilisez Chromium pour afficher une page Web personnalisée et souhaitez l'actualiser régulièrement, vous pouvez y ajouter le tag suivant:
pour l'actualiser automatiquement toutes les 5 secondes (vous pouvez le définir plus court ou plus long si vous le souhaitez).
la source
J'ai toujours utilisé la touche d'accès rapide automatique pour faire des choses comme appuyer sur une touche d'envoi, mais ce n'est pas disponible sous Linux, mais une recherche rapide sur Google révèle qu'il existe IronAHK ( http://www.ironahk.net/ ). documentation disponible pour le moment, mais cela peut faire l'affaire.
la source