AHK脚本需求:按住空格触发单次敲击,现有脚本重复触发求助
解决AutoHotkey空格键按住仅触发一次的问题
原脚本存在持续重复触发的核心问题是无延迟的while循环导致高频检测逻辑混乱,且未在长按触发后阻止后续重复判断。以下是修正后的脚本及说明:
修正后的代码
$Space:: pressStartTime := A_TickCount while GetKeyState("Space", "P") { Sleep, 10 ; 降低CPU占用,避免无意义的高频检测 if (A_TickCount - pressStartTime > 180) { SendInput {Space} ; 等待按键释放,彻底避免按住期间重复触发 while GetKeyState("Space", "P") Sleep, 10 return } } ; 短按情况下正常发送一次空格 SendInput {Space} return
关键修正点
- 新增
Sleep, 10:给循环添加微小延迟,大幅降低CPU占用,同时让按键状态检测更稳定 - 长按触发后等待按键释放:发送空格后,持续检测直到用户松开空格键,从根源上杜绝按住期间的重复触发
- 简化发送逻辑:直接用
SendInput {Space}替代分开的Down/Up指令,效果完全一致且代码更简洁 - 保留
$前缀:防止脚本发送的空格再次触发热键本身,避免递归触发
效果验证
- 长按空格键:只会触发一次空格输入,直到松开按键后再次按下才会生效
- 短按空格键:正常触发一次空格,和原生按键行为一致
内容的提问来源于stack exchange,提问作者16BitDoggo
相关产品推荐
相关产品推荐

