Вы можете попытаться «обмануть» состояние ввода, изменив его состояние «ctrlDown».
Плохая новость заключается в том, что у него нет метода установки для доступа к нему (возможно, только в моей версии), поэтому вам, возможно, придется добиваться этого с помощью хитрости:
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.
].
альтернатива - создать события keyPress и keyRelease для клавиши CTRL и поместить их в WindowSensor до и после оценки блока.