USB HID Events
Overview
- Simulate taps, swipes, and typing over a USB cable — no BLE or OTG development board
- Global object:
usbHidEvent - For EC iOS USB 10.7.0+ mid-control; phone OS recommended iOS 17+
- Keep USB connected, device trusted, and the bridge running
- Similar to BLE events and OTG HID, but without an external board
Quick example
function _usbOk(r) { return r == null || r === "";}
function main() { let r = usbHidEvent.sessionStart(true); if (!_usbOk(r)) { logw("USB HID session failed: " + r); return; }
r = usbHidEvent.setScreenSize(1170, 2532); if (!_usbOk(r)) { logw("setScreenSize failed: " + r); return; }
r = usbHidEvent.clickPoint(200, 400); logd("click: " + (_usbOk(r) ? "ok" : r));
r = usbHidEvent.typeText("hello"); logd("en type: " + (_usbOk(r) ? "ok" : r));
r = usbHidEvent.inputText("中文测试"); logd("zh paste: " + (_usbOk(r) ? "ok" : r));
r = usbHidEvent.systemKey("home"); logd("home: " + (_usbOk(r) ? "ok" : r));
usbHidEvent.sessionStop();}
main();usbHidEvent.sessionStart
- Start (or reuse) a USB HID session
- Requires EC iOS USB 10.7.0+
- @param gate Prefer enhanced compatibility mode; default
true(ignored on older OS when unsupported) - @returns
{string}null/empty = success
usbHidEvent.sessionStop
- Close the session and release resources
- Requires EC iOS USB 10.7.0+
- @returns
{string}null/empty = success
usbHidEvent.sessionRestart
- Force close and reopen the USB HID session (use after broken stream / dead touch)
- More thorough than
sessionStartalone (which may reuse a stale connection) - Requires EC iOS USB 10.7.0+
- @param gate Prefer enhanced compatibility mode; default
true - @returns
{string}null/empty = success
usbHidEvent.setScreenSize
- Set screen pixel size for coordinate mapping (must match screenshot/stream)
- Requires EC iOS USB 10.7.0+
- @param w width
- @param h height
- @returns
{string}null/empty = success
usbHidEvent.touchDown / touchMove / touchUp
- Press / move / release at pixel coordinates
- Requires EC iOS USB 10.7.0+
- @param x X
- @param y Y
- @returns
{string}null/empty = success
usbHidEvent.clickPoint
- Tap
- Requires EC iOS USB 10.7.0+
- @param x X
- @param y Y
- @returns
{string}null/empty = success
usbHidEvent.press
- Long press
- Requires EC iOS USB 10.7.0+
- @param x X
- @param y Y
- @param delay hold time in ms
- @returns
{string}null/empty = success
usbHidEvent.doubleClickPoint
- Double tap
- Requires EC iOS USB 10.7.0+
- @param x X
- @param y Y
- @returns
{string}null/empty = success
usbHidEvent.swipeToPoint
- Swipe
- Requires EC iOS USB 10.7.0+
- @param startX start X
- @param startY start Y
- @param endX end X
- @param endY end Y
- @param duration duration in ms
- @returns
{string}null/empty = success
usbHidEvent.multiTouch
- Path points (same shape as
bleEvent.multiTouch) action:0down,1up,2move;delayis per-point ms- Requires EC iOS USB 10.7.0+
- @param touch1 point array
- @param timeout total timeout ms
- @returns
{string}null/empty = success
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);usbHidEvent.systemKey
- Requires EC iOS USB 10.7.0+
- @param key
home|recents|lock - @returns
{string}null/empty = success
usbHidEvent.inputText
- Clipboard paste for all text (ASCII and non-ASCII)
- Requires EC iOS USB 10.7.0+
- @param text text
- @returns
{string}null/empty = success
usbHidEvent.typeText
- Type printable ASCII as keys; non-English/emoji automatically uses clipboard paste
- Requires EC iOS USB 10.7.0+
- @param text text
- @returns
{string}null/empty = success
usbHidEvent.keyPressChar
- Requires EC iOS USB 10.7.0+
- @param prefix optional:
alt|ctrl|gui|shift|r_ctrl|r_shift - @param code character or key name (
a/enter/BS) - @returns
{string}null/empty = success
usbHidEvent.keyPress / keyUp
- Press one key / release all keys
- Requires EC iOS USB 10.7.0+
- @returns
{string}null/empty = success
usbHidEvent.volumeUp / volumeDown / mute
- Volume and mute hardware keys
- Requires EC iOS USB 10.7.0+
- @returns
{string}null/empty = success
usbHidEvent.setClipboard
- Write device clipboard only (does not paste into a field)
- Requires EC iOS USB 10.7.0+
- @param text text
- @returns
{string}null/empty = success
usbHidEvent.getClipboard
- Read device clipboard text
- Requires EC iOS USB 10.7.0+
- @returns
{string}clipboard text; empty when none or on failure