两种方言
同一根线。
盒子同时讲 YSC JSON 帧与完整的 MAKCU km.* 文本方言——与 MAKCU 生态逐命令兼容。 V1 与 V2 命令集完全一致,仅物理传输层不同(V1 走 UART · V2 走 USB-CDC,与波特率无关)。
压枪控制
减速系数在开火时缩小真实鼠标下拉输入。持续时间窗口按当前回报率自适应——1K 与 8K 鼠标表现完全一致。
宏引擎
8 个触发掩码槽位。滚轮按周期脉冲输出,间隔与持续均带逐周期随机浮动——没有节拍器式的机械特征。
鼠标曲线
分段移动配置重塑注入位移的落点——平滑分段、持续时间控制与幅度抖动,轨迹更自然。
抖动轨迹
开火触发的 X/Y 独立微振荡,幅度与频率分轴可调。画出自己的压枪轨迹。
手柄映射
手柄按键映射为鼠标按键,扳机支持模拟量阈值;鼠标移动转换为摇杆偏移,支持缩放与轴取反。
远程控制
通过网络用第二台电脑驱动盒子。内置自检,端到端验证链路可靠后再放心使用。
帧结构
与应答。
YSC 帧——7 字节 START 标记 + 2 字节大端总长 + JSON 负载,以 5 字节 END 标记收尾。
USART 收发各走一条 DMA 通道,IDLE 中断触发收帧。应答为
{"code":200,"message":"…","data":"…"};抖动与曲线的查询结果经异步事件
debug_response 回传。
MAKCU 方言——纯文本 km.* 命令,CRLF 结尾,应答以 >>> 收尾。
另有一个 9 字节二进制波特率帧(0xDE 0xAD 05 00 A5 + 4 字节小端波特率)直接重配 USART——
不知道当前波特率时的恢复通道。
>>>
| 命令 | 名称 | 负载 / 说明 |
|---|---|---|
| 30 | MOUSE_MOVE | {"cmd":30,"x":100,"y":50,"c":1,"rx":1.0,"ry":1.0,"rc":0} — 平滑移动;c=分步次数;rx/ry 物理输入减速系数,rc=减速持续 ms(按回报率自适应) |
| 31 | MOUSE_MOVE_TOW | 方向性移动,与 cmd 30 叠加(位移在 HID 报告中相加)。字段相同;两者同设 rc 时以 cmd 31 为准 |
| 32 | MOUSE_BUTTON | b 位掩码(1=左,2=右,4=中),c=持续上报次数后自动释放 |
| 33 | BUTTON_STATE | 按键状态直设:s=1 按下,0 释放——立即生效,无上报次数 |
| 34 | UPLOAD_STATUS | status>0 开启 HID 数据上传(按键+移动回传串口) |
| 35 | WHEEL_HOLD | w ±1,c=持续时长 ms |
| 36 | MACRO_SET | 槽位 s 0–7,e 启用,t 触发掩码,p 屏蔽掩码,w 滚轮值,i 间隔 ms,d 每周期持续 ms,ij/dj 随机浮动。按键位:1=左 2=右 4=中 8=侧后 16=侧前 |
| 37 | MACRO_GET | s=-1 查全部,0–7 查单槽 |
| 38 | MACRO_RESET | 全部槽位恢复固件默认(禁用) |
| 39 / 40 / 41 | JITTER 设/查/重置 | e, t, ax, fx, py, fy — 开火触发的 X/Y 振荡;结果经异步 debug_response 回传 |
| 42 / 43 / 44 | CURVE 设/查/重置 | e, p, n, d, j — 档位、分段数、持续 ms、抖动幅度 |
| 50 | JUMP_TO_IAP | 先回 entering_iap,随后重启进入 Bootloader。V2 以序列号 TOWMCUIAP 重新枚举——COM 号可能改变 |
| 132 (0x84) | GET_VERSION | 编译日期(__DATE__)。V2:APP 返回 ysc-towmcu-L|R v1.0;IAP 返回 YSC-IAP |
| 133 (0x85) | SET_BAUDRATE | baud — 固件不校验白名单;建议只发白名单内 8 档(115200 … 3000000)。上位机需立即同步切换 |
| 命令 | 分组 | 说明 |
|---|---|---|
| km.move(x,y[,seg]) | 移动 | seg 分步数 1–512(超出裁剪) |
| km.left / right / middle / ms1 / ms2 (1/0) | 按键 | 1=按下,0=释放,2=静默释放(不入推送队列) |
| km.wheel(±1) | 移动 | 滚动一格;其他值裁剪到 ±1 |
| km.lock_mx / lock_my (0/1) | 轴锁定 | 另有 lock_mx+ / lock_mx- 单向锁定;Y 轴同理 |
| km.lock_ml / mr / mm / ms1 / ms2 | 按键锁定 | 锁定后物理按键输入不生效 |
| km.invert_x / invert_y · km.swap_xy | 轴映射 | 反转或交换轴 |
| km.catch_ml / mm / mr / ms1 / ms2 | 捕获 | 0=自动,1=手动捕获模式 |
| km.scroll_side · km.scroll_lr | 滚轮映射 | 侧键 2 或左右键同按触发滚轮 |
| km.buttons(mode,period) | 推送 | 物理按键推送;period 周期 1–1000 ms |
| km.serial("…" / 0) | 身份 | 设置 / 重置设备序列号(最长 32 B,支持 C 转义);无参数=查询 |
| km.echo(0/1) | 系统 | 命令回显(默认开启) |
| km.baud([rate]) | 系统 | rate ≥ 115200,不校验白名单;无参数=查询当前值 |
| km.version() | 系统 | 返回 km.version(km.MAKCU) |
| km.reboot() | 系统 | 应答后软复位 |
| 状态 | 含义 | 如何识别 |
|---|---|---|
| APP | 正常运行——透传 + 命令处理 | cmd 132 返回应用版本串(V2 为 ysc-towmcu-L v1.0 / -R,V1 为编译日期) |
| IAP | Bootloader,等待固件升级 | cmd 132 返回 YSC-IAP;V2 以序列号 TOWMCUIAP 枚举 |