跳转到内容

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
  • action0 按下,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();