【问题标题】:Cocoa/Carbon: catch global hotkey when key is kept pressed (held down)Cocoa/Carbon:按住键时捕获全局热键(按住)
【发布时间】:2011-06-30 02:31:18
【问题描述】:

使用来自 Carbon 框架的 InstallApplicationEventHandlerRegisterEventHotKey,我可以捕获任何我想要的键。

相反,当一个键被按住(按住)时,我找不到正确处理事件的方法。我的意思是,当我按住一个键时,RegisterEventHotKey 的响应就像我按下然后释放键一样;相反,我希望它连续发送“事件”,直到释放键。

我真正想要实现的,确切地说,当一个键被按住时是这样的:

只要按下并按住键,我希望 InstallApplicationEventHandlerRegisterEventHotKey 创建一个事件,但不仅是一次(就像我现在所做的那样),而是每隔 x 毫秒左右,直到键被释放。

我正在考虑的特定键是不是修饰键。

你能帮帮我吗?我真的疯了!

【问题讨论】:

    标签: cocoa events hotkeys pressed


    【解决方案1】:

    您需要使用事件点击; RegisterEventHotKey 不够灵活,无法做你想做的事。查看Event Taps Testbenchdocumentation

    【讨论】:

    • 感谢您的回答。不幸的是,我不是程序员,而且我对可可太菜鸟,无法实施这样的解决方案。我不知道到底该从哪里看,从哪里开始。我解决了监控(使用RegisterEventHotKey)甚至释放密钥并使用计时器的问题。我知道我采用的解决方案并不优雅,但我没有足够的知识来实施这些解决方案。是否有任何教程或其他东西可以实现这一目标?
    • @Andrea3000:不要卖空自己。去做就对了;如果它不起作用,请尝试找出原因。谷歌通常会帮助你处理任何错误消息,如果你找不到任何东西,到那时,你将能够在 Stack Overflow 上就你遇到的任何问题提出一个具体而彻底的问题。失去“菜鸟”身份的方法不是因为“我太菜鸟”而放弃;它是解决问题,解决问题并从中学习。
    • @Peter Hosey:是的,你是对的。不幸的是,目前我真的很忙于攻读大学的硕士学位,因此我不得不推迟学习:) 一旦我有足够的空闲时间,我会尝试实施这样的解决方案,我保证;)
    • @Peter Hosey:你实际上不能使用 10.6 API,因为它暗示了 stackoverflow.com/questions/1880555/… 中讨论的 NSBeep 并且没有办法阻止它。
    【解决方案2】:

    也许开始每 0.25 秒触发一次计时器,或者检查相应的键是否仍然按下。如果是,请重新调用该操作。否则,使计时器无效。

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      相关资源
      最近更新 更多