Имитация события нажатия клавиш - PullRequest
0 голосов
/ 21 февраля 2012

Как я могу имитировать нажатие клавиши (ctrl), пока выполняется другой код? Какова будет реализация следующего метода?

self ctrlDownWhile: [self doSomething]

1 Ответ

1 голос
/ 05 июня 2012

Вы можете попытаться «обмануть» состояние ввода, изменив его состояние «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 до и после оценки блока.

...