SuperAPI AI 工具集

uloop-simulate-keyboard

通用与其它

查看项目

更新于 10-15 22:12

技能介绍

用途:在 Unity PlayMode 中模拟键盘输入,适用于按键、长按、释放以及游戏控制等场景,仅支持新版 Input System。

主要能力:命令为 uloop simulate-keyboard --action <Press|KeyDown|KeyUp> --key <key> [options],以及 uloop simulate-keyboard --action ReleaseAll。Press 为一次点按(Down 后 Up),可用 --duration 指定按住秒数(0 为点按,最大 30);KeyDown 仅按下并保持;KeyUp 仅释放;ReleaseAll 强制释放所有被跟踪及设备按下的键,可在暂停时使用,用于暂停点中断后恢复干净键盘状态。--key 需匹配 Input System Key 枚举(如 W、Space、LeftShift、Enter),不区分大小写,数字键用 Digit0-Digit9 或 Numpad0-Numpad9。可同时按住多个键(如 W + LeftShift)。

使用方式:先确保 Unity 处于 PlayMode(可用 uloop control-play-mode --action Play),再执行相应命令,并用运行时状态、日志或截图检查结果。需要精确帧证据时可参考 uloop-pause-point 技能;若返回 InterruptedByPausePoint: true,Press/KeyDown 需先读 PressDeliveredToGame 再重试。最终验证前用 uloop clear-pause-point --all 清除仅用于检查的暂停点。

限制:必须安装 com.unity.inputsystem 包,游戏代码须通过 Input System API(如 Keyboard.current[Key.W].isPressed)读取输入,而非旧版 Input.GetKey()。Press/KeyDown/KeyUp 要求 PlayMode 未暂停,ReleaseAll 允许暂停时使用。KeyDown 在键已按住时失败,KeyUp 在键未按住时失败;PlayMode 退出时所有按住键自动释放。若 Press 或 KeyDown 后 isPressed 为 true 但运行时状态未变,应先确认目标组件处于激活状态、输入轮询阶段正确,并在重试前补发 KeyUp,而非直接改写用户代码。ReleaseAll 的 Success: true 不足以证明设备干净,需读取 ReleasedKeyStates,对 DeviceIsPressedAfterRelease: true 的项恢复 PlayMode 后重新检查。输出字段语义与 PressEdge* 诊断见技能旁的 references/output.md。