模拟keydown事件



在执行其他代码时,如何模拟按住键(ctrl)?以下方法将如何实施?

self ctrlDownWhile: [self doSomething]

您可以尝试通过更改其"ctrlDown"状态来"欺骗"输入状态。坏消息是,它没有setter方法来访问它(可能只在我的版本中),所以你可能必须使用一个技巧:

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&key释放CTRL键的事件,并在块求值前后将它们排入WindowSensor。

最新更新