鱼叉助手 版本号:v1.0.7
├─dome1 (以main.lua为主的项目名称,暂不支持中文命名)
│ ├─main.lua (【必选】主程序,当前位置的目录名称 dome1 为项目名称)
│ ├─abc (【可选】自定义目录 abc)
│ │ ├─a.txt
│ │ ├─b.lua (lua文件调用方法:require("abc.b"))
│ │ └─等等
│ ├─abcd.lua (【可选】main.lua同级自定义文件lua文件调用方法:require("abcd"))
│ ├─socket (【必选】网络通讯 Luasocket 库,文档内下载)
│ │ ├─ftp.lua (lua文件调用方法:require("socket.ftp"))
│ │ ├─headers.lua (lua文件调用方法:require("socket.headers"))
│ │ ├─http.lua (lua文件调用方法:require("socket.http"))
│ │ ├─ltn12.lua (lua文件调用方法:require("socket.ltn12"))
│ │ ├─mbox.lua (lua文件调用方法:require("socket.mbox"))
│ │ ├─mime.lua (lua文件调用方法:require("socket.mime"))
│ │ ├─smtp.lua (lua文件调用方法:require("socket.smtp"))
│ │ ├─socket.lua (lua文件调用方法:require("socket.socket"))
│ │ ├─tp.lua (lua文件调用方法:require("socket.tp"))
│ │ └─url.lua (lua文件调用方法:require("socket.url"))
│ ├─UI.json (【可选】可视化UI参数文件,兼容叉叉助手格式)
│ ├─Mouse.lua (【必选】物联网鼠标 Lua 库,文档内下载)
│ └─JSON.lua (【必选】 JSON Lua库,文档内下载)
│
├─dome2 (其他项目示例)
│ └─main.lua
├─dome3 (其他项目示例)
│ └─main.lua
├─dome4 (其他项目示例)
│ └─main.lua
关于app出现闪退问题(2022/6/21):重新扫码安装APP
关于 无法验证应用 需要互联网连接以验证是否信任开发者 问题:
关于app第一次安装使用问题: 第一次安装,一定要等录屏倒计时开始,弹出网络授权窗口,允许网络服务,才可以关闭录屏界面。否则iOS就直接默认脚本是不允许网络。如果没有网络授权弹窗,必须手动去手机卸载app,清空所有数据,不能用爱思助手去卸载。重装以后,再重复前面的操作,第一次一定要有弹窗,才说明脚本可以启动网络服务。(这是苹果的坑,第一次使用不要点太快。有的操作太快,录屏还没倒计时就关闭了录屏返回了到App,导致网络权限弹窗无法正常显示,就以为App有问题了)
VScode开发问题:
关于 VScode 开发时无法搜索到 App 解决方案1:
* 网络授权:iOS必须连接WIFI才会有授权弹窗,IOS使用以太网转换器联网无法开发。(2023/4/7)
关于 VScode 开发时无法运行脚本:查看代码问题诊断信息,代码有红色标记错误则无法正常调试
vscode多次运行测试,会导致App截图卡顿,运行卡顿,重启录屏就可以解决。
关于 app 无法安装:app需要签名才可以安装
关于 录屏 运行脚本闪退问题:检查代码是否内存溢出,代码质量差会导致程序异常
关于 主页界面 不是纯白问题:关闭手机深夜模式。
关于 VScode 取色器不显示生成格式问题:
如何使用鱼叉助手的项目链接功能?
1、打开vscode 鱼叉集成环境会自动设置电脑为局域网服务器(如果自己有服务器则不需要使用vscode)
2、测试本地服务器是否在线,在浏览器输入电脑的本地ip,会显示vscode本地所在目录则说明服务器启动成功。
3、如果关闭vscode,服务器功能则会自动关闭。
4、将项目整个文件夹打包成zip格式(vscode文件列表右上角也有一个发布功能,自动生成当前项目为zip,并保存到服务器目录内)
5、将zip包名改为与项目不同名(因为点击运行代码,会自动删除同名zip),改名后才可以避免被删除。
6、项目链接格式:http:// 电脑ip(或服务器ip) + 文件名.zip
7、如何测试项目链接可正常运行,把项目链接输入到电脑浏览器(或者手机浏览器),能直接下载到服务器上面的zip文件则说明成功。
8、鱼叉助手APP必须关闭开发模式按钮。
9、鱼叉助手APP打开项目链接按钮则会每次启动录屏都会优先删除原有的代码,再去自动下载zip,注意:如果服务器不在线,下载失败则不会运行代码,并且原来已经下载的代码被删除。
10、鱼叉助手APP关闭项目链接按钮则会直接运行已经下载好的zip。
物联网代码托管
例子:
{"ID":"12345678","APIkey":"xzzcxk5ldsGsX00LzdELVEPWo="}
仅支持部分系统
socket.lua 扩展库下载
Mouse.lua 扩展库下载 物联网鼠标API文档
UI.json UI示例
参数 | 类型 | 说明 |
---|---|---|
appid | string | 兼容叉叉,暂时无用 |
rotate | number | 0 - 竖屏,1 - Home在右, |
参数说明:
返回值 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
语法:
init(appid, rotate)
脚本示例:
--开发方向为竖屏
init("0", 0);
--开发方向为横屏 home 在右
init("0", 1);
受 init 函数影响的函数:
参数 | 类型 | 说明 |
---|---|---|
left, top | number |
[必填] 寻找区域左上角顶点屏幕坐标 |
right, bottom | number |
[必填] 寻找区域右下角顶点屏幕坐标 |
x0,y0 | number |
[必填] 起始点坐标值,填写0,0时使用相对坐标体系,填非0,0的绝对坐标自动换算为相对坐标 |
color | number |
[必填] 起始点颜色的十六进制颜色值 |
x1,y1 | number |
[必填] 偏移位置的坐标值 |
color1 | number |
[必填] 偏移位置需要匹配颜色的十六进制颜色值 |
degree1 | number | [选填] 偏移位置找色相似度,范围:1 ~ 100,当是100时为完全匹配 |
offset1 | number | [选填] 偏移位置找色偏色值,十六进制颜色值,当是0x000000时为完全匹配,当大于0时degree1自动设置为100 |
degree | number | [选填] 全局找色相似度,范围:1 ~ 100,当是100时为完全匹配,默认为95 |
hdir | number | [选填] 水平搜索方向,0表示从左到右,1表示从右到左,默认为0 |
vdir | number | [选填] 垂直搜索方向,0表示从上到下,1表示从下到上,默认为0 |
priority | number | [选填] 搜索优先级,0表示水平优先,1表示垂直优先,默认为0 |
参数说明:
返回值 | 类型 | 说明 |
---|---|---|
x, y | number |
[成功] 返回颜色第一个坐标,[失败] 返回 -1,-1 |
关于搜索方向:
hdir | vdir | priority | 区域搜索路径 |
---|---|---|---|
0 | 0 | 0 | 左上角 → 右上角 → 左下角 → 右下角 |
0 | 0 | 1 | 左上角 → 左下角 → 右上角 → 右下角 |
0 | 1 | 0 | 左下角 → 右下角 → 左上角 → 右上角 |
0 | 1 | 1 | 左下角 → 左上角 → 右下角 → 右上角 |
1 | 0 | 0 | 右上角 → 左上角 → 右下角 → 左下角 |
1 | 0 | 1 | 右上角 → 右下角 → 左上角 → 左下角 |
1 | 1 | 0 | 右下角 → 左下角 → 右上角 → 左上角 |
1 | 1 | 1 | 右下角 → 右上角 → 左下角 → 左上角 |
语法:
local x, y = findColor(
{left, top, right, bottom},
"x0|y0|color0,x1|y1|color1,x2|y2|color2,...",
degree,
hdir,
vdir,
priority
)
local x, y = findColor(
{left, top, right, bottom},
"x0|y0|color0,x1|y1|color1(|degree1),x2|y2|color2(-offset2),...",
degree,
hdir,
vdir,
priority
)
local x, y = findColor(
{left, top, right, bottom},
{
{x = x0,y = y0,color = color0},
{x = x1,y = y1,color = color1,(degree = degree1)},
{x = x2,y = y2,color = color2,(offset = offset2)},
...
},
degree,
hdir,
vdir,
priority
)
语法说明:
脚本示例:
--第一个坐标(0,0),系统则判断为相对坐标
local x, y = findColor(
{0, 0, 639, 959},
"0|0|0x181F85,29|1|0x00BBFE|90,103|-4|0x0B6BBE-0x050505,65|9|0x150972"
)
local x, y = findColor(
{0, 0, 639, 959},
{
{x = 0, y = 0, color = 0x181F85},
{x = 29, y = 1, color = 0x00BBFE, degree = 90},
{x = 103, y = -4, color = 0x0B6BBE, offset = 0x050505},
{x = 65, y = 9, color = 0x150972}
})
--第一个坐标(268,802)非(0,0)则系统判断为绝对坐标,会自动转换成(0,0),再根据第一个坐标对其他位置进行相对坐标转换
local x, y = findColor(
{0, 0, 639, 959},
"268|802|0x181F85,297|803|0x00BBFE|90,371|798|0x0B6BBE-050505,333|811|0x150972"
)
local x, y = findColor(
{0, 0, 639, 959},
{
{x = 268, y = 802, color = 0x181F85},
{x = 297, y = 803 color = 0x00BBFE, degree = 90},
{x = 371, y = 798 color = 0x0B6BBE, offset = 0x050505},
{x = 333, y = 811 color = 0x150972}
})
--如果设置偏色,会优先使用偏色值作为相似度
local x, y = findColor(
{0, 0, 749, 1333},
"0|0|0xf12735-0x202002,387|-553|0x3eeb5d-0x555555,268|-148|0x2178fa",
95, 0, 0, 0)
--如果设置单点相似度80,会优先使用80
local x, y = findColor(
{0, 0, 749, 1333},
"0|0|0xf12735|80,387|-553|0x3eeb5d|75,268|-148|0x2178fa",
95, 0, 0, 0)
提高 findColor 函数找色效率:
参数 | 类型 | 说明 |
---|---|---|
参考 findColor | 参考 findColor | 参考 findColor |
返回值 | 类型 | 说明 |
---|---|---|
point | table |
[成功] 返回所有符合条件的参照点的坐标,最多99个,[失败] 返回空表 { } |
脚本示例:
local point = findColors(
{0, 0, 639, 959},
"268|802|0x181F85,297|803|0x00BBFE|90,371|798|0x0B6BBE-050505,333|811|0x150972"
)
--返回的 table 为key-value的形式,如下:
--成功
point = {
{x = 100,y = 110},
{x = 200,y = 210},
{x = 300,y = 310},
...
}
--失败
point = {}
提高 findColors 函数找色效率:
参数 | 类型 | 说明 |
---|---|---|
x,y | number | 获取颜色值的屏幕坐标 |
返回值 | 类型 | 说明 |
---|---|---|
color | number | 该点的十进制颜色值RGB |
语法:
local color = getColor(x, y)
脚本示例:
if getColor(100, 100) == 0xffffff then
touchDown(1, 100, 100)
mSleep(50)
touchUp(1, 100, 100)
end
注意事项:
参数 | 类型 | 说明 |
---|---|---|
x,y | number | 获取颜色值的屏幕坐标 |
返回值 | 类型 | 说明 |
---|---|---|
r,g,b | number | 该点的十进制颜色值RGB |
语法:
local r, g, b = getColorRGB(x, y)
脚本示例:
local r,g,b = getColorRGB(100,100); --获取该点的R,G,B值
if r > 200 and b < 150 then --判断颜色强度
touchDown(1,100,100)
mSleep(50)
touchUp(1,100,100)
end
function isColor(x,y,c,s) --x,y为坐标值,c为颜色值,s为相似度,范围0~100。
local fl,abs = math.floor,math.abs
s = fl(0xff*(100-s)*0.01)
local r,g,b = fl(c/0x10000),fl(c%0x10000/0x100),fl(c%0x100)
local rr,gg,bb = getColorRGB(x,y)
if abs(r-rr)<s and abs(g-gg)<s and abs(b-bb)<s then
return true
end
return false
end
if isColor(963, 961, 0x7b593f,90) then
touchDown(963, 961)
mSleep(50)
touchUp(963, 961)
end
function isColors(color,s) --固定坐标 多点比色
s = s or 95 --相似度
s = math.floor(0xff*(100-s)*0.01) --浮点数
for var = 1, #color do
local lr,lg,lb = getColorRGB(color[var][1],color[var][2]) --游戏颜色
local rgb = color[var][3] --脚本颜色
local r = math.floor(rgb/0x10000) --脚本颜色RGB
local g = math.floor(rgb%0x10000/0x100)
local b = math.floor(rgb%0x100)
if math.abs(lr-r) > s or math.abs(lg-g) > s or math.abs(lb-b) > s then --绝对值
return false
end
end
return true
end
--使用
local color = {
{540,498,0xffffff},
{519,235,0x0a67c9},
{607,238,0x0d6fd2}
}
keepScreen(true);--开 搭配保持屏幕,可提高效率
if isColors(color,95) then
print("找到")
end
keepScreen(false);--关
注意事项:
参数 | 类型 | 说明 |
---|---|---|
bool | boolean | 启动 = true ,关闭 = false |
返回值 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
语法:
keepScreen(bool)
脚本示例:
keepScreen(true); --停止截图,保留第一次截图
for y = 1, 640, 10 do
for x = 1, 960, 10 do
--格式化颜色为十六进制文本
local color = string.format("%X", getColor(x, y));
--输出
print("("..x..", "..y..") Color: "..color..".");
end
end
keepScreen(false); --恢复截图
受 keepScreen 影响函数:
参数 | 类型 | 说明 |
---|---|---|
rect | table |
[必填] {x1, y1, x2, y2} 屏幕二值化的识别范围,越准确越好 |
diff | table |
[必填] {"颜色1-偏色1", "颜色-偏色2", ...} 色值范围,可以提供多个,供二值化使用 |
返回值 | 类型 | 说明 |
---|---|---|
colorTbl | table | 图像二值化后的table,0 代表黑色,1 代表白色 |
语法:
local colorTbl = binarizeImage({
rect = {x1, y1, x2, y2},
diff = {diff}
})
脚本示例:
local colorTbl = binarizeImage({
rect = {30, 80, 53, 101},
diff = {"0xf7d363-0x1f1f1f", "0xefaa29-0x1f1f1f"}
})
-- 使用打印表函数输出colorTbl结果
ptable(colorTbl)
--[[
colorTbl格式类似这样:
{
{0,0,0,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,1,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,1,1,0,0,0,0,0,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,1,1,0,1,1,0,0,0,0,0},
{1,0,1,1,0,0,0,0,1,1,1,0,0,0},
{0,1,0,1,0,0,0,0,0,0,1,1,0,0},
{1,1,1,0,0,0,0,0,0,0,1,1,0,0},
{1,0,0,0,0,0,0,0,0,0,1,0,1,0},
{1,0,0,0,0,0,0,0,0,0,0,1,1,0},
{1,0,0,0,0,0,0,0,0,0,0,1,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,1,0},
{1,0,0,0,0,0,0,0,0,0,0,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,1,0,1},
{1,1,0,0,0,0,0,0,0,0,0,1,1,0},
{1,0,1,0,0,0,0,0,0,0,1,0,0,0},
{0,1,1,1,0,1,0,0,1,1,1,0,0,0},
{0,0,0,1,1,1,0,1,1,0,0,0,0,0},
{0,0,0,0,0,0,1,0,1,0,0,0,0,0}
}
]]
参数 | 类型 | 说明 |
---|---|---|
interval | number | 单位为毫秒,脚本暂停执行的时间长度 |
返回值 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
语法:
mSleep(interval)
脚本示例:
--延迟5秒
mSleep(5000)
参数 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
返回值 | 类型 | 说明 |
---|---|---|
UUID | string | App本地识别码(卸载重置,非UDID) |
语法:
local UUID = getUUID()
参数 | 类型 | 说明 |
---|---|---|
content | string | 需要显示的日志内容 |
返回值 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
语法:
sysLog(contents)
脚本示例:
sysLog("hello world!")
参数 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
返回值 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
脚本示例:
print("1")
lua_exit() --结束
print("2") --无法到达
参数 | 类型 | 说明 |
---|---|---|
str | string | 字符串 |
返回值 | 类型 | 说明 |
---|---|---|
base64 | string | Base64 字符串 |
语法:
local base64 = base64encode(str)
脚本示例:
local base64 = base64encode("hello")
print(base64) -- aGVsbG8=
参数 | 类型 | 说明 |
---|---|---|
base64 | string | Base64 字符串 |
返回值 | 类型 | 说明 |
---|---|---|
str | string | 字符串 |
语法:
local str = base64decode(base64)
脚本示例:
local str = base64decode("aGVsbG8=")
print(str) -- hello
参数 | 类型 | 说明 |
---|---|---|
str | string | 字符串 |
key | string | 加密密钥 |
返回值 | 类型 | 说明 |
---|---|---|
aes_str | string | AES 加密密文 |
语法:
local aes_str = aesEncrypt(str,key)
脚本示例:
local aes_str = aesEncrypt("hello","abc")
print(aes_str) --d1QG4T2tivoi0Kiu3NEmZQ==
参数 | 类型 | 说明 |
---|---|---|
aes_str | string | AES 加密密文 |
key | string | 加密密钥 |
返回值 | 类型 | 说明 |
---|---|---|
str | string | 字符串 |
语法:
local str = aesDecrypt(aes_str,key)
脚本示例:
local str = aesDecrypt("d1QG4T2tivoi0Kiu3NEmZQ==","abc")
print(str) --hello
使用说明:
参数 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
返回值 | 类型 | 说明 |
---|---|---|
str | string | UI编辑框文本内容 |
脚本示例:
local YXZHUSHOU_UI_TEXT = showUI()
v1.0.7 UI bug问题将在 v1.0.8 修复
问题1:UI多选框无法选择第一个参数,临时解决方案:第一个选项直接设置无。
问题2:UI下拉框无法正确返回参数编号,临时解决方案:下拉框使用相同名称选项,请使用相同序号排列,否则识别到其他位置,返回参数则是其他序号
要特别注意的是:如果存在Page控件,那么别的同级控件都就只能是Page控件,否则会导致UI解析出错,返回长度为0的字符串作为结果。
说明:生成一个独立页面到UI上,该页面可自由添加若干个控件,在上一级页面有Tab的页面索引,可点击切换页面,一共有三个属性:
key | 类型 | 说明 |
---|---|---|
text | string | Tab标题 |
type | string | Page类型 |
views | Array | 控件容器 |
除了标签 Label,页面Page 其余四种控件均存在文本型返回值,按照定义时的id,会返回以id为key的 json 类型数据。单选框返回当前选中项的编号;编辑框返回其中的内容;多选框返回 当前选中项的编号(从 0 开始),多个选项以 @ 分割。如:3@5 表示多选框组编号为 3 和 5 的两个选项已被选中。
参数 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
返回值 | 类型 | 说明 |
---|---|---|
width | number | 获取到的屏幕竖直(Home 键在下方时)宽度 |
height | number | 获取到的屏幕竖直(Home 键在下方时)高度 |
语法:
local width,height = getScreenSize()
脚本示例:
local width,height = getScreenSize()
print("竖屏 宽 = " .. width)
print("竖屏 高 = " .. height)
参数 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
返回值 | 类型 | 说明 |
---|---|---|
iPhone | string | 手机型号 |
语法:
local iPhone = getMobilephoneType()
脚本示例:
local iPhone = getMobilephoneType()
print(iPhone)
--iPhone 2G
--iPhone 3G
--iPhone 3GS
--iPhone 4
--iPhone 4S
--iPhone 5
--iPhone 5c
--iPhone 5s
--iPhone 6 Plus
--iPhone 6
--iPhone 6s
--iPhone 6s Plus
--iPhone SE
--iPhone 7
--iPhone 7 Plus
--iPhone 8
--iPhone 8 Plus
--iPhone X
--iPhone XR
--iPhone XS
--iPhone XS Max
--iPhone 11
--iPhone 11 Pro
--iPhone 11 Pro Max
--iPod Touch 1G
--iPod Touch 2G
--iPod Touch 3G
--iPod Touch 4G
--iPod Touch 5G
--iPad 1G
--iPad 2
--iPad Mini 1G
--iPad 3
--iPad 4
--iPad Air
--iPad Mini 2G
--iPad Mini 3
--iPad Mini 4
--iPad Air 2
--iPad Pro 9.7
--iPad Pro 12.9
--iPhone Simulator //模拟器
仅支持部分系统
说明:粘贴失败则表示不支持该系统( 实测暂不支持系统:iOS15 )
参数 | 类型 | 说明 |
---|---|---|
text | string | 文本内容 |
返回值 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
语法:
WriteClipboard(text)
脚本示例:
--粘贴失败则表示不支持该系统( 实测暂不支持系统:iOS15 )
WriteClipboard("hello") --写入剪切板
Mouse:KeyboardClick({"Win","v"}); --粘贴
LuaSocket 扩展库下载
POST 示例:
local socket = require("socket.socket") --需要下载socket 扩展库
local http = require("socket.http")
local request_body = [[login=user&password=123]]
local response_body = {}
local res, code, response_headers =
http.request {
url = "http://httpbin.org/post", --网址
method = "POST", --协议
headers = { --请求头部
["Content-Type"] = "application/x-www-form-urlencoded",
["Content-Length"] = #request_body
},
source = ltn12.source.string(request_body), --请求数据
sink = ltn12.sink.table(response_body)
}
print(res)
print(code)
if type(response_headers) == "table" then
for k, v in pairs(response_headers) do
print(k, v)
end
end
print("Response body:")
if type(response_body) == "table" then
print(table.concat(response_body)) --服务器数据返回
else
print("Not a table:", type(response_body))
end
物联网鼠标 POST 示例:
local socket = require("socket.socket") --需要下载socket 扩展库
local http = require("socket.http")
local request_body = '{"API":"KeyboardClick","data":["l"]}' --键盘输入 l
local response_body = {}
mSleep(10000) --10秒后
for i = 1,10 do --发送10次命令
local res, code, response_headers =
http.request {
url = "http://api.heclouds.com/cmds?device_id=123456782", --设备服务器ID
method = "POST",
headers = {
["Content-Type"] = "application/json",
["Content-Length"] = #request_body,
["api-key"] = "Q=hxaabvcdfghSb4HvZM7fNX8=", --设备服务器api-key
},
source = ltn12.source.string(request_body),
sink = ltn12.sink.table(response_body)
}
end
Mouse.lua 扩展库下载
开发教程 视频教程
参数 | 类型 | 说明 |
---|---|---|
io | number | 鼠标 io |
device_id | string | 物联网设备ID |
key | number | 物联网设备api-key |
IP | string | 局域网IP地址 |
Log | number | 日志功能 开启:true 关闭:false |
返回值 | 类型 | 说明 |
---|---|---|
nil | nil | nil |
脚本示例:
local Mouse = require("Mouse")
--例子1
Mouse:new({
device_id = "896539182", --物联网鼠标 设备服务器ID
key = "O3OdFlHoJCRtdZChXIbGVc87Ym0=", --物联网鼠标 设备服务器api-key
io = 1 -- 默认1号鼠标
})
--例子2
Mouse:new({
IP = "192.168.3.3", --局域网IP地址
io = 2 -- 默认2号鼠标
})
函数说明:一直按住不放,需要搭配 Mouse:MouseUp 鼠标抬起
玩法说明:一对一鼠标无需设置 io,一对二、一对三需要设置 io 进行信号输出切换
开发教程 视频教程
参数 | 类型 | 说明 |
---|---|---|
io | number | 鼠标 io 口(默认:1),ESP8266(1),ESP32(0/1/2) |
click | string | "左键"(默认)、"中键"(滚轮键)、"右键" |
脚本示例:
--鼠标按住
Mouse:MouseDown();
函数说明:从当前鼠标位置开始偏移像素点
玩法说明:一对一鼠标无需设置 io,一对二、一对三需要设置 io 进行信号输出切换
ESP8266物联网鼠标电脑串口调试 视频教程
开发教程 视频教程
参数 | 类型 | 说明 |
---|---|---|
io | number | 鼠标 io 口(默认:1),ESP8266(1),ESP32(0/1/2) |
x | number | 水平相对移动 (负数 = 向左,正数 = 向右) |
y | number | 垂直相对移动 (负数 = 向上,正数 = 向下) |
z | number | 滚轮滚动 (负数 = 向上,正数 = 向下) 滚轮演示教程 |
脚本示例:
--鼠标相对移动
Mouse:MouseMove({x = -30,y = -30});
函数说明:抬起,需要搭配 MouseDown 鼠标按下
玩法说明:一对一鼠标无需设置 io,一对二、一对三需要设置 io 进行信号输出切换
开发教程 视频教程
参数 | 类型 | 说明 |
---|---|---|
io | number |
版本号:ESP32 v1.0.5 鼠标 io 口(默认:1),ESP8266(1),ESP32(0/1/2)io说明
|
脚本示例:
--鼠标抬起
Mouse:MouseUp();
函数说明:按下后开始计时,自动抬起
玩法说明:一对一鼠标无需设置 io,一对二、一对三需要设置 io 进行信号输出切换
参数 | 类型 | 说明 |
---|---|---|
io | number |
版本号:ESP32 v1.0.5 鼠标 io 口(默认:1),ESP8266(1),ESP32(0/1/2)io说明
|
sleep | number | 单位:毫秒 (1000 = 1秒) |
click | string |
版本号:ESP32 v1.0.5 "左键"(默认)、"中键"(滚轮键)、"右键" |
脚本示例:
--鼠标单击/鼠标长按
Mouse:MouseClick({sleep = 5000});--5秒
函数说明:x,y 起点坐标,x1,y1 终点坐标
玩法说明:一对一鼠标无需设置 io,一对二、一对三需要设置 io 进行信号输出切换
开发教程 视频教程
参数 | 类型 | 说明 |
---|---|---|
io | number |
版本号:ESP32 v1.0.5 鼠标 io 口(默认:1),ESP8266(1),ESP32(0/1/2)io说明
|
x | number | 起点x |
y | number | 起点y |
x1 | number | 终点x |
y1 | number | 终点y |
click | string |
版本号:ESP32 v1.0.5 "左键"(默认)、"中键"(滚轮键)、"右键" |
脚本示例:
--滑动
Mouse:MouseSlide({x = 365, y = 867, x1 = 370, y1 = 266});
函数说明:模拟键盘输入,最多支持同时按下 6 个键
玩法说明:一对一鼠标无需设置 io,一对二、一对三需要设置 io 进行信号输出切换
开发教程 视频教程
参数 | 类型 | 参数1 |
---|---|---|
io | number |
版本号:ESP32 v1.0.5 鼠标 io 口(默认:1),ESP8266(1),ESP32(0/1/2)io说明
|
Keyboard1 | string | 键盘值(最多6个) |
Keyboard2 | string | 键盘值(最多6个) |
Keyboard3 | string | 键盘值(最多6个) |
Keyboard4 | string | 键盘值(最多6个) |
Keyboard5 | string | 键盘值(最多6个) |
Keyboard6 | string | 键盘值(最多6个) |
脚本示例:
--键盘输出(默认:1)
Mouse:KeyboardClick({"k"}); --输入小写k
Mouse:KeyboardClick({"K"}); --输入大写k
Mouse:KeyboardClick({"Shift","k"}); --输入大写k
Mouse:KeyboardClick({"Space"}); --输入空格键
Mouse:KeyboardClick({"\\"}); --反斜杠 \
Mouse:KeyboardClick({"\'"}); --单引号 '
Mouse:KeyboardClick({"?"}); --问号
Mouse:KeyboardClick({"Win","c"}); --Mac、iOS 复制
Mouse:KeyboardClick({"Win","v"}); --Mac、iOS 粘贴
Mouse:KeyboardClick({"Ctrl","c"}); --Windows 复制
Mouse:KeyboardClick({"Ctrl","v"}); --Windows 粘贴
函数说明:初始化鼠标位置到左上角后开始偏移像素点
玩法说明:一对一鼠标无需设置 io,一对二、一对三需要设置 io 进行信号输出切换
开发教程 视频教程
参数 | 类型 | 说明 |
---|---|---|
io | number |
版本号:ESP32 v1.0.5 鼠标 io 口(默认:1),ESP8266(1),ESP32(0/1/2)io说明
|
x | number | 水平绝对移动 |
y | number | 垂直绝对移动 |
click | string |
版本号:ESP32 v1.0.5 "左键"(默认)、"中键"(滚轮键)、"右键" |
脚本示例:
--鼠标移动
Mouse:touchMove({x = 639, y = 1245});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。