2017-08-28 2 views
0

Je suis actuellement à la recherche d'un codage Lua pour un clavier Logitech.Lua Script: ajout d'un code de répétition pour un mouvement de souris

Je peux obtenir le code pour travailler sur un seul appui, j'ai placé un temporisateur de répétition et de sommeil et j'espérais que ceci continue à boucler jusqu'à ce que j'aie poussé le bouton de souris qui ne woring.

C'est ce que j'ai jusqu'à présent:

function OnEvent(event, arg) 
    if event == "G_PRESSED" and arg == 1 then 
     PressMouseButton(3) 
repeat 
      MoveMouseRelative(-20,0) 
      Sleep(50) 
     until not PressMouseButton(1) 
    end 
end 

S'il vous plaît noter que ceci est la première fois que la recherche sur ce type de codage que toute aide est grandement appréciée.

Cordialement

Daniel

+0

"ce qui ne woring." n'est pas très descriptif. Vous avez expliqué ce que vous vouliez que votre script fasse, mais pas ce que le comportement incorrect ou l'erreur actuelle est. – ktb

+0

Salut ktb, désolé à ce sujet, actuellement le programme fonctionne et sur pression de la touche G1 l'écran se déplace sans répétition. J'espère que cela t'aides. – user3668791

Répondre

0

Si vous voulez que la touche G1 d'agir comme une bascule vous allez devoir faire des choses un peu différemment alors vous faisiez. La seule façon de vérifier si la touche G1 est pressée est de répondre à l'événement click en utilisant le gestionnaire OnEvent(). IsMouseButtonPressed() ne vous permet pas de vérifier les touches G. Après avoir appuyé sur les touches, si vous utilisez la fonction OnEvent(), appuyez à nouveau sur la touche G1 pour rappeler la fonction en redémarrant la boucle. Pour contourner ce problème, vous devez conserver un drapeau qui empêchera la fonction de ré-entrer dans la boucle. De plus, ce drapeau signalera l'exécution originale du OnEvent() pour terminer.

function OnEvent(event, arg) 
    if event == "G_PRESSED" and arg == 1 then 
     if script_running then 
      script_running = false 
      return 
     else 
      script_running = true 
     end 
     PressMouseButton(3) 
     repeat 
      MoveMouseRelative(-20,0) 
      Sleep(50) 
     until not script_running 
    end 
end 

Le drapeau dans l'exemple ci-dessus est script_running. Sur la première exécution de la fonction script_running est nil (qui évalue à false). Donc, script_running est défini sur true et la boucle est exécutée. Ensuite, lorsque vous appuyez à nouveau sur la touche G1, il entre à nouveau dans la fonction, mais cette fois script_running est true, ce qui définit la variable script_running à false et quitte la fonction. À ce stade, la boucle d'origine rencontrera finalement la condition de la boucle not script_running == true et sortira également; arrêter le script. Oui, c'est plus impliqué que votre code original, mais malheureusement nécessaire.

+0

Salut ktb, Merci d'avoir regardé ça pour moi. Je vais regarder la mise en œuvre du code. avec ce code le bouton droit de la souris est toujours poussé. Idéalement, je voudrais ce qui suit: Programme pour boucler en appuyant sur la souris avec le bouton droit de la souris maintenez le mouvement -20, puis relâchez le clic droit répéter le retard de 50 ms. Ce codage n'est que le point de départ pour comprendre la pensée Lua. – user3668791

+0

Salut ktb J'ai ajouté le code au script et il ne le fait toujours qu'une fois en appuyant sur la touche G1 sans répétition. Le clic droit reste actif, sans aucun mouvement de la souris. – user3668791

+0

Je ne suis toujours pas sûr du comportement que vous voulez. Après avoir appuyé sur le bouton G1, vous voulez que la boucle continue, ce qui déplace la souris vers la gauche, jusqu'à ce que vous relâchiez le bouton droit? Ou jusqu'à ce que vous relâchiez le bouton G1? – ktb