Forum Programmation.shell Simuler un clic souris avec une commande

Posté par  (site web personnel) .
Étiquettes : aucune
1
29
jan.
2012

Salut à tous,

J'utilise xbindkeys + xvkbd pour assigner au clic droit de la souris l'action "appuyer sur F1 au clavier".

Ça donne ça dans mon .xbindkeysrc

"/usr/bin/xvkbd -xsendevent -text "[F1]""
b:3

Seulement j'aurais besoin que ça donne le focus à la fenêtre sous le curseur de la souris avant de simuler l'appui de la touche F1 du clavier. Une manière simple d'obtenir ceci serait de simuler un clic gauche sous le curseur avant d'envoyer l'évènement "clavier touche F1"

Pour résumer, je cherche à ce que lorsque je clique gauche sur ma superbe souris, ça envoie les évènements "click droit puis F1 au clavier"
Mes recherches sur la question n'ont rien donné de simple, pourtant je sens qu'avec xvkbd -xsendevent je ne suis pas loin du but.

Merci pour le coup de main

  • # xdotool

    Posté par  (site web personnel) . Évalué à 3.

    Il me semble que tu peux faire ce que tu veux avec xdotool :

    xdotool click 1 key "F1"
    
    

    Il faudra peut-être jouer un peu avec les temporisations.
    PS : merci d'utiliser xbindkeys :-)

  • # presque...

    Posté par  (site web personnel) . Évalué à 1.

    Bon j'approche du but mais c'est toujours pas ça !
    Après de multiples essais à coup de xdotool, je n'arrive toujours pas à donner le focus à la fenêtre sous mon curseur.

    xdotool sleep 0.1 key "F1"

    J'ai l'impression que le click ne se fait pas sous le curseur mais ailleurs... une idée ?

    PS : de rien !

    • [^] # Re: presque...

      Posté par  . Évalué à 1.

      Chez moi xdotool click 1 fonctionne. Si je l'associe à une touche, je peux prendre cliquer pour prendre le focus de la fenêtre. En revanche xdotool key "F1" ne fonctionne pas comme attendu, et la combinaison des deux avec un sleep non plus.

  • # correction

    Posté par  (site web personnel) . Évalué à 1.

    il fallait lire xdotool click 1 sleep 0.1 key "F1" bien entendu

    • [^] # Re: correction

      Posté par  . Évalué à 3.

      si ta souris n'est pas au dessus de la fenetre qui t'interesse, ca ne va pas marcher.

      il faut jouer avec les "window properties" ou les "prgramm class"
      pour demadner au gestionnaire de fenetre de redonner le focus à la fenetre qui t'interesse.

      dans un terminal pour commencer, faire xprop et clic dans la fenetre qui t'interesse
      ca va te donner des infos sur la fenetre de l'application.

      ensuite il faut trouver comment scripter le focus
      pour l'envoie du F1, tu l'as deja.

      mais sinon, si l'appli est opensource, il vaut peut-etre mieux et simplement modifier le programme pour prendre le clic droit de la souris et faire forcement F1 dans l'appli

      (meme si je ne vois pas l'interet à cette manip)

      • [^] # Re: correction

        Posté par  (site web personnel) . Évalué à 0.

        Mais ma souris est bien au dessus de la fenêtre en question :(

        Le nom de la fenêtre à laquelle donner le focus n'est pas toujours le même malheureusement.
        Tout se comporte comme si xdotool envoyait un clic souris, mais pas à l'emplacement de mon curseur !

        • [^] # Re: correction

          Posté par  (site web personnel) . Évalué à 0.

          Si je mets

          "xdotool click 1"
          b:3

          dans .xbindkeysrc, j'imagine que ça devrait faire que le clic droit est un autre clic gauche. Pourtant ça ne donne pas le focus à la fenêtre sous le curseur...

      • [^] # Re: correction

        Posté par  (site web personnel) . Évalué à -1.

        C'est un logiciel propriétaire ( http://www.winamax.fr ) et le but est de rendre le multitabling de plus ergonomique.

        • [^] # Re: correction

          Posté par  . Évalué à 1.

          tu peux vraiment pas faire click gauche (pour avoir le focus) puis click droit(auquel tu a associer la touche F1?
          en même temps si le click gauche puis ne te va pas j'imagine que le click gauche puis click droit ne tira pas non plus ....

          Question con, tu joues combien de table pour avoir besoin de folder si rapidement?

          • [^] # Re: correction

            Posté par  (site web personnel) . Évalué à 1.

            tu peux vraiment pas faire click gauche (pour avoir le focus) puis click droit(auquel tu a associer la touche F1?
            Ben c'est ce que je fais actuellement, mais j'aimerai encore améliorer ça. Surtout que ça peut être source de conneries : si tu as pas donné le focus à la table avant de clic droit, ben ça fold sur la table qui a le focus (joli franglais)

            Question con, tu joues combien de table pour avoir besoin de folder si rapidement?
            Entre 6 et 10

  • # ♥ je vous aime ♥

    Posté par  . Évalué à 1.

    Je viens d'associer ma touche « fenêtre aux quatre carreaux arrondis », autrement inutile, au clic du milieu de la souris, me permettant enfin de faire des coller sans me faire mal au doigt en enfonçant la molette, et sans risque de tourner la molette au lieu de cliquer (ce qui conduit à coller n'importe où dans la page).

    xev → la touche fenêtre gauche renvoie 133
    ~/.fluxbox/keys → 133 :Exec xdotool click 2

    Ça doit faire des années que je cherchais comment faire, j'avais jamais trouvé xdotool. L'autre solution c'était l'achat d'une souris 3 boutons + molette, ce qui se fait rare de nos jours (y'a bien les souris verticales, mais elles sont chères et il faut s'y habituer).

    • [^] # Re: ♥ je vous aime ♥

      Posté par  (site web personnel) . Évalué à 2.

      Tiens, comme moi :)
      Au passage, tu n'es pas obligé d'utiliser xdotool pour ça. Xorg le fait très bien tout seul avec les touches Pointer_ButtonN.

      Dans ton .xsession (ou autre), tu rends active les mousekeys :

      xkbset m
      xkbset exp =m
      
      

      Puis avec xmodmap :

      keycode 133 =  Pointer_Button2 Pointer_EnableKeys
      
      
      • [^] # Re: ♥ je vous aime ♥

        Posté par  . Évalué à 3.

        Merci pour cette nouvelle astuce. Pour le coup j'ai offert ma tournée de « pertinent » à tous les commentaires de cette page.

      • [^] # Re: ♥ je vous aime ♥

        Posté par  . Évalué à 2.

        En effet, sauf que ça désactive les chiffres du pavé numérique, pour les remplacer par les flèches.

    • [^] # Re: ♥ je vous aime ♥

      Posté par  . Évalué à 2.

      Il existe déjà des raccourcis clavier dédiés au copié/collé type sélection-clic molette, de mémoire pour coller c'est shift-inser

      • [^] # Re: ♥ je vous aime ♥

        Posté par  (site web personnel) . Évalué à 1.

        Le but n'est pas seulement de faire du copier/coller, mais de remplacer le clic du milieu sur la molette. En particulier ça rend le touchpad agréable à utiliser puisqu'on a accès aux trois boutons physiques de manière simple (clic droit et gauche + clic du milieu sur la touche au quatre coins arrondis).

        • [^] # Re: ♥ je vous aime ♥

          Posté par  . Évalué à 2.

          puisqu'on a accès aux trois boutons physiques de manière simple (clic droit et gauche + clic du milieu sur la touche au quatre coins arrondis).

          tu sais que tu peux faire clic droit ET gauche en meme temps pour faire le clic du milieu ?

          • [^] # Re: ♥ je vous aime ♥

            Posté par  . Évalué à 2.

            L'avantage d'émuler les boutons par des touches, c'est aussi de pouvoir cliquer plusieurs fois sur le bouton sans bouger la souris. Par exemple, si tu sais que ton programme va te demander plusieurs fois d'appuyer sur OK à intervalles réguliers. toucher a souris pour cliquer peut faire sortir le pointeur du bouton, ce qui oblige à recentrer.

          • [^] # Re: ♥ je vous aime ♥

            Posté par  (site web personnel) . Évalué à 1.

            Oui, bien sûr ! Mais je trouve quand même beaucoup plus pratique d'allouer une touche au clic du milieu (pour le drag and drop par exemple).

  • # Cool, ça pourrais m'être utile :)

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    Et sous KDE 4.7.4 vous savez comment assigner le clic millieu à cette commande ? (pas dans systemsettings apparemment, le clic millieu n'est pas reconnu)

    Parce que quand je selectione/colle dans konversation (IRC) ça scroll tout seul et ajoute ma selection à une précédente entrée de l'historique IRC :/

    On ne peut pas mettre d'array dans le string...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.