Question

Comment puis-je simuler une touche (ctrl) maintenue enfoncée pendant qu'un autre code est exécuté?Quelle serait l'implémentation de la méthode suivante?

self ctrlDownWhile: [self doSomething]
Était-ce utile?

La solution

Vous pouvez essayer de "tromper" l'état d'entrée, en changeant son état "ctrlDown". La mauvaise nouvelle est qu'il n'a pas de méthode setter pour y accéder (peut-être seulement dans ma version), donc vous devrez peut-être y arriver avec une astuce:

ctrlDownWhile:aBlock
  "aBlock will see ctrlDown as true"

  |indexOfCtrlState|

  indexOfCtrlState := InputState allInstVarNames indexOf:'ctrlState'.

  InputState default instVarAt:indexOfCtrlState put:1.   
  aBlock  
    ensure: [
      InputState default instVarAt:indexOfCtrlState put:0.
    ].

une alternative est de créer des événements keyPress & keyRelease pour la touche CTRL, et de les mettre en file d'attente dans le WindowSensor, avant et après l'évaluation du bloc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top