Domanda

Come posso simulare una chiave (CTRL) che viene mantenuta mentre viene eseguito un altro codice? Quale sarebbe l'implementazione del seguente metodo?

self ctrlDownWhile: [self doSomething]
È stato utile?

Soluzione

Potresti provare a "ingannare" lo stato di input, cambiando il suo stato "ctrldown". La cattiva notizia è che non ha un metodo di setter per accedervi (forse solo nella mia versione), quindi potresti dover arrivarci con un trucco:

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.
    ].

Un'alternativa è quella di creare keypress & keyrelease-eventi per il tasto CTRL e accumularli nel WindowsSensor, prima e dopo la valutazione del blocco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top