Simula evento keydown
-
28-10-2019 - |
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]
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