Hid 烧录
Pro 的 Hid 走蓝牙。自己买一块带 USB 的 ESP32-C3(一般 10 元左右),用下面的脚本烧录。烧好后手机配对,脚本里就可以点击和滑动。
当前固件只支持 ESP32-C3。ESP32、S2、S3 不能用这份脚本。
原理

- 手机蓝牙连上这块板。
- 脚本里初始化并连接,见 Hid 方法。
- Pro 把指令发给板子。
- 板子再以 Hid 把点击、滑动、按键发回手机。
- 系统执行这些操作。

Android 12 及以上先申请蓝牙权限,见 权限。
准备
电脑上需要:
- arduino-cli,并装好 ESP32 核心和 NimBLE-Arduino
- esptool
- Python 3
- 固件仓库:DeekeScript/ESP32-C3
macOS 可以这样装:
brew install arduino-cli esptool
arduino-cli config add board_manager.additional_urls https://espressif.github.io/arduino-esp32/package_esp32_index.json
arduino-cli core update-index
arduino-cli core install esp32:esp32
arduino-cli lib install "NimBLE-Arduino"用 USB 把板子接到电脑,直接运行下面的烧录命令。这块 ESP32-C3 不用按板上的 BOOT 或 RST,脚本会自己通过串口让板子进入下载。新板、以及已经烧过其他程序的板子,再次烧录都不用按任何按键。烧录时不要去按这两个键,烧完也不用再按 RST。
只有命令一直停在等待下载、串口也连不上时,才按住 BOOT、点一下 RST、再松开 BOOT,然后重新执行烧录。
Windows 用 Git Bash 执行下面的命令。arduino-cli、esptool、python3 要能在 Git Bash 里直接运行。
烧录
先克隆固件仓库。
git clone https://github.com/DeekeScript/ESP32-C3.git
cd ESP32-C3名称是 DeekeScript- 加 4 位,例如 DeekeScript-0001。只写数字时会补零,1 会变成 0001。
# 名称写成 DeekeScript-0001
./flash.sh DeekeScript-0001
# 只写后缀也可以,脚本会补上 DeekeScript-
./flash.sh 0001
# 不写名称时,用 DeekeScript- 加芯片 MAC 后 4 位
./flash.sh串口会自动找。macOS 找 /dev/cu.usbmodem*,Linux 找 /dev/ttyACM* 或 /dev/ttyUSB*,Windows 的 Git Bash 找乐鑫原生 USB 串口(设备号 VID_303A)。
多块板同时插着时,指定其中一个。Windows 上如果板子走的是 CH340 这类外接串口芯片,也要自己写 PORT。
# macOS
PORT=/dev/cu.usbmodem101 ./flash.sh DeekeScript-0001
# Windows
PORT=COM3 ./flash.sh DeekeScript-0001烧录结束会打印 烧录完成: DeekeScript-0001。
Flash 按 DIO 接线。脚本里已经按 DIO 编译,不要改成 QIO,否则板子读不到分区表。
手机上配对
- 打开手机蓝牙,搜索烧录时用的名称,例如
DeekeScript-0001。 - 配对。第一次可能要点允许。
- 脚本里连接。坐标会按当前屏幕设好,不用再
setXY。
if (!Access.hasBluetoothConnectionPermission()) {
Access.requestBluetoothConnectionPermission();
System.exit();
}
Hid.initBluetooth();
// 第二个参数是设备索引,从 0 开始。这里连接索引为 0 的板子。
// 同时配对了多个蓝牙时,改成要连接的那一块的索引。
if (Hid.connectAndWait(true, 0)) {
Hid.tap(500, 800);
}connectAndWait 的第二个参数就是这块板的索引。上面连的是索引为 0 的板子,只配对一块时用这个即可。手机里同时配对了多个蓝牙时,按要连的那一块改这个数。
改过固件里的触摸或按键描述后,要在系统蓝牙里取消配对,再配对一次,手机才会用新的描述。换过板子或改了蓝牙名时也一样:取消旧名称,只保留当前这块板。
接下来
配对完成后按 Hid 方法 发点击和滑动。
