使用前提
- 手机上安装了服务端APP
- 下载地址:点击下载
权限
安装之后需要开启四个权限
- 蓝牙权限:用来连接板子的蓝牙
- 通知权限:用于app的后台运行
- 电池优化:防止app被系统关闭
- usb权限:用于连接板子的otg
- otg模式开启的状态下,连接板子到手机,会提示允许APP访问板子吗?
- 勾选一律打开后点确定,然后插拔板子后会自动启动服务端,不会有弹窗
连接模式
- 蓝牙连接:通过蓝牙跟板子通信
- USB连接:通过OTG跟板子通信
蓝牙模式
- 先将手机蓝牙跟板子配对
- 在服务端选择板子蓝牙,然后点连接
- 连接成功后,可以点击按钮进行功能测试
USB模式
- 先将板子插上手机
- 如果弹出是否允许,勾选一律打开后点击确定
- 正常情况会显示设备已连接,点击按钮进行功能测试
充电管理
- 服务端带了充电管理功能
- 开启后,会定时检测当前手机电量
- 如果当前电量小于充电阈值,则向板子发送充电开启指令,然后一直充电直到大于停止阈值
- 如果当前电量大于停止阈值,则向板子发送关闭充电指令,然后一直等待电量小于充电阈值
服务端主页
用于简单的功能测试,点击,滑动, 按键
- 通过电脑访问服务端首页(需要在同一路由器下)
- 通过服务端所在的手机浏览器访问/
API常见用法
- 想从app界面回到桌面:发送home指令
- 想返回上一个界面:发送back指令
- 想点击某个坐标:发送tap指令
- 想给输入框发送一段文字:先发送setClipboard,然后发送key_paste指令
- 想查询当前分辨率:发送getResolution指令
- 想让设备开始充电:发送charge指令
- 想滑动屏幕:发送swipe指令
- 想按下键盘:发送key指令
服务端系统 API
基本URL格式:
http://127.0.0.1:8866/hid?system=指令名
127.0.0.1:8866
是服务监听的地址和端口(可能需要根据实际情况修改)。指令名
是要执行的操作。
查询指令 (GET)
getHidMode
- 指令名:
getHidMode
- 功能: 获取当前在设置中配置的 HID 连接模式(USB 或 BLUETOOTH)。这反映的是配置值,不代表实际连接状态。
- 参数: 无
- 返回: 字符串 "USB" 或 "BLUETOOTH"。
- 测试样例:
/hid?system=getHidMode
getHidStatus
- 指令名:
getHidStatus
- 功能: 获取当前 HID 的实际连接状态。检查的状态取决于
getHidMode
返回的配置模式(如果是 USB 模式则检查 USB 连接,如果是蓝牙模式则检查蓝牙连接)。 - 参数: 无
- 返回: 字符串 "true" (表示已连接) 或 "false" (表示未连接)。
- 测试样例:
/hid?system=getHidStatus
getBatteryLevel
- 指令名:
getBatteryLevel
- 功能: 获取运行服务的设备的当前电池电量百分比。
- 参数: 无
- 返回: 整数形式的电池百分比字符串,例如 "85"。
- 测试样例:
/hid?system=getBatteryLevel
getBluetoothName
- 指令名:
getBluetoothName
- 功能: 获取运行服务的设备的蓝牙适配器名称。
- 参数: 无
- 返回: 设备的蓝牙名称字符串。
- 测试样例:
/hid?system=getBluetoothName
isCharging
- 指令名:
isCharging
- 功能: 检查运行服务的设备当前是否正在充电。
- 参数: 无
- 返回: 字符串 "true" (正在充电) 或 "false" (未充电)。
- 测试样例:
/hid?system=isCharging
getResolution
- 指令名:
getResolution
- 功能: 获取运行服务的设备的屏幕分辨率(宽度和高度)。
- 参数: 无
- 返回: JSON 格式的字符串,包含宽度和高度,例如
{"width":1080,"height":1920}
。Content-Type 为application/json
。 - 测试样例:
/hid?system=getResolution
setClipboard
- 指令名:
setClipboard
- 功能: 设置运行服务的设备的系统剪贴板内容。
- 参数:
content
(字符串): 要设置到剪贴板的文本内容。
- 返回: 字符串 "success" 或错误信息 "error: missing content parameter"。
- 测试样例:
/hid?system=setClipboard&content=你好大表哥
服务端HID API
基本URL格式:
http://127.0.0.1:8866/hid?cmd=指令名:参数1,参数2,...
127.0.0.1:8866
是服务监听的地址和端口(可能需要根据实际情况修改)。指令名
是要执行的操作。参数
是指令所需的数据,以逗号分隔。如果指令不需要参数,则省略:
及之后的部分。
键盘指令
home
- 指令名:
home
- 功能: 回到桌面。
- 参数: 无
- 测试样例:
/hid?cmd=home
home2
- 指令名:
home2
- 功能: 回到桌面
- 参数: 无
- 测试样例:
/hid?cmd=home2
back
- 指令名:
back
- 功能: 返回键
- 参数: 无
- 测试样例:
/hid?cmd=back
back1
- 指令名:
back1
- 功能: 返回键
- 参数: 无
- 测试样例:
/hid?cmd=back1
back2
- 指令名:
back2
- 功能: 返回键
- 参数: 无
- 测试样例:
/hid?cmd=back2
recents
- 指令名:
recents
- 功能: 最近任务
- 参数: 无
- 测试样例:
/hid?cmd=recents
recents2
- 指令名:
recents2
- 功能: 最近任务,解决oppo之类的特殊型号手机
- 参数: 无
- 测试样例:
/hid?cmd=recents2
key_select / key_all
- 指令名:
key_select
或key_all
- 功能: 发送 Ctrl + A 组合键(全选)。
- 参数: 无
- 测试样例:
/hid?cmd=key_select
或/hid?cmd=key_all
key_copy
- 指令名:
key_copy
- 功能: 发送 Ctrl + C 组合键(复制)。
- 参数: 无
- 测试样例:
/hid?cmd=key_copy
key_cut
- 指令名:
key_cut
- 功能: 发送 Ctrl + X 组合键(剪切)。
- 参数: 无
- 测试样例:
/hid?cmd=key_cut
key_paste
- 指令名:
key_paste
- 功能: 发送 Ctrl + V 组合键(粘贴)。
- 参数: 无
- 测试样例:
/hid?cmd=key_paste
key_del
- 指令名:
key_del
- 功能: 发送 Delete 键
- 参数: 无
- 测试样例:
/hid?cmd=key_del
key_delete
- 指令名:
key_delete
- 功能: 发送 Backspace 键
- 参数: 无
- 测试样例:
/hid?cmd=key_delete
key_enter
- 指令名:
key_enter
- 功能: 发送 Enter 键
- 参数: 无
- 测试样例:
/hid?cmd=key_enter
key_up
- 指令名:
key_up
- 功能: 发送向上箭头键
- 参数: 无
- 测试样例:
/hid?cmd=key_up
key_down
- 指令名:
key_down
- 功能: 发送向下箭头键
- 参数: 无
- 测试样例:
/hid?cmd=key_down
key_left
- 指令名:
key_left
- 功能: 发送向左箭头键
- 参数: 无
- 测试样例:
/hid?cmd=key_left
key_right
- 指令名:
key_right
- 功能: 发送向右箭头键
- 参数: 无
- 测试样例:
/hid?cmd=key_right
key_home
- 指令名:
key_home
- 功能: 光标移动到行首
- 参数: 无
- 测试样例:
/hid?cmd=key_home
key_end
- 指令名:
key_end
- 功能: 光标移动到行尾
- 参数: 无
- 测试样例:
/hid?cmd=key_end
key_undo
- 指令名:
key_undo
- 功能: 发送 Ctrl + Z 组合键(撤销)。
- 参数: 无
- 测试样例:
/hid?cmd=key_undo
key_redo
- 指令名:
key_redo
- 功能: 发送 Ctrl + Y 组合键(重做)。
- 参数: 无
- 测试样例:
/hid?cmd=key_redo
key_tab
- 指令名:
key_tab
- 功能: 发送 Tab 键
- 参数: 无
- 测试样例:
/hid?cmd=key_tab
key_print
- 指令名:
key_print
- 功能: 截图键
- 参数: 无
- 测试样例:
/hid?cmd=key_print
key_space
- 指令名:
key_space
- 功能: 发送空格键
- 参数: 无
- 测试样例:
/hid?cmd=key_space
key_esc
- 指令名:
key_esc
- 功能: 发送 Escape 键
- 参数: 无
- 测试样例:
/hid?cmd=key_esc
key
- 指令名:
key
- 功能: 发送指定的 HID 键盘码
- 参数:
keyCode
(整数): 要发送的 HID Usage ID。例如,0x4C
(十进制 76) 是 Delete 键。
- 测试样例:
/hid?cmd=key:76
(发送 Delete 键)
key_combo
- 指令名:
key_combo
- 功能: 发送组合键
- 参数:
modifier
(整数): 0:没有控制键 1:ctrl键 2:alt键 4:shift 8:win (如果控制键需要多个,比如ctrl+alt,相加即可=3key
(整数): 普通HID键盘码mode
(整数): 按键流程分成四个步骤,控制键按下=1 ,控制+普通键同时按下=2,普通键抬起=4,控制键抬起=8,需要执行哪个步骤就相加即可,比如四个步骤都执行,则1+2+4+9=15
- 测试样例(ctrl+v):
/hid?cmd=key_combo:1,25,15
key_abc
- 指令名:
key_abc
- 功能: 输入一串英文文本字符。支持基本的 ASCII 字符(字母、数字、符号)。
- 参数:
text
(字符串): 要输入的文本内容。
- 注意: 内部会将字符映射到 HID Usage ID 和 Shift 状态。并非所有字符都支持。
- 测试样例:
/hid?cmd=key_abc:Hello World 123!
媒体与系统控制指令
power
- 指令名:
power
- 功能: 模拟按下电源键。可以模拟短按或长按。
- 参数:
- (可选)
delay
(整数): 按下和释放之间的延迟(毫秒)。如果提供此参数,则模拟长按。
- (可选)
- 测试样例 (短按):
/hid?cmd=power
- 测试样例 (长按 1 秒):
/hid?cmd=power:1000
volUp
- 指令名:
volUp
- 功能: 发送音量增加键
- 参数: 无
- 测试样例:
/hid?cmd=volUp
volDown
- 指令名:
volDown
- 功能: 发送音量减小键
- 参数: 无
- 测试样例:
/hid?cmd=volDown
volClose
- 指令名:
volClose
- 功能: 发送 Mute 媒体控制命令(静音)。
- 参数: 无
- 测试样例:
/hid?cmd=volClose
设备控制指令
reboot
- 指令名:
reboot
- 功能: 重启板子
- 参数: 无
- 测试样例:
/hid?cmd=reboot
led
- 指令名:
led
- 功能: 控制设备上的 LED 状态
- 参数:
ledState
(整数): LED 状态,0
表示关闭,1
表示开启。
- 测试样例 (开启 LED):
/hid?cmd=led:1
- 测试样例 (关闭 LED):
/hid?cmd=led:0
charge
- 指令名:
charge
- 功能: 控制设备的充电状态
- 参数:
chargeState
(整数): 充电状态,0
表示关闭,1
表示开启/允许。
- 测试样例 (允许充电):
/hid?cmd=charge:1
- 测试样例 (禁止充电):
/hid?cmd=charge:0
setbt
- 指令名:
setbt
- 功能: 设置蓝牙电量
- 参数:
btMode
(整数): 要设置的剩余电量
- 测试样例:
/hid?cmd=setbt:50
setname
- 指令名:
setname
- 功能: 设置设备的蓝牙广播名称
- 参数:
name
(字符串): 新的设备名称,尽量不要超过12位
- 测试样例:
/hid?cmd=setname:BirdisGood
setmode
- 指令名:
setmode
- 功能: 设置设备的工作模式,0:双开,1:单开otg,2:单开蓝牙
- 参数:
mode
(整数): 要设置的工作模式代码。
- 测试样例:
/hid?cmd=setmode:2
setxy
- 指令名:
setxy
- 功能: 设置屏幕分辨率,用于旧版本fish设备
- 参数:
width
(整数): 屏幕宽度(像素)。height
(整数): 屏幕高度(像素)。
- 测试样例:
/hid?cmd=setxy:1080,2400
触摸与滑动指令
坐标说明:
* 坐标可以是绝对像素值,也可以是百分比(0.0 到 1.0)。
* 通过 isPercent
参数控制坐标类型。isPercent=0
(默认)表示像素,isPercent=1
表示百分比。
* 百分比坐标会根据 setxy
设置的或设备默认的分辨率进行转换。
touchDown
- 指令名:
touchDown
- 功能: 模拟手指按下屏幕。
- 参数:
x
(浮点数): 按下点的 X 坐标。y
(浮点数): 按下点的 Y 坐标。finger
(整数, 可选, 默认 0): 手指 ID (用于多点触控)。isPercent
(整数, 可选, 默认 0):1
表示 x, y 是百分比,0
表示像素。
- 测试样例 (像素):
/hid?cmd=touchDown:100,200
- 测试样例 (百分比, 手指1):
/hid?cmd=touchDown:0.5,0.8,1,1
touchMove
- 指令名:
touchMove
- 功能: 模拟手指在屏幕上移动(需先 touchDown)。
- 参数:
x
(浮点数): 移动到的 X 坐标。y
(浮点数): 移动到的 Y 坐标。finger
(整数, 可选, 默认 0): 手指 ID。isPercent
(整数, 可选, 默认 0):1
表示 x, y 是百分比,0
表示像素。
- 测试样例 (像素):
/hid?cmd=touchMove:150,250
- 测试样例 (百分比):
/hid?cmd=touchMove:0.6,0.85,0,1
touchUp
- 指令名:
touchUp
- 功能: 模拟手指抬起。
- 参数:
- (可选)
x
(浮点数): 抬起点的 X 坐标。如果省略,使用最后记录的坐标。 - (可选)
y
(浮点数): 抬起点的 Y 坐标。如果省略,使用最后记录的坐标。 finger
(整数, 可选, 默认 0): 手指 ID。isPercent
(整数, 可选, 默认 0):1
表示 x, y 是百分比,0
表示像素。
- (可选)
- 测试样例 (指定坐标):
/hid?cmd=touchUp:150,250
- 测试样例 (使用最后坐标):
/hid?cmd=touchUp
- 测试样例 (百分比, 手指1):
/hid?cmd=touchUp:0.6,0.85,1,1
tap
- 指令名:
tap
- 功能: 模拟一次或多次点击(按下 -> 等待 -> 抬起 -> 等待)。
- 参数:
x
(浮点数): 点击位置的 X 坐标。y
(浮点数): 点击位置的 Y 坐标。delay1
(整数, 可选, 默认 30): 按下后到抬起前的延迟(毫秒)。delay2
(整数, 可选, 默认 30): 抬起后到下一次点击(如果是多次点击)或结束前的延迟(毫秒)。times
(整数, 可选, 默认 1): 点击次数。finger
(整数, 可选, 默认 0): 手指 ID。isPercent
(整数, 可选, 默认 0):1
表示 x, y 是百分比,0
表示像素。
- 测试样例 (单次点击):
/hid?cmd=tap:424,434
- 测试样例 (双击, 百分比坐标):
/hid?cmd=tap:0.5,0.5,50,50,2,0,1
swipe
- 指令名:
swipe
- 功能: 模拟滑动操作,可以包含复杂的参数控制滑动行为,并可选择性地让另一根手指在滑动过程中进行点击。
- 参数 (按顺序):
x1
(浮点数): 起点 X 坐标。y1
(浮点数): 起点 Y 坐标。x2
(浮点数): 终点 X 坐标。y2
(浮点数): 终点 Y 坐标。isPercent
(整数, 可选, 默认 0):1
表示坐标是百分比,0
表示像素。 (对应IS_PERCENT_INDEX
)accelMode
(整数, 可选, 默认0): 加速模式。 0表示速度是慢快慢 1表示速度是快慢 2表示速度是慢快accelFactor
(浮点数, 可选,默认2): 速度比,就是最快的速度比最慢的是2numSteps
(整数, 可选, 默认0): 覆盖滑动步数。 0则随机步数initialSleep
(整数, 可选, 默认0): 初始按下后的等待时间 (ms)。 如果不为0则按你设置的,如果为0则慢快慢和慢快模式下,随机140到200毫秒 , 快慢模式下随机5到15毫秒finalSleep
(整数, 可选, 默认0): 抬起后的等待时间 (ms)。 如果不为0则按你设置的,如果为0则慢快慢和快慢模式下,随机200到250毫秒,慢快模式下随机1到5毫秒stepSleepBase
(整数, 可选, 默认0): 每步之间的基础等待时间 (ms)。 如果为0则5到15毫秒之间随机touchUpCount
(整数, 可选, 默认1): 滑动结束时弹起次数swipeFinger
(整数, 可选, 默认0): 执行滑动的手指 IDcurveType
(整数, 可选, 默认2): 滑动曲线类型。 0表示直线 1表示一个弯曲 2表示两个弯曲的曲线curveOffset1
(整数, 可选, 默认70): 曲线第一个弯曲的最大幅度 70像素curveOffset2
(整数, 可选, 默认70): 曲线第二个弯曲的最大幅度 70像素tapFinger
(整数, 可选, 默认 1): 如果需要在滑动同时进行点击,指定点击的手指 ID (必须与swipeFinger
不同)。tapSequence
(字符串, 可选, 默认 ""): 描述点击时序和位置的序列字符串x-y-delay|x-y-delay| 这样的格式
- 测试样例 (基本滑动):
/hid?cmd=swipe:100,500,800,500
- 测试样例 (百分比滑动, 50步):
/hid?cmd=swipe:0.1,0.5,0.9,0.5,1,0,0,50
(速度慢点) - 测试样例 (百分比滑动, 慢快模式一般用于滑动视频):
/hid?cmd=swipe:0.1,0.5,0.9,0.5,1,2,5,10,0,5,4
(带点惯性,速度快) 参数,1,2,5,10,0,5,4 1表示百分比 , 2表示慢快模式,5表示加速度 , 10表示步数, 0表示初始延时用默认 5表示结束延时用5毫秒 4表示滑动中的延时用4毫秒
其他指令
reg
- 指令名:
reg
- 功能: 用于Fishhid设备激活
- 参数:
code
(字符串): 激活码 - 测试样例:
/hid?cmd=reg:激活码