USB HID函数
说明
- 通过 USB 数据线 直接模拟点击、滑动、输入等操作,不需要蓝牙开发板或 OTG 开发板
- 对象前缀是
usbHidEvent - 适用 EC iOS USB 10.7.0+ 中控;手机系统建议 iOS 17+
- 使用前请保持 USB 已连接、手机已信任本机,并已启动中控桥接
- 与 蓝牙 BLE 函数、OTG HID 函数 能力相近,但链路不同:USB HID 不依赖外接开发板
快速示例
function _usbOk(r) { return r == null || r === "";}
function main() { let r = usbHidEvent.sessionStart(true); if (!_usbOk(r)) { logw("开启 USB HID 失败: " + r); return; }
// 按本机截图/投屏实际分辨率填写 r = usbHidEvent.setScreenSize(1170, 2532); if (!_usbOk(r)) { logw("设置屏幕尺寸失败: " + r); return; }
r = usbHidEvent.clickPoint(200, 400); logd("点击: " + ( _usbOk(r) ? "成功" : r ));
r = usbHidEvent.typeText("hello"); logd("英文打字: " + ( _usbOk(r) ? "成功" : r ));
r = usbHidEvent.inputText("中文测试"); logd("中文粘贴: " + ( _usbOk(r) ? "成功" : r ));
r = usbHidEvent.systemKey("home"); logd("Home: " + ( _usbOk(r) ? "成功" : r ));
usbHidEvent.sessionStop();}
main();usbHidEvent.sessionStart 开启会话
- 开启 USB HID 会话;会话已存在时会复用
- 适配 EC iOS USB 10.7.0+版本
- @param gate 是否尝试增强兼容模式,默认
true(低版本系统会自动忽略) - @returns
{string}null 或空字符串成功,否则错误信息
function main() { let r = usbHidEvent.sessionStart(true); if (r == null || r === "") { logd("会话已开启"); } else { logw(r); }}main();usbHidEvent.sessionStop 关闭会话
- 关闭 USB HID 会话,释放相关资源
- 适配 EC iOS USB 10.7.0+版本
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.sessionStop();}main();usbHidEvent.sessionRestart 重置会话
- 强制关闭并重新开启 USB HID 会话(断流、触摸失效、会话异常时用)
- 等价于
sessionStop后再sessionStart,比单独sessionStart(可能复用旧连接)更彻底 - 适配 EC iOS USB 10.7.0+版本
- @param gate 是否尝试增强兼容模式,默认
true(低版本系统会自动忽略) - @returns
{string}null 或空字符串成功,否则错误信息
function main() { let r = usbHidEvent.sessionRestart(true); if (r == null || r === "") { logd("会话已重置"); } else { logw(r); }}main();usbHidEvent.setScreenSize 设置屏幕尺寸
- 设置屏幕像素宽高,用于坐标换算;请与截图/投屏分辨率一致
- 适配 EC iOS USB 10.7.0+版本
- @param w 宽度(像素)
- @param h 高度(像素)
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { // 竖屏示例 usbHidEvent.setScreenSize(1170, 2532); // 横屏时宽高对调,坐标仍用横屏截图像素 // usbHidEvent.setScreenSize(2532, 1170);}main();usbHidEvent.touchDown 按下坐标
- 适配 EC iOS USB 10.7.0+版本
- @param x X 坐标
- @param y Y 坐标
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.touchDown(100, 200);}main();usbHidEvent.touchMove 移动坐标
- 适配 EC iOS USB 10.7.0+版本
- @param x X 坐标
- @param y Y 坐标
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.touchMove(150, 260);}main();usbHidEvent.touchUp 抬起坐标
- 适配 EC iOS USB 10.7.0+版本
- @param x X 坐标
- @param y Y 坐标
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.touchUp(150, 260);}main();usbHidEvent.clickPoint 点击坐标
- 适配 EC iOS USB 10.7.0+版本
- @param x X 坐标
- @param y Y 坐标
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { let r = usbHidEvent.clickPoint(300, 400); logd(r == null || r === "" ? "点击成功" : r);}main();usbHidEvent.press 长按坐标
- 适配 EC iOS USB 10.7.0+版本
- @param x X 坐标
- @param y Y 坐标
- @param delay 按住毫秒数
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.press(300, 500, 800);}main();usbHidEvent.doubleClickPoint 双击坐标
- 适配 EC iOS USB 10.7.0+版本
- @param x X 坐标
- @param y Y 坐标
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.doubleClickPoint(200, 400);}main();usbHidEvent.swipeToPoint 滑动
- 适配 EC iOS USB 10.7.0+版本
- @param startX 起点 X
- @param startY 起点 Y
- @param endX 终点 X
- @param endY 终点 Y
- @param duration 持续毫秒
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.swipeToPoint(100, 600, 300, 200, 500);}main();usbHidEvent.multiTouch 多点触摸(轨迹)
- 轨迹点格式对齐
bleEvent.multiTouch action:0按下,1抬起,2移动;delay为该点延迟毫秒- 按顺序回放轨迹,适合滑动/手势脚本
- 适配 EC iOS USB 10.7.0+版本
- @param touch1 触点数组
- @param timeout 总超时毫秒
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { 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);}main();usbHidEvent.systemKey 系统按键
- 适配 EC iOS USB 10.7.0+版本
- @param key
home|recents|lock - @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.systemKey("home"); sleep(500); usbHidEvent.systemKey("recents");}main();usbHidEvent.inputText 输入文字(粘贴)
- 统一走剪贴板粘贴,中英文一致
- 适配 EC iOS USB 10.7.0+版本
- @param text 文本
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.inputText("hello"); usbHidEvent.inputText("你好");}main();usbHidEvent.typeText 打字输入
- 可打印英文走键盘逐键;含中文、emoji 等自动改为剪贴板粘贴
- 适配 EC iOS USB 10.7.0+版本
- @param text 文本
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.typeText("hello"); // 键盘打字 usbHidEvent.typeText("你好"); // 自动粘贴}main();usbHidEvent.keyPressChar 字符按键 / 组合键
- 适配 EC iOS USB 10.7.0+版本
- @param prefix 组合键,可为空:
alt|ctrl|gui|shift|r_ctrl|r_shift - @param code 字符或键名,例如
a/enter/BS - @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.keyPressChar("", "a"); // 粘贴:gui + v(对应 Command/Win + V) usbHidEvent.keyPressChar("gui", "v");}main();usbHidEvent.keyPress 按下单个键
- 适配 EC iOS USB 10.7.0+版本
- @param key 键名,例如
a/enter/shift - @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.keyPress("a"); usbHidEvent.keyUp();}main();usbHidEvent.keyUp 抬起全部按键
- 适配 EC iOS USB 10.7.0+版本
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.keyUp();}main();usbHidEvent.volumeUp 音量+
- 适配 EC iOS USB 10.7.0+版本
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.volumeUp();}main();usbHidEvent.volumeDown 音量-
- 适配 EC iOS USB 10.7.0+版本
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.volumeDown();}main();usbHidEvent.mute 静音
- 适配 EC iOS USB 10.7.0+版本
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.mute();}main();usbHidEvent.setClipboard 设置剪贴板
- 只写入设备剪贴板,不会粘贴到输入框
- 适配 EC iOS USB 10.7.0+版本
- @param text 文本
- @returns
{string}null 或空字符串成功,否则错误信息
function main() { usbHidEvent.setClipboard("要粘贴的内容"); usbHidEvent.keyPressChar("gui", "v");}main();usbHidEvent.getClipboard 读取剪贴板
- 读取设备当前剪贴板文本
- 适配 EC iOS USB 10.7.0+版本
- @returns
{string}剪贴板文本;无内容或失败时返回空字符串 - 不稳定(已知限制):经 CoreDevice 直读,
setClipboard写入后再读一般可用;手机端长按复制的内容在部分 iOS(如 26.x)上常超时或读不到,甚至可能楔住设备剪贴板服务(需重启手机)。当前不要依赖本函数读取人手复制内容;后续计划改用快捷指令等使用方式绕过,暂未实现
function main() { usbHidEvent.setClipboard("hello-clip"); let t = usbHidEvent.getClipboard(); logd("clipboard: " + t);}main();