模拟按键事件

发布于 2025-01-07 06:06:01 字数 108 浏览 0 评论 0原文

如何在执行其他代码时模拟按住某个键(ctrl)?下面的方法的实现是什么?

self ctrlDownWhile: [self doSomething]

How can I simulate a key (ctrl) being hold down while some other code is executed? What would be the implementation of the following method?

self ctrlDownWhile: [self doSomething]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你与清晨阳光 2025-01-14 06:06:01

您可以尝试通过更改其“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 & 。 CTRL 键的 keyRelease 事件,并在块评估之前和之后将它们排队到 WindowSensor 中。

You could try to "trick" the input state, by changing its "ctrlDown" state.
The bad news is that it does not have a setter-method to access it (maybe only in my version), so you may have to get there with a trick:

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

an alternative is to create keyPress & keyRelease-events for the CTRL-key, and enqueue them into the WindowSensor, before and after the block's evaluation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文