<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[键鼠助手5.0]]></title><description><![CDATA[键鼠助手5.0]]></description><link>https://phubber.com/category/5</link><generator>RSS for Node</generator><lastBuildDate>Fri, 16 Oct 2026 15:01:38 GMT</lastBuildDate><atom:link href="https://phubber.com/category/5.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Oct 2026 18:41:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[键鼠助手 5.20 新增内置函数 GetUpTime()：给宏脚本一个毫秒时钟（用法与示例）]]></title><description><![CDATA[这篇说明 5.20 版本新增的内置函数 GetUpTime()：宏脚本里第一个「读时间」的接口。
它没有参数，返回设备开机以来经过的毫秒数，用来计量耗时、给动作做绝对时间对齐。

相关： 键鼠助手 5.0 资源汇总：主程序 / 文档 / 配套工具下载

一句话用法
local t = GetUpTime()   -- 单位毫秒，整型；返回值一般只用来算差值

接口说明



函数
参数
返回值
说明




GetUpTime()
无
整型
设备开机以来经过的毫秒数



几点需要说清楚：

不是「当前时间」：它是「开机以来的时长」，设备上电时从 0 开始，不表示几点几分，也不是时间戳。它的用途是算差值。
单位是毫秒，返回值是整型：脚本里 math.type(GetUpTime()) 得到 integer，可以直接参与加减乘除与比较。
分辨率 1 毫秒：设备内部按更细的步长计数，换算成毫秒时向下取整，所以相邻两次调用可能返回同一个值。
不会溢出：毫秒计数是 64 位整数，连续开机到溢出需要以「亿年」计，正常使用无需关心。
大小写不敏感：GetUpTime() 与 getuptime() 是同一个函数，和 IsKeyDown / iskeydown 的规则一致。
它是「读时钟」，不是「等待」：调用本身几乎不耗时、不会阻塞宏；要等一段时间请用 Delay(毫秒)。

在电脑上先调好再上机：两种环境的时间原点不同
同一个 GetUpTime()，在两个地方跑，时间原点不一样：



运行环境
时间原点
典型用途




编辑器 →「脚本校验」
本次校验开始的时刻
在电脑上先确认脚本的节奏与耗时


设备（真机）
设备本次上电的时刻
真实的宏执行计时



所以不要跨环境比较绝对数值（电脑上的 1200 和真机上的 1200 不是一个起点），只比较同一个环境内的差值。
用法一：测量一段宏的耗时
取两次时间戳相减，就能知道中间这段动作真实花了多久 —— 排查「宏为什么比预期慢」时很有用。
local t0 = GetUpTime()

KeyTap("a")
Delay(300)
KeyTap("b")

Log("这一段耗时 %d ms", GetUpTime() - t0)


Log 的首个参数带 %d 时按 printf 格式化，数字会原样打印出来，便于对照。

用法二：用绝对时间对齐，避免 Delay 累积误差
连续多次 Delay(500) 时，每一步自身的执行耗时会让整体越走越慢，误差逐次累加。
改用「目标时刻」判断，就能把每轮的落点重新拉回时间轴上：
-- 执行 4 轮，每轮之间间隔 500ms，落点分别对齐到 500 / 1000 / 1500 / 2000ms
local t0 = GetUpTime()
for i = 1, 4 do
    KeyTap("f")
    local target = i * 500
    while GetUpTime() - t0 &lt; target do
        Delay(10)   -- 小步让出，别用空转等待
    end
end

要点：等待循环里一定要有 Delay(小值)，不要把 while 写成不带 Delay 的紧凑空转。
用法三：把宏做成固定的节拍
需要「每 1 秒做一件事、共 5 次」这类节奏时，用时间戳做判断比用 Delay 堆叠更稳：
local last = GetUpTime()
local count = 0
while count &lt; 5 do
    local now = GetUpTime()
    if now - last &gt;= 1000 then
        last = last + 1000      -- 以理论落点累加，不丢节拍
        KeyTap("space")
        count = count + 1
    end
    Delay(10)
end


last = last + 1000（而不是 last = now）能让误差不累积：即使某轮判定晚了一点，下一轮的落点仍然回到原来的时间轴上。

版本要求与兼容性



组合
结果




5.20 软件 + 配套固件
正常使用


5.20 之前的软件
编译不通过：GetUpTime 会被当成未定义的函数


5.20 软件 + 更早的固件
宏在设备上执行到该函数时会失败中断（不会静默返回 0）



所以升级软件时，请把固件一并升到配套版本。软件与固件的版本对应关系，参考资源汇总帖里的说明。
还是有问题？
在本帖下回复，写清楚：软件版本（关于页的 Software version）+ 固件版本 + 你脚本里调用 GetUpTime() 的那几行 + 现象。
]]></description><link>https://phubber.com/topic/11/键鼠助手-5.20-新增内置函数-getuptime-给宏脚本一个毫秒时钟-用法与示例</link><guid isPermaLink="true">https://phubber.com/topic/11/键鼠助手-5.20-新增内置函数-getuptime-给宏脚本一个毫秒时钟-用法与示例</guid><dc:creator><![CDATA[admin]]></dc:creator><pubDate>Thu, 15 Oct 2026 18:41:09 GMT</pubDate></item><item><title><![CDATA[键鼠助手 5.0 资源汇总：主程序 / 文档 / 配套工具下载]]></title><description><![CDATA[键鼠助手 5.0 的全部资源集中在这里：主程序（Windows / macOS）、使用文档和两个配套小工具。
每个条目都写清了适用平台、内容和注意事项，按需下载即可。有任何问题欢迎在本帖下回复。
下载清单



#
分类
文件名
平台
大小




1
主程序
KMA_Software_v5.20_release.zip
Windows 10 及以上，64 位
24.73 MiB


2
主程序
KMA_5.20_Release.dmg
macOS
62.04 MiB


3
说明文档
键鼠助手 5.0 使用文档.md
全平台通用
18.28 KiB


4
配套工具
键盘鼠标事件录制工具.exe
Windows
176.00 KiB


5
配套工具
鼠标定位.exe
Windows
56.00 KiB



主程序
KMA_Software_v5.20_release.zip
键鼠助手 5.0 的 Windows 完整发布包，解压即用，无需安装。包含主程序 键鼠助手5.exe、按键映射.exe、键鼠透传.exe 三个可执行程序，另有自带更新器 updater.exe、二次开发用的 kma_api_x64_shared.dll 与 Qt 6 运行库。

适用系统：Windows 10 及以上，64 位
内含三个程序：键鼠助手5.exe（键鼠助手主程序，含宏绑定、宏编辑与烧录）、按键映射.exe、键鼠透传.exe
对应版本：KMA Software v5.20，本版新增内置函数 GetUpTime()（毫秒级运行时钟，用法与示例见 键鼠助手 5.20 新增内置函数 GetUpTime()）
本版为精简发布包：不再附带调试版运行库（*d.dll）、Qt 翻译文件、.pdb 与 tools/ 打包脚本


下载 KMA_Software_v5.20_release.zip（24.73 MiB）

注意事项

解压后请整目录使用，不要只取单个 exe —— 程序与 Qt 运行库必须在同一目录。
包内不再附带 vc_redist.x64.exe；若提示缺少 VCRUNTIME140.dll，请自行到微软官网安装 VC++ 2015–2022 x64 运行库。
首次运行 Windows SmartScreen 可能拦截，点「更多信息 → 仍要运行」。

KMA_5.20_Release.dmg
键鼠助手 5.0 的 macOS 磁盘映像，挂载后内有三个 app：键鼠助手.app（主程序）、按键映射.app、键鼠透传.app，拖入「应用程序」即可使用。

适用系统：macOS（已集成 Qt 6 框架与 OpenSSL）
内含三个 app：键鼠助手（宏绑定 / 宏编辑）、按键映射、键鼠透传
对应版本：KMA 5.20 Release
支持软件内检查更新（关于 → Check Software Update）


下载 KMA_5.20_Release.dmg（62.04 MiB）

注意事项

三个 app 必须放在同一目录（例如都拖进「应用程序」）。按键映射 / 键鼠透传是外壳 app，靠启动器调用主程序包里的真实程序，只装外壳无法运行。
不要直接在挂载的 dmg 里运行 —— 映像只读，配置无法写入，自更新也会失败。
首次打开可能需要到「系统设置 → 隐私与安全性 → 输入监控」重新授予权限。
本包为 ad-hoc 签名，未做 Apple Developer ID 公证；Gatekeeper 可能提示「无法验证开发者」，需右键「打开」或先去掉隔离属性（xattr -d com.apple.quarantine 键鼠助手.app）。

说明文档
键鼠助手 5.0 使用文档.md
键鼠助手 5.0 的完整使用文档（Markdown 源文件），涵盖软件界面讲解、宏的完整使用流程、Lua 脚本语法与全部键鼠函数定义。建议在使用软件前先通读一遍。

特色功能：纯硬件 Lua 宏、三种触发方式、单键可绑按下/松开两个宏、延时误差小于 1ms、10 个可切换场景
UI 讲解：宏绑定、宏编辑（三栏：宏目录 / 编辑器 / 函数说明）、偏好、关于、状态栏
脚本流程：编辑 → 编译校验语法 → 运行 Lua 测试 → 绑定按键与触发类型 → 烧录 → 实机验证
语法参考：数据类型、控制语句、键盘鼠标命令与全部函数定义


下载 键鼠助手 5.0 使用文档.md（18.28 KiB）

注意事项

文档针对 5.0 版本撰写，4.0 及以下版本的界面与函数名不完全一致。
Markdown 源文件，可用任意编辑器或 Typora 打开。

配套工具
键盘鼠标事件录制工具.exe
写宏时的辅助录制工具：把你对键盘和鼠标的真实操作录下来，直接生成可用的 Lua 宏脚本，省去手工写参数的过程。录完可预览、复制或保存成 .lua，再粘到键鼠助手的「宏编辑」里编译烧录。

可分别开关：单独选择「录制键盘事件」或「录制鼠标事件」
鼠标事件完整：按下 / 松开 / 移动 / 滚轮，区分左键、右键、中键、侧前键、侧后键
热键控制：按自定义热键开始 / 停止录制，无需切回界面点到按钮
后台录制：最小化到系统托盘后仍继续录制，双击托盘图标恢复窗口
导出方式：脚本预览、复制到剪贴板、保存 .lua 文件


下载 键盘鼠标事件录制工具.exe（176.00 KiB）

注意事项

采用低级钩子（low-level hook）采集全局输入，杀毒软件可能敏感拦截，请放行。
若提示「输入钩子启动失败」或「当前平台暂不支持全局输入钩子」，请以管理员身份运行。
录制结果是事件序列的直接翻译，使用前建议先在宏编辑里「编译」校验，并精简多余的鼠标移动采样点。

鼠标定位.exe
屏幕坐标辅助工具：在鼠标位置叠加显示实时坐标。写需要精确位移、或要定位到某个像素点的宏时，用它读出目标坐标，再把数值填进脚本。

叠加显示：跟随鼠标显示当前坐标，不抢焦点
全局热键：随时开关显示
设置面板：右键菜单可进入，调整显示方式
多显示器：按可用屏幕区域取坐标


下载 鼠标定位.exe（56.00 KiB）

注意事项

绿色免安装单文件，双击即用。
热键若与其他软件冲突，在系统托盘退出本工具后重开即可解除占用。
坐标以屏幕左上角为原点，填脚本前请确认脚本里用的是否同为绝对坐标。

上手顺序推荐

先看 使用文档，了解宏绑定、宏编辑和烧录的完整流程；
下载对应平台的主程序（Windows 解压即用 / macOS 拖入应用程序）；
写脚本时可配合 录制工具 生成骨架、用 鼠标定位 取坐标；
测试通过后再点到键鼠助手里烧录到硬件。

]]></description><link>https://phubber.com/topic/8/键鼠助手-5.0-资源汇总-主程序-文档-配套工具下载</link><guid isPermaLink="true">https://phubber.com/topic/8/键鼠助手-5.0-资源汇总-主程序-文档-配套工具下载</guid><dc:creator><![CDATA[admin]]></dc:creator><pubDate>Thu, 15 Oct 2026 02:51:28 GMT</pubDate></item></channel></rss>