Bluetooth HID Events
Overview
- All Bluetooth HID event module functions require hardware to use
- See Bluetooth HID setup in Advanced — Bluetooth HID Hardware: Bluetooth HID Hardware
- The module object prefix is
bleEvent, e.g.bleEvent.click()
startConnect Connect Bluetooth Device
- Connect to a Bluetooth device
- Can be used without pre-configuring in app settings; this function scans, connects, and saves
- If you do not want per-device setup, use this function
- Requires EC Android 11.37.0+
- @param bleDeviceName Bluetooth device name; omit to read from app settings — last 8 chars of board MAC, lowercase
- @param save Save to app Bluetooth device name settings; set true to persist
- @param timeout Connection timeout in milliseconds
- @returns
{string|null}null or empty on success; otherwise an error message
function main() { logd("connecting ble...") let cr = connect_ble(); if (cr == null || cr == "") { logd("ble connected") } else { logw("ble connect failed " + cr) return } sleep(1000) // Enable pointer location in Developer Options to see tap effects logd("testing clickPoint") // let crc = bleEvent.clickPoint(399, 4525); // if (crc == null || crc == "") { // logd("click success ") // } else { // logd("click failed " + crc) // } // sleep(3000) // logd("testing press") // let crc2 = bleEvent.press(399, 455, 5000); // if (crc2 == null || crc2 == "") { // logd("press success ") // } else { // logd("press failed " + crc2) // } // sleep(6000) // sleep(1000) // logd("testing doubleClick") // let doubleClickr = bleEvent.doubleClick(666, 1000, 30); // if (doubleClickr == null || doubleClickr == "") { // logd("doubleClick success ") // } else { // logd("doubleClick failed " + doubleClickr) // } // sleep(6000) // // test_Swipe(); // touchTest() // mtouch(); test_Swipe(); testSystemKey();
// Input character a bleEvent.keyPressChar("","a")
testPressKey(); //bleEvent.stopConnect() sleep(100000) logd("0---end ");}
function testPressKey() { sleep(1000) let press_a = bleEvent.keyPress("", 65); console.log("press_a {}", press_a)}
function testSystemKey() {
sleep(1000)
logd("home " + bleEvent.home()) sleep(1000)
logd("back " + bleEvent.back())
sleep(1000) logd("recents " + bleEvent.recents())
}
function test_Swipe() { sleep(1000) let td = bleEvent.swipe(300, 400, 500, 600, 5000) logd("swipe result: " + td) sleep(6000)}
function mtouch() { sleep(1000)
let data = [ {"action": 0, "x": 250, "y": 1800, "pointer": 1, "delay": 100}, {"action": 2, "x": 250, "y": 1700, "pointer": 1, "delay": 100}, {"action": 2, "x": 330, "y": 1650, "pointer": 1, "delay": 200}, {"action": 2, "x": 330, "y": 1640, "pointer": 1, "delay": 200}, {"action": 2, "x": 330, "y": 1620, "pointer": 1, "delay": 200}, {"action": 2, "x": 322, "y": 1500, "pointer": 1, "delay": 200}, {"action": 2, "x": 322, "y": 1400, "pointer": 1, "delay": 200}, {"action": 2, "x": 334, "y": 1000, "pointer": 1, "delay": 200}, {"action": 2, "x": 339, "y": 1000, "pointer": 1, "delay": 200}, {"action": 2, "x": 330, "y": 1000, "pointer": 1, "delay": 200}, {"action": 2, "x": 453, "y": 1000, "pointer": 1, "delay": 200}, {"action": 2, "x": 555, "y": 1000, "pointer": 1, "delay": 200}, {"action": 2, "x": 557, "y": 600, "pointer": 1, "delay": 200}, {"action": 1, "x": 600, "y": 400, "pointer": 1, "delay": 100} ]
let tou = bleEvent.multiTouch(data, 1000) sleep(5000) if (tou == null) { logd("multi-touch success") } else { loge("multi-touch failed:" + tou); return false }}
function touchTest() { sleep(6000) let td = bleEvent.touchDown(300, 400) console.log(" touchDown result " + td) sleep(1000) bleEvent.touchMove(350, 460) sleep(1000) bleEvent.touchMove(400, 500) sleep(1000) logd("touchUp " + bleEvent.touchUp(400, 500))}
/** * Connect ble * @returns {null} */function connect_ble() { if (bleEvent.isConnected()) { return null; } bleEvent.stopConnect(); return bleEvent.startConnect("", false, 15000);
}
// Normal devices do not need this// bleEvent.setWidthEqualsHeight(true)
main()stopConnect Disconnect
- Disconnect
- Requires EC Android 11.37.0+
- @return
{string}null on success; otherwise an error message
// See startConnect function examplesetHeartbeatTimeout Set Heartbeat Timeout
- Set heartbeat timeout
- If heartbeat exceeds the set time, connection is considered lost; default 30s
- @param tt Timeout in milliseconds
- Requires EC Android 11.37.0+
// See startConnect function exampleisConnected Connection Status
- Connection status
- Requires EC Android 11.37.0+
- @returns
{boolean}true when connected, false when not
// See startConnect function examplesetWidthEqualsHeight Coordinate Width Equals Height
- Set coordinate system width equal to height
- Usually not needed; set if tap coordinates are wrong, e.g. iQOO series
- Requires EC Android 11.37.0+
- @param r true to enable
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function exampleclickPoint Click
- Click
- Requires EC Android 11.37.0+
- @param x X coordinate
- @param y Y coordinate
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function examplepress Long Press
- Long press
- Note: async with script; call sleep(delay) afterward to avoid event conflicts
- Requires EC Android 11.37.0+
- @param x X coordinate
- @param y Y coordinate
- @param delay Hold duration in milliseconds
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function exampledoubleClick Double Click
- Double click
- Requires EC Android 11.37.0+
- @param x X coordinate
- @param y Y coordinate
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function exampletouchDown Touch Down
- Touch down
- Requires EC Android 11.37.0+
- @param x X coordinate
- @param y Y coordinate
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function exampletouchMove Touch Move
- Touch move
- Requires EC Android 11.37.0+
- @param x X coordinate
- @param y Y coordinate
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function exampletouchUp Touch Up
- Touch up
- Requires EC Android 11.37.0+
- @param x X coordinate
- @param y Y coordinate
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function exampleswipe Swipe
- Swipe
- Note: async with script; call sleep(delay) afterward to avoid event conflicts
- Requires EC Android 11.37.0+
- @param x Start X coordinate
- @param y Start Y coordinate
- @param ex End X coordinate
- @param ey End Y coordinate
- @param delay Total swipe duration in milliseconds
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function examplemultiTouch Multi-Touch
- Multi-touch
- Note: async with script; sleep for total swipe duration to avoid event conflicts
- Requires EC Android 11.37.0+
- Touch parameters: action — 0 = down, 1 = up, 2 = move
- x: X coordinate
- y: Y coordinate
- pointer: Finger index 1, 2, 3, etc.
- delay: Delay before this action in ms; use >40ms to avoid coordinate drift
- @param touch1 Touch point array for finger 1, e.g.
[{"action":0,"x":1,"y":1,"pointer":1,"delay":30},{"action":2,"x":1,"y":1,"pointer":1,"delay":30}] - @param timeout Multi-touch execution timeout in milliseconds
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function examplesystemKey System Key
- System key
- Requires EC Android 11.37.0+
- @param key Values: home, back, recents
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function examplerecents Recents
- Recents / task list
- May not work on all devices (non-standard key)
- Requires EC Android 11.37.0+
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function exampleback Back
- Back
- Requires EC Android 11.37.0+
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function examplehome Home
- Home
- Requires EC Android 11.37.0+
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function examplekeyPress Keyboard Key
- Keyboard key
- Requires EC Android 11.37.0+
- @param prefix Modifier prefix; omit or null for normal key: alt, ctrl, gui (Win), r_ctrl (right Ctrl), r_shift (right Shift), shift
- @param code ASCII code
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function examplekeyPressChar Keyboard Character
- Keyboard character key
- Requires EC Android 11.37.0+
- @param prefix Modifier prefix; omit or null for normal key: alt, ctrl, gui (Win), r_ctrl (right Ctrl), r_shift (right Shift), shift
- @param c Single character, e.g. a; converted to ASCII internally. See https://tool.oschina.net/commons?type=4
- @returns
{string|null}null or empty on success; otherwise an error message
// See startConnect function examplehideBleName Hide Bluetooth Name
- Hide Bluetooth name to prevent discovery
- Requires EC Android 11.38.0+
- @returns
{string|null}null or empty on success; otherwise an error message
// Combined with startConnect example // Call after successful connection bleEvent.hideBleName(); sleep(1000) // Call again let cr = bleEvent.hideBleName(); if (cr == null || cr == "") { logd("hide success") } else { logw("hide failed " + cr) return }showBleName Show Bluetooth Name
- Show Bluetooth name
- If BLE communication fails, display may fail — manually reset the board
- Requires EC Android 11.38.0+
- @returns
{string|null}null or empty on success; otherwise an error message
// Combined with startConnect example // Call after successful connection bleEvent.showBleName(); sleep(1000) // Call again let cr = bleEvent.showBleName(); if (cr == null || cr == "") { logd("success") } else { logw("failed " + cr) return }getConfigBleName Get App-Configured Bluetooth Name
- Get the Bluetooth name configured in the app
- Requires EC Android 11.38.0+
- @returns
{string|null}Name string
let cr = bleEvent.getConfigBleName(); logd("cr "+cr)setWifi Set WiFi
- Set WiFi credentials
- Requires EC Android 11.39.0+
- Board must be restarted after setting to connect to network
- @param name WiFi SSID
- @param pwd WiFi password
- @returns
{string|null}null or empty on success; otherwise an error message
// Call after successful Bluetooth connection
let cr = bleEvent.setWifi("112","333"); logd("cr "+cr)reset Reset Board
- Reset the development board
- Requires EC Android 11.39.0+
- @returns
{string|null}null or empty on success; otherwise an error message
// Call after successful Bluetooth connection let cr = bleEvent.reset(); logd("cr "+cr)