【问题标题】:AutoHotKey: How do I disable a key for X amount of time after pressing it?AutoHotKey:如何在按下某个键后将其禁用 X 时间?
【发布时间】:2013-09-17 05:31:56
【问题描述】:

我想要一个脚本,它会按一次按钮,然后等待 3 秒,然后允许在 AutoHotKey 中再次按下它。

我用F3发送发送Q和{F3}。

$F3::
Send q
Send {F3}
return

但是,我按住 F3 反复发送 Q,但我只希望 {F3} 在上次发送前至少等待 3 秒后发送。

如果你还是不明白:

(按住 F3) 发送q 发送 F3 发送q 发送q 发送q (3秒过去了) 发送 F3 发送q 发送q

提前致谢。

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    您想在这 3 秒内重新映射密钥以仅发送 q,然后重新启用它。您可以使用Hotkey, *F3, off 执行此操作。看here

    这是您希望 F3 执行的操作:

    F3 模式 1

    1. 将 F3 重新映射到 q
    2. 睡 3 秒
    3. 发送F3
    4. 将 F3 重新映射到 F3 模式 1(即相同的功能)

    【讨论】:

    • 从问题来看,他似乎想禁用它,这意味着它可以被“按下”但没有任何动作。如果你睡着了,你什么也做不了。
    • 恐怕这不是我想要的,当我按住 F3 时,它会发送 Q 和 {F3} 并循环直到 F3 被释放...但是,当我按住 F3 时,我只希望它每 3 秒最多发送一次 {F3}。
    • @Mare Infinitus 睡眠发生在 F3 键被反弹后。因此,随后按下 F3 应该会触发 F3 重新映射到的任何操作。 AHK 异步处理关键事件及其相应的操作。
    • @user2786228 是的,我看错了你的问题,我已经更新了我的答案。您可以使用相同的基本思想。不要禁用 F3,而是重新映射它以在等待 3 秒时发送 q。
    • 我不认为您(已删除?)上面的内容符合您所描述的您想要的。进一步的 F3 按键将“累积”,最终它们可以在 3 秒内多次发送 F3。间隔。例如,如果您在时间 0、2 按下 F3,则 F3 将在时间 3、5 发送。
    【解决方案2】:

    我尝试实施我的第一个解决方案,但无法让它发挥作用。似乎没有立即安装动态重新映射。下面是一个更简单的解决方案,它使用最后一次 F3 按键的时间。请注意,由于您发送的是 {F3},因此您需要暂时禁用 F3 绑定,否则它将再次触发该操作。

    last_f3_time := 0
    
    F3_Mode_1()
    {
       global last_f3_time
       Send q
       now := A_TickCount
    
       if (now - last_f3_time > 3000)
       {
          last_f3_time := now
          Hotkey, F3, off
          Send {F3}
          Hotkey, F3, on
       }
       ;else{MsgBox, Too early! %now%}
    }
    
    
    F3::F3_Mode_1()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-20
      • 2018-03-26
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 2014-03-07
      • 2016-03-27
      相关资源
      最近更新 更多