ms-vite-plugin 1.4.49 → 1.4.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/build.js +1 -1
  2. package/dist/cli.js +1 -1
  3. package/dist/mcp/doc-tools.js +1 -1
  4. package/dist/mcp/docs-service.js +1 -1
  5. package/dist/mcp/types.d.ts +1 -1
  6. package/dist/mcp/types.js +1 -1
  7. package/dist/project.js +1 -1
  8. package/docs/AGENTS.md +3 -2
  9. package/docs/SKILL.md +2 -1
  10. package/docs/apilua/action.md +1013 -0
  11. package/docs/apilua/appleocr.md +281 -0
  12. package/docs/apilua/cloud.md +183 -0
  13. package/docs/apilua/config.md +181 -0
  14. package/docs/apilua/cryptoUtils.md +253 -0
  15. package/docs/apilua/device.md +485 -0
  16. package/docs/apilua/dotocr.md +230 -0
  17. package/docs/apilua/file.md +554 -0
  18. package/docs/apilua/global.md +654 -0
  19. package/docs/apilua/hid.md +1126 -0
  20. package/docs/apilua/hotUpdate.md +167 -0
  21. package/docs/apilua/http.md +427 -0
  22. package/docs/apilua/image.md +1177 -0
  23. package/docs/apilua/ime.md +283 -0
  24. package/docs/apilua/logger.md +294 -0
  25. package/docs/apilua/media.md +283 -0
  26. package/docs/apilua/mysql.md +445 -0
  27. package/docs/apilua/netCard.md +224 -0
  28. package/docs/apilua/node.md +264 -0
  29. package/docs/apilua/opencv.md +870 -0
  30. package/docs/apilua/paddleocr.md +324 -0
  31. package/docs/apilua/pip.md +359 -0
  32. package/docs/apilua/system.md +686 -0
  33. package/docs/apilua/tomatoocr.md +461 -0
  34. package/docs/apilua/tts.md +330 -0
  35. package/docs/apilua/ui.md +1033 -0
  36. package/docs/apilua/utils.md +222 -0
  37. package/docs/apilua/yolo.md +324 -0
  38. package/docs/apilua/yolocls.md +276 -0
  39. package/docs/mcp-agent-description.md +5 -4
  40. package/docs/quick/vscode/createProject.md +84 -0
  41. package/docs/quick/vscode/packProject.md +17 -0
  42. package/package.json +2 -1
@@ -0,0 +1,1013 @@
1
+ # 动作模块 (Action)
2
+
3
+ 动作模块提供了丰富的触摸和按键操作功能,包括点击、滑动、长按滑动、返回首页、多点触摸等动作。
4
+
5
+ **注意事项**
6
+
7
+ - 此模块仅支持 快点 Agent 模式使用
8
+ - HID 模式,请使用 HID 模块
9
+
10
+ ## 抖动值
11
+
12
+ ### setJitterValue - 设置动作抖动值
13
+
14
+ 默认抖动值为 5 像素,设置后有 jitter 参数的动作会在像素范围 `-value` 到 `value` 随机偏移。
15
+
16
+ ```lua
17
+ ---@param value number
18
+ function setJitterValue(value) end
19
+ ```
20
+
21
+ **参数说明:**
22
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
23
+ | ---------- | ------- | -------- | ------ | ------------------------------------------------------- |
24
+ | `value` | number | 是 | - | 抖动值,点击、滑动等动作会在像素范围 `-value` 到 `value` 随机偏移 |
25
+
26
+ **示例:**
27
+
28
+ ```lua
29
+ local action = require("action")
30
+ -- 设置抖动值为5像素
31
+ action.setJitterValue(5)
32
+ ```
33
+
34
+ ## 基础触摸操作
35
+
36
+ ### click - 点击操作
37
+
38
+ ```lua
39
+ ---@param x number
40
+ ---@param y number
41
+ ---@param duration number?
42
+ ---@param jitter boolean?
43
+ ---@return boolean
44
+ function click(x, y, duration, jitter) end
45
+ ```
46
+
47
+ **参数说明:**
48
+
49
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
50
+ | ---------- | ------- | -------- | ------ | ---------------------- |
51
+ | `x` | number | 是 | - | 点击的 x 坐标 |
52
+ | `y` | number | 是 | - | 点击的 y 坐标 |
53
+ | `duration` | number | 否 | 20 | 点击持续时间,单位毫秒 |
54
+ | `jitter` | boolean | 否 | false | 启用随机抖动偏移 |
55
+
56
+ **返回值:**
57
+ | 类型 | 描述 |
58
+ | ---------- | ------- |
59
+ | `boolean` | 点击是否成功 |
60
+
61
+ **示例:**
62
+
63
+ ```lua
64
+ local action = require("action")
65
+ -- 基础点击
66
+ local success = action.click(100, 100, 20, false)
67
+ if success then
68
+ print("点击成功")
69
+ end
70
+ -- 带抖动的点击(更自然,避免检测)
71
+ action.click(200, 300, 50, true)
72
+ -- 快速点击
73
+ action.click(150, 250, 10, false)
74
+ -- 长按效果(增加持续时间)
75
+ action.click(100, 100, 800, true)
76
+ ```
77
+
78
+ ### clickRandom - 执行随机点击操作
79
+
80
+ ```lua
81
+ ---@param x1 number
82
+ ---@param y1 number
83
+ ---@param x2 number
84
+ ---@param y2 number
85
+ ---@param duration number?
86
+ ---@return boolean
87
+ function clickRandom(x1, y1, x2, y2, duration) end
88
+ ```
89
+
90
+ **参数说明:**
91
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
92
+ | ---------- | ------- | -------- | ------ | ------------------------------------------------------- |
93
+ | `x1` | number | 是 | - | 随机点击区域的左上角 x 坐标 |
94
+ | `y1` | number | 是 | - | 随机点击区域的左上角 y 坐标 |
95
+ | `x2` | number | 是 | - | 随机点击区域的右下角 x 坐标 |
96
+ | `y2` | number | 是 | - | 随机点击区域的右下角 y 坐标 |
97
+ | `duration` | number | 否 | 20 | 点击持续时间,单位毫秒 |
98
+
99
+ **返回值:**
100
+
101
+ | 类型 | 描述 |
102
+ | --------- | ---------------- |
103
+ | `boolean` | 随机点击是否成功 |
104
+
105
+ **示例:**
106
+
107
+ ```lua
108
+ local action = require("action")
109
+ -- 在指定矩形区域内随机点击
110
+ action.clickRandom(100, 100, 200, 200, 20)
111
+ -- 在更大区域内随机点击
112
+ action.clickRandom(50, 50, 400, 600, 50)
113
+ -- 快速随机点击
114
+ action.clickRandom(150, 150, 250, 250, 10)
115
+ ```
116
+
117
+ ### doubleClick - 执行双击操作
118
+
119
+ ```lua
120
+ ---@param x number
121
+ ---@param y number
122
+ ---@param duration number?
123
+ ---@param interval number?
124
+ ---@param jitter boolean?
125
+ ---@return boolean
126
+ function doubleClick(x, y, duration, interval, jitter) end
127
+ ```
128
+
129
+ **参数说明:**
130
+
131
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
132
+ | ---------- | ------- | -------- | ------ | -------------------------------- |
133
+ | `x` | number | 是 | - | 双击的 x 坐标 |
134
+ | `y` | number | 是 | - | 双击的 y 坐标 |
135
+ | `duration` | number | 否 | 20 | 每次点击的持续时间,单位毫秒 |
136
+ | `interval` | number | 否 | 20 | 两次点击之间的间隔时间,单位毫秒 |
137
+ | `jitter` | boolean | 否 | false | 启用随机抖动偏移 |
138
+
139
+ **返回值:**
140
+
141
+ | 类型 | 描述 |
142
+ | --------- | ------------ |
143
+ | `boolean` | 双击是否成功 |
144
+
145
+ **示例:**
146
+
147
+ ```lua
148
+ local action = require("action")
149
+ -- 基础双击
150
+ local success = action.doubleClick(100, 100, 20, 20, false)
151
+ if success then
152
+ print("双击成功")
153
+ end
154
+ -- 带抖动的双击(更自然,避免检测)
155
+ action.doubleClick(200, 300, 50, 20, true)
156
+ -- 慢速双击(增加间隔时间)
157
+ action.doubleClick(100, 100, 30, 300, true)
158
+ ```
159
+
160
+ ### doubleClickRandom - 执行随机双击操作
161
+
162
+ ```lua
163
+ ---@param x1 number
164
+ ---@param y1 number
165
+ ---@param x2 number
166
+ ---@param y2 number
167
+ ---@param duration number?
168
+ ---@param interval number?
169
+ ---@return boolean
170
+ function doubleClickRandom(x1, y1, x2, y2, duration, interval) end
171
+ ```
172
+
173
+ **参数说明:**
174
+
175
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
176
+ | ---------- | ------ | -------- | ------ | -------------------------------- |
177
+ | `x1` | number | 是 | - | 随机双击区域的左上角 x 坐标 |
178
+ | `y1` | number | 是 | - | 随机双击区域的左上角 y 坐标 |
179
+ | `x2` | number | 是 | - | 随机双击区域的右下角 x 坐标 |
180
+ | `y2` | number | 是 | - | 随机双击区域的右下角 y 坐标 |
181
+ | `duration` | number | 否 | 20 | 每次点击的持续时间,单位毫秒 |
182
+ | `interval` | number | 否 | 20 | 两次点击之间的间隔时间,单位毫秒 |
183
+
184
+ **返回值:**
185
+
186
+ | 类型 | 描述 |
187
+ | --------- | ---------------- |
188
+ | `boolean` | 随机双击是否成功 |
189
+
190
+ **示例:**
191
+
192
+ ```lua
193
+ local action = require("action")
194
+ -- 在指定矩形区域内随机双击
195
+ action.doubleClickRandom(100, 100, 200, 200, 20, 20)
196
+ -- 慢速随机双击
197
+ action.doubleClickRandom(100, 100, 300, 300, 30, 300)
198
+ ```
199
+
200
+ ### swipe - 执行滑动操作
201
+
202
+ ```lua
203
+ ---@param startX number
204
+ ---@param startY number
205
+ ---@param endX number
206
+ ---@param endY number
207
+ ---@param duration number?
208
+ ---@param jitter boolean?
209
+ ---@param steps number?
210
+ ---@return boolean
211
+ function swipe(startX, startY, endX, endY, duration, jitter, steps) end
212
+ ```
213
+
214
+ **参数说明:**
215
+
216
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
217
+ | ---------- | ------- | -------- | ------ | ------------------------------------------------------ |
218
+ | `startX` | number | 是 | - | 滑动起始坐标 x 坐标 |
219
+ | `startY` | number | 是 | - | 滑动起始坐标 y 坐标 |
220
+ | `endX` | number | 是 | - | 滑动结束坐标 x 坐标 |
221
+ | `endY` | number | 是 | - | 滑动结束坐标 y 坐标 |
222
+ | `duration` | number | 否 | 100 | 滑动持续时间,单位毫秒 |
223
+ | `jitter` | boolean | 否 | false | 是否开启抖动,开启后会在滑动路径上随机偏移,默认 false |
224
+ | `steps` | number | 否 | 6 | 生成抖动点的数量,影响滑动的平滑度,默认 6 |
225
+
226
+ **返回值:**
227
+
228
+ | 类型 | 描述 |
229
+ | --------- | ------------ |
230
+ | `boolean` | 滑动是否成功 |
231
+
232
+ **示例:**
233
+
234
+ ```lua
235
+ local action = require("action")
236
+ -- 基础滑动(从左到右)
237
+ action.swipe(100, 300, 400, 300, 500, false, 10)
238
+ -- 向上滑动(滚动页面)
239
+ action.swipe(200, 600, 200, 200, 800, true, 15)
240
+ -- 向下滑动
241
+ action.swipe(200, 200, 200, 600, 800, true, 15)
242
+ -- 对角线滑动
243
+ action.swipe(100, 100, 300, 400, 1000, true, 20)
244
+ -- 快速滑动
245
+ action.swipe(150, 500, 150, 100, 300, false, 5)
246
+ -- 慢速精确滑动
247
+ action.swipe(100, 200, 300, 200, 1500, true, 30)
248
+ ```
249
+
250
+ ### pressAndSwipe - 执行长按滑动操作,适用于拖拽等场景
251
+
252
+ ```lua
253
+ ---@param startX number
254
+ ---@param startY number
255
+ ---@param endX number
256
+ ---@param endY number
257
+ ---@param touch_down_duration number?
258
+ ---@param touch_move_duration number?
259
+ ---@param touch_up_duration number?
260
+ ---@param jitter boolean?
261
+ ---@param steps number?
262
+ ---@return boolean
263
+ function pressAndSwipe(startX, startY, endX, endY, touch_down_duration, touch_move_duration, touch_up_duration, jitter, steps) end
264
+ ```
265
+
266
+ **参数说明:**
267
+
268
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
269
+ | --------------------- | ------- | -------- | ------ | ------------------------------------------------------ |
270
+ | `startX` | number | 是 | - | 长按起始坐标 x 坐标 |
271
+ | `startY` | number | 是 | - | 长按起始坐标 y 坐标 |
272
+ | `endX` | number | 是 | - | 拖拽结束坐标 x 坐标 |
273
+ | `endY` | number | 是 | - | 拖拽结束坐标 y 坐标 |
274
+ | `touch_down_duration` | number | 否 | 500 | 按下阶段的持续时间,单位毫秒,默认 500ms |
275
+ | `touch_move_duration` | number | 否 | 1000 | 移动阶段的持续时间,单位毫秒,默认 1000ms |
276
+ | `touch_up_duration` | number | 否 | 500 | 松开阶段的持续时间,默认 500ms |
277
+ | `jitter` | boolean | 否 | false | 是否开启抖动,开启后会在滑动路径上随机偏移,默认 false |
278
+ | `steps` | number | 否 | 6 | 移动过程中的步数,影响滑动的平滑度,默认 6 |
279
+
280
+ **返回值:**
281
+
282
+ | 类型 | 描述 |
283
+ | --------- | ---------------- |
284
+ | `boolean` | 长按滑动是否成功 |
285
+
286
+ **示例:**
287
+
288
+ ```lua
289
+ local action = require("action")
290
+ -- 拖拽元素
291
+ action.pressAndSwipe(
292
+ 100,
293
+ 100, -- 起始位置
294
+ 300,
295
+ 400, -- 目标位置
296
+ 500, -- 按下500ms
297
+ 1000, -- 移动1000ms
298
+ 200, -- 松开200ms
299
+ true, -- 开启抖动
300
+ 20, -- 20个步数
301
+ )
302
+ -- 长按拖拽(更长的按下时间)
303
+ action.pressAndSwipe(150, 200, 350, 500, 1000, 800, 300, true, 15)
304
+ -- 精确拖拽(无抖动)
305
+ action.pressAndSwipe(200, 300, 200, 100, 300, 600, 100, false, 25)
306
+ ```
307
+
308
+ ### swipeCurve - 执行 3 点曲线滑动操作(先快后慢)
309
+
310
+ ```lua
311
+ ---@param startX number
312
+ ---@param startY number
313
+ ---@param midX number
314
+ ---@param midY number
315
+ ---@param endX number
316
+ ---@param endY number
317
+ ---@param duration number?
318
+ ---@return boolean
319
+ function swipeCurve(startX, startY, midX, midY, endX, endY, duration) end
320
+ ```
321
+
322
+ **参数说明:**
323
+
324
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
325
+ | ---------- | ------ | -------- | ------ | ------------------------------------- |
326
+ | `startX` | number | 是 | - | 滑动起始坐标 x 坐标 |
327
+ | `startY` | number | 是 | - | 滑动起始坐标 y 坐标 |
328
+ | `midX` | number | 是 | - | 曲线中间控制点 x 坐标 |
329
+ | `midY` | number | 是 | - | 曲线中间控制点 y 坐标 |
330
+ | `endX` | number | 是 | - | 滑动结束坐标 x 坐标 |
331
+ | `endY` | number | 是 | - | 滑动结束坐标 y 坐标 |
332
+ | `duration` | number | 否 | 1000 | 总滑动持续时间,单位毫秒,默认 1000ms |
333
+
334
+ **返回值:**
335
+
336
+ | 类型 | 描述 |
337
+ | --------- | ---------------- |
338
+ | `boolean` | 曲线滑动是否成功 |
339
+
340
+ **功能特点:**
341
+
342
+ - 使用二次贝塞尔曲线算法生成平滑的滑动路径
343
+ - 实现先快后慢的滑动效果,模拟真实的手势操作
344
+ - 根据滑动距离自动调整路径点数量,确保滑动平滑度
345
+ - **拟人化轨迹**:添加随机偏移和微抖动,模拟真实人手操作的不稳定性
346
+ - **随机化时间**:每个路径点的时间间隔都有随机变化,避免机械化操作
347
+ - **智能偏移**:中间路径点偏移更大,起点和终点保持精确,更符合人类操作习惯
348
+ - 适用于需要更自然滑动轨迹场景
349
+
350
+ **示例:**
351
+
352
+ ```lua
353
+ local action = require("action")
354
+ -- 基础曲线滑动
355
+ action.swipeCurve(100, 100, 200, 150, 300, 200, 1000)
356
+ -- 弧形向上滑动
357
+ action.swipeCurve(200, 500, 150, 300, 200, 100, 800)
358
+ -- S形曲线滑动
359
+ action.swipeCurve(100, 200, 300, 100, 200, 400, 1200)
360
+ -- 快速曲线滑动
361
+ action.swipeCurve(150, 300, 250, 200, 350, 400, 600)
362
+ -- 慢速精确曲线滑动
363
+ action.swipeCurve(100, 100, 200, 50, 300, 100, 1500)
364
+ ```
365
+
366
+ ## 文本输入操作
367
+
368
+ - 仅输入框聚焦可用,以下方法是在模拟键盘操作
369
+ - 更多高级输入操作,请参考 [IME 模块](ime.md)
370
+
371
+ ### input - 输入文本
372
+
373
+ ```lua
374
+ ---@param text string
375
+ ---@return boolean
376
+ function input(text) end
377
+ ```
378
+
379
+ **参数说明:**
380
+
381
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
382
+ | ------ | ------ | -------- | ------ | ---------------- |
383
+ | `text` | string | 是 | - | 要输入的文本内容 |
384
+
385
+ **返回值:**
386
+
387
+ | 类型 | 描述 |
388
+ | --------- | ---------------- |
389
+ | `boolean` | 输入文本是否成功 |
390
+
391
+ **示例:**
392
+
393
+ ```lua
394
+ local action = require("action")
395
+ -- 输入文本
396
+ local success = action.input("hello 快点JS")
397
+ if success then
398
+ print("成功输入文本")
399
+ end
400
+ ```
401
+
402
+ ### inputSimple - 基础文本输入
403
+
404
+ 通过键盘按键事件输入基础文本,适合英文、数字和常见 ASCII 符号。需要输入中文时请使用 `action.input`。
405
+
406
+ ```lua
407
+ ---@param text string
408
+ ---@return boolean
409
+ function inputSimple(text) end
410
+ ```
411
+
412
+ **参数说明:**
413
+
414
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
415
+ | ------ | ------ | -------- | ------ | ---- |
416
+ | `text` | string | 是 | - | 要输入的基础文本(建议 ASCII) |
417
+
418
+ **示例:**
419
+
420
+ ```lua
421
+ local action = require("action")
422
+ local success = action.inputSimple("hello_123")
423
+ if success then
424
+ print("成功输入文本")
425
+ end
426
+ ```
427
+
428
+ ### backspace - 删除文本
429
+
430
+ ```lua
431
+ ---@param count number?
432
+ ---@return boolean
433
+ function backspace(count) end
434
+ ```
435
+
436
+ **参数说明:**
437
+
438
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
439
+ | ------- | ------ | -------- | ------ | --------------------------- |
440
+ | `count` | number | 否 | 1 | 删除数量,默认删除 1 个字符 |
441
+
442
+ **返回值:**
443
+
444
+ | 类型 | 描述 |
445
+ | --------- | ---------------- |
446
+ | `boolean` | 删除文本是否成功 |
447
+
448
+ **示例:**
449
+
450
+ ```lua
451
+ local action = require("action")
452
+ -- 删除最后一个字符
453
+ local success = action.backspace()
454
+ if success then
455
+ print("成功删除最后一个字符")
456
+ end
457
+ -- 删除多个字符
458
+ local success = action.backspace(3)
459
+ if success then
460
+ print("成功删除 3 个字符")
461
+ end
462
+ ```
463
+
464
+ ### enter - 调用回车
465
+
466
+ ```lua
467
+ ---@return boolean
468
+ function enter() end
469
+ ```
470
+
471
+ **返回值:**
472
+
473
+ | 类型 | 描述 |
474
+ | --------- | ---------------- |
475
+ | `boolean` | 调用回车是否成功 |
476
+
477
+ **示例:**
478
+
479
+ ```lua
480
+ local action = require("action")
481
+ -- 调用回车
482
+ local success = action.enter()
483
+ if success then
484
+ print("成功调用回车")
485
+ end
486
+ ```
487
+
488
+ ## 系统按键操作
489
+
490
+ ### homeScreen - 返回到设备主屏幕
491
+
492
+ ```lua
493
+ ---@return boolean
494
+ function homeScreen() end
495
+ ```
496
+
497
+ **返回值:**
498
+
499
+ | 类型 | 描述 |
500
+ | --------- | ---------------- |
501
+ | `boolean` | 返回首页是否成功 |
502
+
503
+ **示例:**
504
+
505
+ ```lua
506
+ local action = require("action")
507
+ -- 返回主屏幕
508
+ local success = action.homeScreen()
509
+ if success then
510
+ print("成功返回主屏幕")
511
+ end
512
+
513
+ -- 在操作完成后返回主屏幕
514
+ local function completeTaskAndGoHome()
515
+ action.click(200, 300, 100, true)
516
+ Sleep(1000)
517
+ action.homeScreen()
518
+ end
519
+ ```
520
+
521
+ ### pressButton - 按下系统按钮
522
+
523
+ ```lua
524
+ ---@param button string
525
+ ---@return boolean
526
+ function pressButton(button) end
527
+ ```
528
+
529
+ **参数说明:**
530
+
531
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
532
+ | -------- | ------ | -------- | ------ | ------------------------------------------------------------------------------------------ |
533
+ | `button` | string | 是 | - | 按钮类型: <br>-`"home"` Home 键 <br>- `"volumeup"` 音量上键 <br>- `"volumedown"` 音量下键 <br>- `"brightnessup"` 调高屏幕亮度 <br>- `"brightnessdown"` 调低屏幕亮度 |
534
+
535
+ **返回值:**
536
+
537
+ | 类型 | 描述 |
538
+ | --------- | ---------------- |
539
+ | `boolean` | 按下按钮是否成功 |
540
+
541
+ **示例:**
542
+
543
+ ```lua
544
+ local action = require("action")
545
+ -- 按下 Home 键
546
+ action.pressButton("home")
547
+ -- 调高音量
548
+ action.pressButton("volumeup")
549
+ -- 调低音量
550
+ action.pressButton("volumedown")
551
+ -- 连续调节音量
552
+ for i = 1, 5 do
553
+ action.pressButton("volumeup")
554
+ Sleep(200)
555
+ end
556
+ ```
557
+
558
+ ### sendKey - 发送键盘组合键
559
+
560
+ Action 模块最终发送标准 USB HID Keyboard/Keypad usage。参数可以传标准 usage 数字、单个 ASCII 字符、按键名称字符串,或裸全局 `HidKey` 常量。
561
+
562
+ ```lua
563
+ ---@param key (string|integer)[]
564
+ ---@return boolean
565
+ function sendKey(key) end
566
+ ```
567
+
568
+ **示例:**
569
+
570
+ ```lua
571
+ local action = require("action")
572
+ action.sendKey({ "COMMAND", "c" })
573
+ action.sendKey({ 0xe3, 0x06 })
574
+ action.sendKey({ HidKey.COMMAND, "v" })
575
+ ```
576
+
577
+ ### w3cActions - 执行 W3C Actions JSON
578
+
579
+ ```lua
580
+ ---@param json table
581
+ ---@return boolean
582
+ function w3cActions(json) end
583
+ ```
584
+
585
+ **示例:**
586
+
587
+ ```lua
588
+ local action = require("action")
589
+ action.w3cActions({
590
+ actions = {
591
+ {
592
+ type = "pointer",
593
+ id = "finger1",
594
+ parameters = { pointerType = "touch" },
595
+ actions = {},
596
+ },
597
+ },
598
+ })
599
+ ```
600
+
601
+ ## 动作构建器
602
+
603
+ ActionBuilder 提供了更高级的多点触控操作能力,支持链式调用构建复杂的手势动作。
604
+
605
+ ### createBuilder - 创建 ActionBuilder 构建器
606
+
607
+ ```lua
608
+ ---@return ActionBuilder
609
+ function createBuilder() end
610
+ ```
611
+
612
+ **返回值:**
613
+
614
+ | 类型 | 描述 |
615
+ | ------------- | ------------------------ |
616
+ | ActionBuilder | ActionBuilder 构建器实例 |
617
+
618
+ **示例:**
619
+
620
+ ```lua
621
+ local action = require("action")
622
+ -- 创建构建器
623
+ local builder = action.createBuilder()
624
+ ```
625
+
626
+ ### ActionBuilder - ActionBuilder 构建器
627
+
628
+ ActionBuilder 构建器支持链式调用,可以构建复杂的多点触控动作。
629
+
630
+ #### addPointer - 添加指针(手指)
631
+
632
+ ```lua
633
+ ---@param id number
634
+ ---@return PointerBuilder
635
+ function addPointer(id) end
636
+ ```
637
+
638
+ **参数说明:**
639
+
640
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
641
+ | ------ | ------ | -------- | ------ | ------------------------------------ |
642
+ | `id` | number | 是 | - | 指针编号,1-10,对应设备上的手指编号 |
643
+
644
+ **返回值:**
645
+
646
+ | 类型 | 描述 |
647
+ | ---------------- | -------------------------------- |
648
+ | `PointerBuilder` | 指针构建器,用于配置该指针的动作 |
649
+
650
+ **示例:**
651
+
652
+ ```lua
653
+ local action = require("action")
654
+ local builder = action.createBuilder()
655
+ -- 添加第一个手指
656
+ local pointer1 = builder:addPointer(1)
657
+ -- 添加第二个手指
658
+ local pointer2 = builder:addPointer(2)
659
+ ```
660
+
661
+ #### singleTap - 快速单点点击
662
+
663
+ ```lua
664
+ ---@param x number
665
+ ---@param y number
666
+ ---@param duration number?
667
+ ---@return ActionBuilder
668
+ function singleTap(x, y, duration) end
669
+ ```
670
+
671
+ **参数说明:**
672
+
673
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
674
+ | ---------- | ------ | -------- | ------ | ------------------------------------- |
675
+ | `x` | number | 是 | - | X 坐标 |
676
+ | `y` | number | 是 | - | Y 坐标 |
677
+ | `duration` | number | 否 | 20 | 点击持续时间,如果未定义则默认为 20ms |
678
+
679
+ **返回值:**
680
+
681
+ | 类型 | 描述 |
682
+ | --------------- | ---------------------- |
683
+ | `ActionBuilder` | 返回自身,支持链式调用 |
684
+
685
+ **示例:**
686
+
687
+ ```lua
688
+ local action = require("action")
689
+ local builder = action.createBuilder()
690
+ -- 快速单点点击
691
+ builder:singleTap(100, 100, 50):execute()
692
+ -- 连续点击
693
+ builder:singleTap(100, 100, 30):singleTap(200, 200, 30):execute()
694
+ ```
695
+
696
+ #### multiTap - 快速多点点击
697
+
698
+ ```lua
699
+ ---@param points table
700
+ ---@param duration number?
701
+ ---@return ActionBuilder
702
+ function multiTap(points, duration) end
703
+ ```
704
+
705
+ **参数说明:**
706
+
707
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
708
+ | ---------- | ------ | -------- | ------ | -------------------------------------- |
709
+ | `points` | array | 是 | - | 点击坐标数组,每个元素包含 x 和 y 坐标 |
710
+ | `duration` | number | 否 | 20 | 点击持续时间,如果未定义则默认为 20ms |
711
+
712
+ **返回值:**
713
+
714
+ | 类型 | 描述 |
715
+ | --------------- | ---------------------- |
716
+ | `ActionBuilder` | 返回自身,支持链式调用 |
717
+
718
+ **示例:**
719
+
720
+ ```lua
721
+ local action = require("action")
722
+ local builder = action.createBuilder()
723
+ -- 多点同时点击
724
+ local points = { { x = 100, y = 100 },
725
+ { x = 200, y = 200 },
726
+ { x = 300, y = 300 },
727
+ ]
728
+ builder:multiTap(points, 50):execute()
729
+ -- 双指点击
730
+ builder
731
+ :multiTap(
732
+ { { x = 150, y = 300 },
733
+ { x = 250, y = 300 },
734
+ ],
735
+ 100,
736
+ )
737
+ :execute()
738
+ ```
739
+
740
+ #### execute - 执行动作
741
+
742
+ ```lua
743
+ ---@return boolean
744
+ function execute() end
745
+ ```
746
+
747
+ **返回值:**
748
+
749
+ | 类型 | 描述 |
750
+ | --------- | ------------ |
751
+ | `boolean` | 执行是否成功 |
752
+
753
+ **示例:**
754
+
755
+ ```lua
756
+ local action = require("action")
757
+ local builder = action.createBuilder()
758
+ -- 执行构建的动作
759
+ local success = builder
760
+ :addPointer(1)
761
+ :moveTo(100, 100)
762
+ :tap(200, 200)
763
+ :done()
764
+ :execute()
765
+
766
+ if success then
767
+ print("动作执行成功")
768
+ end
769
+ ```
770
+
771
+ ### PointerBuilder - 指针构建器
772
+
773
+ 指针构建器用于配置单个指针(手指)的动作序列。
774
+
775
+ #### moveTo - 移动到指定坐标
776
+
777
+ ```lua
778
+ ---@param x number
779
+ ---@param y number
780
+ ---@param duration number?
781
+ ---@return PointerBuilder
782
+ function moveTo(x, y, duration) end
783
+ ```
784
+
785
+ **参数说明:**
786
+
787
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
788
+ | ---------- | ------ | -------- | ------ | ------------------------------------ |
789
+ | `x` | number | 是 | - | X 坐标 |
790
+ | `y` | number | 是 | - | Y 坐标 |
791
+ | `duration` | number | 否 | 0 | 移动持续时间,如果未定义则默认为 0ms |
792
+
793
+ **返回值:**
794
+
795
+ | 类型 | 描述 |
796
+ | ---------------- | ---------------------- |
797
+ | `PointerBuilder` | 返回自身,支持链式调用 |
798
+
799
+ #### down - 按下手指
800
+
801
+ ```lua
802
+ ---@return PointerBuilder
803
+ function down() end
804
+ ```
805
+
806
+ **返回值:**
807
+
808
+ | 类型 | 描述 |
809
+ | -------------- | ---------------------- |
810
+ | PointerBuilder | 返回自身,支持链式调用 |
811
+
812
+ #### up - 抬起手指
813
+
814
+ ```lua
815
+ ---@return PointerBuilder
816
+ function up() end
817
+ ```
818
+
819
+ **返回值:**
820
+
821
+ | 类型 | 描述 |
822
+ | ---------------- | ---------------------- |
823
+ | `PointerBuilder` | 返回自身,支持链式调用 |
824
+
825
+ #### stay - 停留时间
826
+
827
+ ```lua
828
+ ---@param duration number?
829
+ ---@return PointerBuilder
830
+ function stay(duration) end
831
+ ```
832
+
833
+ **参数说明:**
834
+
835
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
836
+ | ---------- | ------ | -------- | ------ | ----------------------------------------- |
837
+ | `duration` | number | 否 | 20 | 停留时间(毫秒),如果未定义则默认为 20ms |
838
+
839
+ **返回值:**
840
+
841
+ | 类型 | 描述 |
842
+ | ---------------- | ---------------------- |
843
+ | `PointerBuilder` | 返回自身,支持链式调用 |
844
+
845
+ #### tap - 执行点击动作
846
+
847
+ ```lua
848
+ ---@param x number
849
+ ---@param y number
850
+ ---@param duration number?
851
+ ---@return PointerBuilder
852
+ function tap(x, y, duration) end
853
+ ```
854
+
855
+ **参数说明:**
856
+
857
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
858
+ | ---------- | ------ | -------- | ------ | ------------------------------------- |
859
+ | `x` | number | 是 | - | X 坐标 |
860
+ | `y` | number | 是 | - | Y 坐标 |
861
+ | `duration` | number | 否 | 20 | 按下持续时间,如果未定义则默认为 20ms |
862
+
863
+ **返回值:**
864
+
865
+ | 类型 | 描述 |
866
+ | ---------------- | ---------------------- |
867
+ | `PointerBuilder` | 返回自身,支持链式调用 |
868
+
869
+ **功能说明:**
870
+
871
+ - 自动执行:移动 -> 按下 -> 暂停 -> 抬起的完整点击序列
872
+
873
+ #### done - 完成指针配置
874
+
875
+ ```lua
876
+ ---@return ActionBuilder
877
+ function done() end
878
+ ```
879
+
880
+ **返回值:**
881
+
882
+ | 类型 | 描述 |
883
+ | --------------- | ---------------------------------- |
884
+ | `ActionBuilder` | 返回主构建器,可以继续添加其他指针 |
885
+
886
+ ## 高级使用示例
887
+
888
+ ### 单指滑动
889
+
890
+ ```lua
891
+ local action = require("action")
892
+ -- 单指从左到右滑动
893
+ local builder = action.createBuilder()
894
+ builder
895
+ :addPointer(1)
896
+ :moveTo(100, 300, 0) -- 移动到起始位置
897
+ :down() -- 按下
898
+ :moveTo(400, 300, 500) -- 滑动到结束位置
899
+ :up() -- 抬起
900
+ :done()
901
+ :execute()
902
+ ```
903
+
904
+ ### 双指缩放(放大)
905
+
906
+ ```lua
907
+ local action = require("action")
908
+ -- 双指从中心向外扩展
909
+ local builder = action.createBuilder()
910
+ builder
911
+ :addPointer(1)
912
+ :moveTo(200, 300, 0) -- 第一个手指起始位置
913
+ :down()
914
+ :moveTo(150, 250, 300) -- 向左上移动
915
+ :up()
916
+ :done()
917
+ :addPointer(2)
918
+ :moveTo(200, 300, 0) -- 第二个手指起始位置
919
+ :down()
920
+ :moveTo(250, 350, 300) -- 向右下移动
921
+ :up()
922
+ :done()
923
+ :execute()
924
+ ```
925
+
926
+ ### 双指缩放(缩小)
927
+
928
+ ```lua
929
+ local action = require("action")
930
+ -- 双指从外向中心收缩
931
+ local builder = action.createBuilder()
932
+ builder
933
+ :addPointer(1)
934
+ :moveTo(150, 250, 0) -- 第一个手指起始位置
935
+ :down()
936
+ :moveTo(200, 300, 300) -- 向中心移动
937
+ :up()
938
+ :done()
939
+ :addPointer(2)
940
+ :moveTo(250, 350, 0) -- 第二个手指起始位置
941
+ :down()
942
+ :moveTo(200, 300, 300) -- 向中心移动
943
+ :up()
944
+ :done()
945
+ :execute()
946
+ ```
947
+
948
+ ### 双指旋转
949
+
950
+ ```lua
951
+ local action = require("action")
952
+ -- 双指围绕中心点旋转
953
+ local builder = action.createBuilder()
954
+ local centerX = 200,
955
+ centerY = 300
956
+ local radius = 50
957
+
958
+ builder
959
+ :addPointer(1)
960
+ :moveTo(centerX - radius, centerY, 0) -- 左侧起始
961
+ :down()
962
+ :moveTo(centerX, centerY - radius, 200) -- 向上旋转
963
+ :moveTo(centerX + radius, centerY, 200) -- 向右旋转
964
+ :up()
965
+ :done()
966
+ :addPointer(2)
967
+ :moveTo(centerX + radius, centerY, 0) -- 右侧起始
968
+ :down()
969
+ :moveTo(centerX, centerY + radius, 200) -- 向下旋转
970
+ :moveTo(centerX - radius, centerY, 200) -- 向左旋转
971
+ :up()
972
+ :done()
973
+ :execute()
974
+ ```
975
+
976
+ ### 长按拖拽
977
+
978
+ ```lua
979
+ local action = require("action")
980
+ -- 长按后拖拽元素
981
+ local builder = action.createBuilder()
982
+ builder
983
+ :addPointer(1)
984
+ :moveTo(100, 100, 0) -- 移动到目标位置
985
+ :down() -- 按下
986
+ :stay(800) -- 长按 800ms
987
+ :moveTo(300, 400, 1000) -- 拖拽到新位置
988
+ :up() -- 抬起
989
+ :done()
990
+ :execute()
991
+ ```
992
+
993
+ ### 复杂手势组合
994
+
995
+ ```lua
996
+ local action = require("action")
997
+ -- 先点击,再滑动,最后双击
998
+ local builder = action.createBuilder()
999
+ -- 第一步:单击
1000
+ builder:singleTap(100, 100, 50)
1001
+ -- 第二步:滑动
1002
+ builder
1003
+ :addPointer(1)
1004
+ :moveTo(200, 200, 0)
1005
+ :down()
1006
+ :moveTo(400, 200, 600)
1007
+ :up()
1008
+ :done()
1009
+ -- 第三步:双击
1010
+ builder:multiTap({ { x = 300, y = 300 } }, 30)
1011
+ -- 执行所有动作
1012
+ builder:execute()
1013
+ ```