iOSUSB HID自动化脚本

USB HID 写 iOS 脚本怎么做?免越狱免签名免硬件的完整教程

一根数据线跑通苹果群控,免越狱、免签名、免硬件:从会话开启、屏幕尺寸设置,到点击、滑动、文字输入、多点触控,附代码示例与坐标换算。

约 11 分钟

自动化脚本是把手机上重复的手工操作写成程序。群控是在这之上再加多设备的集中管理。后面讲 USB HID 这条通道怎么写脚本。

USB HID 和别的 iOS 自动化差在哪

USB HID 从 EC iOS USB 10.7.0(2026-09-08)起提供。电脑通过数据线模拟 USB 键盘和鼠标,把点击、滑动、打字送给 iPhone。HID 是 USB 规范里的设备类别,键盘和鼠标都属于它。手机把它当成外接设备。不改系统,所以不用越狱。在「无自动化截图 + USB_HID」模式下不用装 App,也就不用给 IPA 签名,也不用蓝牙板或 OTG 板。

它和代理自动化服务互斥。中控里的「启动自动化」、脚本里的 startEnv,和 usbHidEvent 只能二选一,不要在同一台设备、同一套脚本里混用。要截图时用 image.captureFullScreenNoAuto。手机系统是 iOS 17 及以上。iOS 15 及以上如果要装程序跑自动化,用脱机版主程序 v7.2.0 及以上当作 USB 自动化程序,官方下载页有预签名 IPA 供测试。脱机主程序走的是自动化服务,和 usbHidEvent 互斥。脱机版只支持 iOS 15 及以上。

EasyClick 投屏主界面显示多设备实时画面

动手前先装中控、连上手机、选对模式,并记住返回约定。电脑跑中控,Windows 安装路径用纯英文。iPhone 用数据线连电脑,确认已信任本机,中控桥接已启动。在投屏客户端的系统设置、场景模式里选「无自动化截图 + USB_HID」(手机端不装 App),或「主程序录屏 + USB_HID」(要装脱机主程序 IPA,画面更流畅)。两种都要求 iOS 17 及以上。低于这个版本改用代理模式。代理模式要签名:个人开发者 688 元一年,最多 100 台,支持 iOS 12 及以上。巨魔支持 iOS 15 到 16.6.1,重启会掉签。7.0.0 起,单应用只装主程序,双应用还要再装代理 IPA。

USB HID 投屏预设设置界面

返回约定只有一条:所有 usbHidEvent 函数返回 null 或空字符串是成功,返回其它字符串是错误信息。写脚本前先放一个判断函数,后面一直用。

function _usbOk(r) {
    return r == null || r === "";
}

从开会话到常用函数

USB HID 的操作在会话里进行。顺序固定:先开会话,再设屏幕尺寸,然后才是点击和输入。顺序反了,后面的坐标和点击对不上。

function main() {
    // 1. 开启会话(true 表示启用增强兼容模式)
    let r = usbHidEvent.sessionStart(true);
    if (!_usbOk(r)) {
        logw("开启 USB HID 失败: " + r);
        return;
    }

    // 2. 设置屏幕尺寸,按截图/投屏的实际分辨率填
    r = usbHidEvent.setScreenSize(1170, 2532);
    if (!_usbOk(r)) {
        logw("设置屏幕尺寸失败: " + r);
        return;
    }

    // 3. 点击
    r = usbHidEvent.clickPoint(200, 400);
    logd("点击: " + (_usbOk(r) ? "成功" : r));

    // 4. 收尾,释放资源
    usbHidEvent.sessionStop();
}

main();

跑通这三步之后,再往上面加动作。会话有三个操作:

函数 用途 什么时候用
sessionStart(gate) 开启会话 脚本开头;会话已存在时会复用
sessionRestart(gate) 重建会话 触摸失效、断流、点击没反应时
sessionStop() 关闭会话 脚本结束时释放资源

sessionRestart 相当于先 stop 再 start。sessionStart 可能复用旧连接,sessionRestart 会断开再重建。

常用函数分触控、输入、系统三类。触控:

函数 说明
clickPoint(x, y) 单击
doubleClickPoint(x, y) 双击
press(x, y, delay) 长按,delay 是按住毫秒数
swipeToPoint(sx, sy, ex, ey, duration) 从起点滑到终点,duration 是时长毫秒
touchDown(x, y) / touchMove(x, y) / touchUp(x, y) 按下 / 移动 / 抬起,用于需要精细控制的三段式操作
multiTouch(touch1, timeout) 多点轨迹回放,适合复杂手势

multiTouch 的轨迹点格式:action 为 0 表示按下、2 表示移动、1 表示抬起,delay 是该点的延迟毫秒。

let touch1 = [
    {"action": 0, "x": 100, "y": 500, "delay": 20},
    {"action": 2, "x": 100, "y": 300, "delay": 30},
    {"action": 1, "x": 100, "y": 300, "delay": 20}
];
usbHidEvent.multiTouch(touch1, 10000);

输入类:

函数 说明
typeText(text) 键盘逐键输入;遇到中文、emoji 自动改粘贴
inputText(text) 统一走剪贴板粘贴,中英文都适用
setClipboard(text) 只写入剪贴板,不粘贴
keyPressChar(prefix, code) 字符键或组合键,如 ("gui", "v") 表示粘贴
keyPress(key) / keyUp() 按下单个键 / 抬起全部按键

系统与其他:

函数 说明
systemKey(key) home 主屏 / recents 多任务 / lock 锁屏
volumeUp() / volumeDown() / mute() 音量与静音
setScreenSize(w, h) 设置屏幕像素宽高,决定后面所有坐标的换算

坐标先调用 setScreenSize,按设备的像素宽高设置,之后所有坐标按截图里的像素写。截图里按钮在 (200, 400),脚本里就写 clickPoint(200, 400)。横竖屏切换或分辨率变化后要重新设置,否则坐标整体偏移。竖屏 setScreenSize(1170, 2532),横屏写成 setScreenSize(2532, 1170)。

Python 调用、常见坑和答疑

主程序如果是 Python、C# 或易语言,可以走中控的 HTTP 接口。路径和脚本函数对应。前缀是中控地址,例如 http://127.0.0.1:8019。全部是 POST,Content-Type: application/json。成功时 code 为 0,失败时 code 非 0,msg 是错误信息。用 Python 点一下屏幕:

import requests

body = {
    "deviceId": "你的设备 ID",
    "x": 200,
    "y": 400
}
r = requests.post("http://127.0.0.1:8019/openapi/usbhidClickPoint", json=body, timeout=30)
print(r.json())

对应关系很直观:

脚本函数 HTTP 接口
sessionStart /openapi/usbhidSessionStart
setScreenSize /openapi/usbhidSetScreenSize
clickPoint /openapi/usbhidClickPoint
press /openapi/usbhidPress
swipeToPoint /openapi/usbhidSwipeToPoint
typeText / inputText /openapi/usbhidTypeText / /openapi/usbhidInputText
systemKey /openapi/usbhidSystemKey

建议顺序是先调 usbhidSessionStart,再 usbhidSetScreenSize,然后才做点击与输入,和脚本里的顺序保持一致。

中控设备分组与批量管理界面

常见问题按这个查。忘了先设屏幕尺寸,点击位置会偏,会话开完立刻 setScreenSize。点击没反应,右键设备选「USB HID → 重建 USBHID 会话」。中文直接用 inputText。英文粘贴多出空格,到手机「设置 → 通用 → 键盘」关掉「智能标点」。getClipboard 在部分 iOS 版本上不稳定,需要写入时用 setClipboard。插上线之后还要确认手机已信任本机、中控桥接已启动,否则会话开不起来。

从 10.6.0(2026-09-02)起,AI 智能体改成 iEasyRun,地址是 https://ieasyrun.com 。不会写 EC 脚本时,可以在工作站里用对话或工作流编排。usbHidEvent 按同步调用写,返回 null 或空字符串为成功。读屏幕内容走截图接口,不走屏幕镜像。


相关阅读:想系统了解 iPhone 免越狱自动化的整体方案,可参考 iPhone 免越狱自动化脚本完整教程。

关于 iEasyClick:手机自动化脚本平台,覆盖安卓、iOS、鸿蒙三大生态,支持 EC 脚本开发、AI 智能体对话操控与 USB HID / 蓝牙 HID / OTG HID 多种控制方式。→ 了解全部产品


想要真实跑起来?

本文介绍的方案均可基于 EasyClick 能力在 iEasyClick 落地。官网提供完整文档、开发工具与自动化产品,免费体验。

访问 iEasyClick 官网 →