检测按键按下的时间?

问题描述 投票:0回答:1

我想实现一个简单的热键,它将根据按住的时间执行两个操作之一,

  • 如果保持时间少于
    500
    毫秒,则
    foo
  • 否则
    bar

if
/
else
逻辑应该是直接的,但我很难确定自从按下该键以来已经过了多长时间:

#singleinstance, force
#NoEnv

Space::
StartTime := A_TickCount
tooltip,% "space is down: " StartTime
return

Space up::
tooltip,% "space is up: " A_TickCount - StartTime
return

Esc:ExitApp

上面的例子,当我释放

space
时,即使我长时间按住
A_TickCount - StartTime
76
的总和也只是随机的小数毫秒,例如
75
122
space
。我觉得不对。

我知道有很多脚本在处理,但它们都在处理第 N 次点击按钮,而我需要知道按住某个键多长时间。

我对

A_TickCount
代表什么感到困惑。是操作系统启动后的时间吗?文档说“系统”,但我不确定。

autohotkey
1个回答
0
投票

在您的示例中,空格(-向下)热键被重复触发,因此结果是随机的。 要获得正确的持续时间,请使用 KeyWait 代替:

$Space::
StartTime := A_TickCount ; elapsed time in milliseconds since the system was started
tooltip,% "space is down: " StartTime
KeyWait, Space ; waits for Space to be released
tooltip,% "space is up: " A_TickCount - StartTime  ; elapsed time since the key has been pressed
return
© www.soinside.com 2019 - 2024. All rights reserved.