web-dev-qa-db-fra.com

Trouver des détails sur les événements de clic et de clavier

J'ai remarqué qu'il n'y avait pas beaucoup d'alternative à Problem Steps Recorder pour Linux, et je vais essayer d'en créer un dans un script Shell.

  1. Comment puis-je attendre/détecter quand la souris est cliquée? Je voudrais prendre une capture d'écran pour le moment.
  2. Comment trouver une description d'un bouton ou d'un champ de saisie sur lequel la souris a cliqué? Étapes du problème L’enregistreur renverrait quelque chose comme cliquez avec le bouton gauche de la souris sur "fermer la fenêtre" si je clique sur le "X" ou cliquez avec le bouton gauche sur "fermer" si je clique sur le bouton bouton "fermer".
  3. Comment puis-je attendre/savoir quand une touche est enfoncée et trouver quelle touche?
3
Nonny Moose

Vous pouvez utiliser la commande xinput --test-xi2 --root ( man xinput ) , où test-xi2 signifie l'enregistrement des périphériques d'entrée et --root doit se connecter à partir de la soi-disant fenêtre racine (concept spécifique à x11) . Cela vous indiquerait quand et quelle touche enfoncée dans le système, les clics de souris et même les coordonnées de déplacement de la souris. Il résout vos points 1 et 3, il vous suffit d’analyser ces événements.

Le point 2 est plus compliqué. Vous pouvez utiliser la commande xev -root pour surveiller tous les événements X dans le système, y compris des éléments tels que (dis) apparaissant dans les fenêtres, entrée/sortie du focus. d'une fenêtre particulière, etc. Vous devez analyser sa sortie et afficher une description lisible par l'homme de ce qui se passe. Btw, la commande enregistre les touches pressées aussi.

Une mise en garde: il s'agit évidemment d'un grand trou de sécurité, qui remonte à l'époque de la création de Xorg, et personne ne devait s'en soucier. Pour cette raison, X11 est actuellement remplacé par le protocole Wayland (il s’agit essentiellement d’un X12, mais il n’est pas rétrocompatible, le protocole s’appelle autrement) , quels WM implémentent l'ATM. Ce n'est pas un processus rapide car le protocole exige beaucoup plus de WM, mais Fedora 25 semble enfin avoir la session Wayland activée par défaut. Kwin est également en train de rattraper son retard. Et votre script ne va pas fonctionner sur Wayland. Cela ne signifie pas que vous ne pouvez pas le faire - je pense que vous le pouvez. Mais vous devez travailler en étroite collaboration avec un WM particulier d'un DE particulier, et le script ne sera pas un script bash autonome, mais plutôt un complément à un WM.

5
Hi-Angel