📱 飞飞投屏帮助中心
🔌 USB连接快速入门
1. 手机基础设置
① 打开「设置」→「关于手机」,连续点击「版本号」7次激活开发者选项
② 开发者选项中开启:
✅ USB调试
✅ USB调试(安全设置)(小米手机必需)
③ USB连接模式选择「传输文件(MTP)」(下拉通知栏切换)
2. 物理连接与授权
① 使用USB 2.0数据线连接手机与电脑主机背面接口
② 手机弹出「允许USB调试」提示时,勾选「始终允许」并点击「确定」
3. 软件识别设备
① 打开飞飞投屏软件,等待软件自动识别显示
② 无显示设备? 打开软件设备列表查看原因
📱 部分机型连接问题
小米手机:能投屏但无法控制
现象:可以看到手机画面,但鼠标点击无反应
核心原因:未开启安全调试模式,导致无法模拟点击操作
① 进入手机「设置」→「开发者选项」
② 找到「USB调试(安全设置)」选项并勾选(部分机型路径:设置→更多设置→开发者选项)
③ 断开重新连接,确保授权提示中勾选「允许模拟点击」
华为手机:连接后无反应/驱动异常
图示:华为手机开发者选项关键设置(关闭监控ADB安装应用)
- 下载安装 华为手机助手,完成驱动更新
-
进入开发者选项,设置以下内容:
✔ 开启「USB调试」
✖ 关闭「监控ADB安装应用」(图示中「这个不开」的选项)
✖ 关闭「使用ADB安装应用时需要用户确认」(图示中第二个「这个不开」)
✔ 开启「'仅充电'模式下允许ADB调试」(确保非充电模式也能调试) - 若仍无反应,尝试重启手机并更换电脑USB 2.0接口
华为/荣耀手机:电脑无法识别
图示:将允许HiSuite通过HDB连接设备的开关打开,即可完成HDB的授权
① 进入手机「设置」→「安全和隐私」
② 找到更多安全设置
③ 在更多安全设置页面,将允许HiSuite通过HDB连接设备的开关打开,即可完成HDB的授权
⚡ 如何连接主板机/机箱
✅1. 连接电脑接口
将连接线连接到电脑,推荐使用 **USB 2.0 接口**,确保连接稳定,避免因接口兼容性问题导致连接异常。
✅2. 使用授权文件 ADBKEY 授权
联系主板机商家索要 adbkey 和 adbkey.pub 两个文件,并按以下步骤操作:
- 打开文件资源管理器,找到文件夹
C:\用户\你的计算机用户名\.android(若文件夹未显示,需在"查看"选项中勾选"显示隐藏项目") - 将获取的两个文件复制到该文件夹内
- 重启计算机,完成授权初始化
重要提示:
- 请务必妥善备份
adbkey和adbkey.pub,后续重装系统或更换电脑时需重新使用这两个文件完成授权。 - 若文件丢失,连接时需通过手机屏幕手动点击"允许"授权,操作复杂度增加且可能影响连接效率。
- 推荐使用 飞飞软件「更多功能」中的「ADB授权合并」,功能便捷处理
图示:按步骤操作 ADB 授权文件,确保文件路径正确。若路径错误或文件缺失,将导致授权失败无法正常连接。
📡 无线WIFI连接核心配置
连接必备条件
- ✔ 手机与电脑连接同一局域网(如家庭/企业WIFI)
- ✔ 手机已通过USB完成首次授权(获取ADB权限)
普通手机操作步骤
① 通过USB将飞飞软件与手机连接
② 右键点击软件内手机窗口,选择「转为无线模式OTG(WIFI ADB)」
③ 转换成功后可断开USB线
高级自动模式
飞飞软件「高级设置」中勾选「自动将USB设备转为无线模式」,后续连接无需手动操作
飞飞软件通过「设备分享」功能共可将本地连接的所有手机设备跨网分享给其他用户
⚡ OTG机箱连接深方案
OTG机箱工作原理
通过OTG转接头将手机网络转为以太网,实现与电脑的有线网络互通(无需WIFI)
即插即用设备(刷ROM机型)
① 连接OTG机箱与手机
② 开机自动启动WIFI ADB 5555端口
③ 飞飞软件点击「WIFI扫描」自动发现设备
普通OTG设备(未刷ROM)
① 先用USB模式连接手机到飞飞软件
② 按前文步骤开启WIFI ADB 5555
③ 断开USB,保持OTG机箱供电和网络连接
网段扫描设置
飞飞软件操作:
① 点击顶部「WIFI 扫描」按钮
② 输入手机显示的局域网IP段(例:192.168.0.1-192.168.0.255)
③ 点击「开始扫描」等待设备列表更新
🤖 AI智控使用指南
AI智控通过接入大语言模型(LLM),实现用自然语言对话操控手机和电脑。你只需输入"打开抖音刷10分钟",AI会自动分析屏幕、识别按钮、模拟点击滑动,全程无需手动操作。
📌 第一步:获取大模型 API 密钥
飞飞投屏不自带AI模型,需前往第三方平台购买大模型API服务。推荐以下平台(均支持 OpenAI 兼容接口):
| 平台 | 地址 | 特点 |
|---|---|---|
| 云雾AI | https://yunwu.ai/ | 高并发稳定,支持 GPT/Claude/DeepSeek 等全系模型,国内直连 |
| AIHubMix | https://aihubmix.com/ | 多模型聚合API,支持 OpenAI/Claude/Gemini,按量计费灵活 |
| OpenRouter | https://openrouter.ai/ | 全球模型路由,200+模型可选,按使用量付费 |
| 硅基流动 | https://siliconflow.cn/ | 国产模型聚合,DeepSeek/通义千问/智谱等,国内低延迟 |
| DeepSeek 官方 | https://platform.deepseek.com/ | DeepSeek 官方API,性价比极高,适合大批量任务 ⚠️ 不支持图片/视觉分析 |
| 火山方舟 | https://console.volcengine.com/ark/ | 字节跳动旗下,豆包/DeepSeek等模型,企业级稳定性 |
💡 选购建议:
- 首选推荐(支持视觉):
GPT-4o、Claude 4 Sonnet、通义千问 Qwen-VL-Max,能直接"看懂"屏幕截图,精准定位按钮和文字 - 性价比纯文本:
DeepSeek-V3、DeepSeek-R1,推理能力强但不支持图片分析,仅能通过UI控件树操作(无视觉能力,可能误判界面) - 购买后在平台后台获取 API 地址(Base URL)和 API 密钥(API Key),下一步需要使用
⚙️ 第二步:添加AI配置
打开AI配置窗口
打开飞飞投屏软件,点击左侧菜单 「AI智控」 → 点击 「添加配置」 按钮
填写配置信息
① 配置名称:自定义名称,如"我的GPT-4o"
② API地址:粘贴从购买平台获取的 Base URL
③ API密钥:粘贴 API Key
④ 最大Token:默认 8192 即可
⑤ 最大步数:AI最多执行多少步,默认 15
获取模型列表
填写完 API地址和密钥后,点击 「获取模型」 按钮,系统会自动从平台拉取可用模型列表
选择模型并测试连接
① 从下拉框中选择要使用的模型
② 点击 「测试连接」 按钮
③ 看到 「连接成功」 提示后,点击 「添加」 保存配置
⚠️ 常见问题:
- 获取模型列表为空? 检查 API地址是否正确(通常以
/v1结尾),API密钥是否有效 - 测试连接失败? 确认账户余额充足,网络能访问API地址,密钥没有过期
- 模型不支持图片? 勾选"不支持图片"选项,AI将使用UI控件树进行纯文本分析
🚀 第三步:使用AI智控执行任务
选中AI配置
在AI智控界面左侧列表中,点击选中你想使用的AI配置(高亮即为选中)
打开主控设备
在设备列表中双击或右键打开一个手机设备的大屏窗口(主控),AI需要看到屏幕内容才能操作
输入自然语言指令
在底部输入框中用日常语言描述你想做的事,例如:
"打开微信,搜索张三,发消息说你好"
"打开抖音,向下滑动看5个视频"
"打开设置,连接WiFi名为Office的热点,密码12345678"
点击发送,AI自动执行
点击发送按钮后,AI会逐步分析屏幕、定位元素、执行操作,右侧可实时查看AI的思考过程和执行日志
💡 使用技巧与最佳实践
- 指令要具体明确:不要只说"帮我操作",要说清楚目标。如"打开淘宝搜索蓝牙耳机并加入购物车"
- 分步执行复杂任务:超长任务建议拆分为多个小任务,每步结束AI会确认结果
- 先开主控再发指令:AI需要看到设备屏幕,打开主控窗口后才能正常分析界面
- 优先选视觉模型:首选
GPT-4o/Claude 4 Sonnet/通义千问 VL等支持图片的模型,能截图精准定位;DeepSeek不支持图片,只能靠UI控件树推断,复杂界面容易点错 - 注意API费用:每次对话都会消耗Token,建议设置合理的
最大步数(15步以内),避免无限循环消耗 - 主控设备不要锁屏:保持设备屏幕点亮且在主控窗口中可见,否则AI无法分析界面
- 遇到错误可重试:AI偶尔会解析失败或点击不准,重新发送指令或简化描述即可
🖥️ 核心ADB指令速查表
WIFI ADB操作指令
| 功能 | 指令 | 备注 |
|---|---|---|
| 开启WIFI ADB | adb tcpip 5555 |
需先通过USB连接,端口固定为5555 |
| 关闭WIFI ADB | adb usb |
断开无线连接,恢复USB调试模式 |
| 手动连接设备 | adb connect 192.168.0.100:5555 |
需知道手机IP地址(可在手机「设置→关于手机→状态信息」查看) |
功能类指令
| 名称 | 命令 | 备注 |
|---|---|---|
| 重启 | adb reboot |
|
| 重启手机到recovery刷机模式 | adb reboot recovery |
|
| 重启手机到bootloader界面 | adb reboot bootloader |
|
| 关机 | adb shell reboot -p |
|
| 恢复设备DPI | adb shell wm density reset |
|
| 修改设备DPI | adb shell wm density 320 |
320(自定义dpi) |
| 查看设备DPI | adb shell wm density |
|
| 恢复设备分辨率 | adb shell wm size reset |
|
| 修改设备分辨率 | adb shell wm size 1080x1920 |
1080x1920(自定义分辨率) |
| 查看设备分辨率 | adb shell wm size |
|
| 查看设备序列号 | adb get-serialno |
|
| 查看设备详情列表 | adb devices -l |
|
| 查看第三方应用包名 | adb shell pm list packages -3 |
|
| 查看系统应用的所有包名 | adb shell pm list packages -s |
|
| 查看所有应用包名 | adb shell pm list packages |
|
| 查看内存使用情况 | adb shell dumpsys meminfo |
|
| 清除应用数据与缓存,需要指定包 | adb shell pm clear cn.com.test.mobile |
cn.com.test.mobile(自定义包名) |
| 卸载应用,需要指定包 | adb uninstall cn.com.test.mobile |
cn.com.test.mobile(自定义包名) |
| 卸载应用,但保留数据,需要指定包 | adb uninstall -k cn.com.test.mobile |
cn.com.test.mobile(自定义包名) |
| 强制停止应用 | adb shell am force-stop cn.com.test.mobile |
cn.com.test.mobile(自定义包名) |
| 截屏 | adb shell screencap -p /sdcard/01.png |
01.png(自定义截屏名称) |
| 安装apk | adb install d:/temp/1.apk |
d:/temp/1.apk(apk绝对路径) |
| 设置电量百分比 | adb shell dumpsys battery set level 100 |
100(自定义电量百分比) |
| 启动应用 | adb shell am start -n cn.com.test.mobile/.ui.SplashActivity |
-n cn.com.test.mobile(包名).ui.SplashActivity |
| 查看Android 系统版本 | adb shell getprop ro.build.version.release |
|
| 查看占用内存前10的应用 | adb shell top -s 10 |
|
| 查看设备品牌 | adb shell getprop ro.product.brand |
|
| 开启 WiFi | adb shell svc wifi enable |
|
| 关闭 WiFi | adb shell svc wifi disable |
|
| 开启指针显示 | adb shell settings put system pointer_location 1 |
|
| 关闭指针显示 | adb shell settings put system pointer_location 0 |
|
| 模拟点击 | adb shell input tap x坐标 y坐标 |
|
| 关闭更新 | adb shell pm disable-user com.wssyncmldm |
|
| 黑屏时执行 | adb shell settings put system screen_off_timeout 2147483647 |
每次重启软件执行一次(在不是黑屏状态下执行) |
按键类指令
| 名称 | 命令 | 备注 |
|---|---|---|
| 电源键 | adb shell input keyevent 26 |
|
| 菜单键 | adb shell input keyevent 82 |
|
| HOME 键 | adb shell input keyevent 3 |
|
| 返回键 | adb shell input keyevent 4 |
|
| 增加音量 | adb shell input keyevent 24 |
|
| 降低音量 | adb shell input keyevent 25 |
|
| 静音 | adb shell input keyevent 164 |
|
| 播放/暂停 | adb shell input keyevent 85 |
|
| 停止播放 | adb shell input keyevent 86 |
|
| 播放下一首 | adb shell input keyevent 87 |
|
| 播放上一首 | adb shell input keyevent 88 |
|
| 恢复播放 | adb shell input keyevent 126 |
|
| 暂停播放 | adb shell input keyevent 127 |
|
| 点亮屏幕 | adb shell input keyevent 224 |
|
| 熄灭屏幕 | adb shell input keyevent 223 |
|
| 滑动解锁,向上滑动手势解锁 | adb shell input swipe 300 1000 300 500 |
参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标 |
| 焦点处于某文本框时输入文本 | adb shell input text hello |
小米MIUI优化指令
| 名称 | 命令 | 备注 |
|---|---|---|
| 禁用智能服务 | adb shell pm disable-user com.miui.systemAdSolution |
|
| 禁用小米电商 | adb shell pm disable-user com.xiaomi.ab |
|
| 禁用用户反馈 | adb shell pm disable-user com.miui.bugreport |
|
| 禁用系统毒瘤 | adb shell pm disable-user com.miui.analytics |
|
| 删除开屏广告 | adb shell rm -f -r /sdcard/Android/data/com.miui.systemAdSolution/files |
|
| 防止开屏广告再生 | adb shell touch /sdcard/Android/data/com.miui.systemAdSolution/files |
常见问题指令
查看设备列表:adb devices
结束ADB进程:adb kill-server
重启ADB服务:adb start-server
查看设备IP:adb shell ifconfig wlan0 | grep inet
🌐 局域网共享
操作方法(分两步完成)
PC1(主机)开启局域网服务
- 在PC1上打开「飞飞投屏」软件,确保移动设备已通过USB正常连接并识别;
- 点击软件左侧功能按钮「高级设置」→ 选择「开启ADB局域网服务」;
- 若关闭软件共享功能将失效;
PC2/PC3(从机)配置并启用
- 在PC2或PC3上打开「飞飞投屏」软件;
- 点击软件左侧功能按钮「高级设置」→ 找到「设置ADB服务地址」;
- 输入PC1的局域网IP地址(PC1IP查询方法:Win+R输入cmd,执行ipconfig命令,查看「无线局域网适配器WLAN」下的IPv4地址 一般在PC1电脑上默认的这个地方地址就是);
- 输入地址后,勾选「设置ADB服务地址」选项,软件将自动连接PC1共享的设备。
图示:PC2中设置「Adb服务器地址」为PC1的IPv4地址
常见问题提示:
- 若PC2/PC3无法连接:检查PC1防火墙是否允许「飞飞投屏」和「adb.exe」通过,或暂时关闭PC1防火墙重试;
- IP地址错误:确保输入的是PC1的「局域网IPv4地址」(如192.168.0.105),而非公网IP;
- 设备无响应:关闭PC1的「开启ADB局域网服务」,重新执行步骤1。
⚠️ 全场景故障排查
场景1:无线连接失败
① 确认手机与电脑同网段(IP前缀一致,如均为192.168.0.x)
② 检查路由器防火墙设置,允许ADB端口(5555)通信
③ 重启手机WIFI和电脑网络适配器
场景2:OTG机箱扫描不到设备
① 确认OTG转接头指示灯正常(常亮表示连接正常)
② 手动输入手机IP段(如192.168.1.1-192.168.1.255)
③ 检查手机是否开启「仅充电模式下允许ADB调试」
场景3:ADB冲突报错
① 任务管理器结束所有adb.exe进程
② 卸载冲突软件:安卓模拟器、360手机助手、酷狗音乐等
③ 重启电脑后重新连接
场景4:在输入密码时,手机黑屏
① 手机->系统设置->输入法设置->关闭安全输入(安全键盘)进程
② 没有安全键盘设置,或者关了安全输入依然黑屏的话就只能root了
场景5:开启无线adb以后,拔掉USB数据线,无线断开
① 开发者选项打开仅充电模式下允许USB调试,重新插拔设备,手机弹出提示选择仅充电方式,再开启无线adb即可
② 如果没有仅充电模式下允许USB调试 这个选项,就尝试换换手机弹出的其他方式
③ 还不行的话这种手机不支持拔掉USB开无线adb
场景6:无法启动adb服务?
① 安卓开发软件都是基于安卓官方adb程序连接手机的 有的投屏软件在卸载的时候会恶意在用户电脑增加IP安全策略,导致adb无法正常使用,导致所有安卓投屏软件、安卓开发软件都受到影响,这不是不小心增加的,也不是为了解决什么问题而增加的,因为是在卸载的时候执行的这个操作,就是故意让用户电脑卸载后无法正常使用其他投屏软件,在安装的时候会清除掉这些策略
🎬 视频功能演示
点击播放按钮查看软件操作演示视频
🔁 脚本执行演示
点击播放按钮查看脚本执行演示
⌨ 自定义键盘映射
按键映射文件为JSON格式,新增自己的按键映射文件需要放在Scripts目录中或者点击自定义选择json文件会自动导入到Scripts目录或者点击前往映射配置按钮。
按键映射文件的具体编写格式下面会介绍,也可以参考自带的按键映射文件。
按键映射脚本格式说明
通用说明
-
按键映射中的坐标位置都是用相对位置表示的,屏幕的宽高都用1表示,例如屏幕的像素为1920x1080,那么坐标(0.5,0.5)则表示的是 以屏幕左上角为原点,像素坐标(1920,1080)*(0.5,0.5)=(960,540)的位置。
或者鼠标左键单击时控制台会输出此时的pos,直接使用这个pos即可
-
按键映射中的按键码是用Qt的枚举表示的,详细说明可以参考Qt文档(搜索 The key names used by Qt. 可以快速定位)。
-
开发人员选项中打开如下两个设置,可以方便的观察触摸点的坐标:

顶层字段说明
-
switchKey:切换自定义按键映射的开关键。默认为普通映射,按此键在普通映射和自定义映射之间切换。例如
"Key_QuoteLeft"(~键)。 -
switchKeyPos(可选):按下切换键时,鼠标光标移动到的位置。格式:
{"x": 0.5, "y": 0.5} -
width / height(可选):配置适用的界面宽高,通常为背景图原始尺寸。
-
mouseMoveMap:鼠标移动映射,将鼠标移动映射为手指拖动操作(开启后隐藏鼠标并限制移动范围)。 一般在FPS手游中控制人物视野。
- startPos:手指拖动起始点(鼠标映射的锚点)
- speedRatioX:鼠标X轴灵敏度,值必须 ≥ 0.001,数值越大越不灵敏
- speedRatioY:鼠标Y轴灵敏度,值必须 ≥ 0.001
- speedRatio(已废弃):旧的统一灵敏度,建议使用独立的 X/Y
- opacity(可选):映射UI透明度,范围 0~1,默认 0.75
- timedResetView(可选):布尔值。是否启用定时视角回正——鼠标静止超过 2.5 秒后自动将触摸点移回 startPos,模拟手指回中。
- comment(可选):注释说明
-
smallEyes(可选):小眼睛按键配置。支持单个对象或数组(多小眼睛支持)。
每个小眼睛对象包含:
- key:触发小眼睛的按键码
- pos:小眼睛的触摸位置(按下后鼠标移动以此为起点)
- switchMap(可选):是否同时释放鼠标
- type(可选):通常为
"KMT_CLICK" - comment(可选):注释
-
mouseWheel(可选):滚轮映射配置,用于游戏中的缩放/翻页操作。
- clickPos:滚轮起始点击位置
- moveMinPos:滚轮最小滑动位置(向上滚动到达的位置)
- moveMaxPos:滚轮最大滑动位置(向下滚动到达的位置)
-
keyMapNodes:按键映射数组,所有按键映射都放在这个数组中。
通用可选字段(所有类型适用)
- opacity:映射UI透明度,范围 0~1,默认 1
- comment:注释说明文本
- switchMap:布尔值,是否在触发此按键时释放鼠标光标(如打开背包/地图时)
- switchMapPos:切换映射后鼠标移动到的位置,格式
{"x": 0.5, "y": 0.5} - resetMove:布尔值,操作前是否重置鼠标移动累积量,默认 false
一般按键映射有如下几种类型:
-
type:按键映射的类型,每个keyMapNodes中的元素都需要指明:
- KMT_CLICK:普通点击,按键按下模拟手指按下,按键抬起模拟手指抬起
- KMT_CLICK_TWICE:两次点击,按键按下模拟手指按下再抬起,按键抬起再模拟一次按下抬起
- KMT_CLICK_MULTI:多次点击,根据 clickNodes 数组实现一键多点连续点击
- KMT_DRAG:拖拽,按键按下模拟手指按下并拖动一段距离,按键抬起模拟手指抬起
- KMT_STEER_WHEEL:方向盘映射,专用于FPS游戏人物移动,需要4个方向键配合
不同类型的专有属性说明:
-
KMT_CLICK
- key:要映射的按键码
- pos:模拟触摸的位置
-
KMT_CLICK_TWICE
- key:要映射的按键码
- pos:模拟触摸的位置(按下和释放共用的默认位置)
- pressPos(可选):按键按下时的触摸位置(如未设置则使用 pos)
- releasePos(可选):按键释放时的触摸位置(如未设置则使用 pos)
-
KMT_CLICK_MULTI
- key:要映射的按键码
-
clickNodes:点击节点数组,每个元素包含:
- order:点击顺序(从0开始)
- delay:延迟多少毫秒后执行此点击
- pos:此点击的触摸位置
-
KMT_DRAG
- key:要映射的按键码
- startPos:拖动的起始触摸位置
- endPos:拖动的结束触摸位置
- dragSpeed:拖动速度(范围 0~1,默认 1.0),越大越快
- startDelay(可选):开始拖动前的延迟时间(毫秒)
-
KMT_STEER_WHEEL — 方向盘映射
- centerPos:方向盘中心点(摇杆锚点)
- leftKey:左方向键
- rightKey:右方向键
- upKey:上方向键
- downKey:下方向键
- leftOffset:向左的最大偏移距离
- rightOffset:向右的最大偏移距离
- upOffset:向上的最大偏移距离
- downOffset:向下的最大偏移距离
-
extendOffset(可选):冲刺/加速扩展。按下指定修饰键时扩大偏移范围。格式:
- key:修饰键,如
"Key_Shift" - offset:扩展后的最小偏移量(取原偏移与此值的较大者),如
0.2
- key:修饰键,如
-
steerWheelAlgorithm(可选):方向盘滑动算法,控制手指轨迹的生成方式:
"bezier"(默认):弧线滑动 — 手指沿三次贝塞尔曲线自然画弧,最接近人手操作"simple":轻微弧线 — 弧线幅度减半,近乎直线但带微弧"linear":直线滑动 — 纯直线移动,无弧度
完整示例(和平精英)
{
"switchKey": "Key_QuoteLeft",
"switchKeyPos": { "x": 0.5, "y": 0.5 },
"mouseMoveMap": {
"startPos": { "x": 0.57, "y": 0.26 },
"speedRatioX": 0.25,
"speedRatioY": 0.25,
"opacity": 0.75,
"timedResetView": false,
"comment": "Camera control",
"smallEyes": [
{ "key": "Key_Alt", "pos": { "x": 0.8, "y": 0.31 }, "switchMap": false },
{ "key": "Key_5", "pos": { "x": 0.9, "y": 0.33 }, "switchMap": false }
]
},
"mouseWheel": {
"clickPos": { "x": 0.27, "y": 0.2 },
"moveMinPos": { "x": 0.27, "y": 0.248 },
"moveMaxPos": { "x": 0.27, "y": 0.644 }
},
"keyMapNodes": [
{
"type": "KMT_STEER_WHEEL",
"centerPos": { "x": 0.18, "y": 0.75 },
"leftKey": "Key_A", "leftOffset": 0.089,
"rightKey": "Key_D", "rightOffset": 0.089,
"upKey": "Key_W", "upOffset": 0.15,
"downKey": "Key_S", "downOffset": 0.15,
"extendOffset": { "key": "Key_Shift", "offset": 0.2 },
"steerWheelAlgorithm": "bezier",
"resetMove": false,
"comment": "Move around"
},
{
"type": "KMT_CLICK",
"key": "Key_Space",
"pos": { "x": 0.95, "y": 0.7 },
"comment": "Jump"
},
{
"type": "KMT_CLICK_TWICE",
"key": "Key_Q",
"pressPos": { "x": 0.12, "y": 0.35 },
"releasePos": { "x": 0.12, "y": 0.35 },
"comment": "Peek Left"
},
{
"type": "KMT_CLICK_MULTI",
"key": "Key_F",
"clickNodes": [
{ "order": 0, "delay": 100, "pos": { "x": 0.6, "y": 0.4 } },
{ "order": 1, "delay": 200, "pos": { "x": 0.7, "y": 0.5 } }
],
"comment": "Multi-action"
},
{
"type": "KMT_DRAG",
"key": "Key_G",
"startPos": { "x": 0.3, "y": 0.7 },
"endPos": { "x": 0.5, "y": 0.7 },
"dragSpeed": 0.8,
"startDelay": 50,
"comment": "Swipe"
}
]
}
🖱 按键映射工具使用教程
飞飞投屏内置了可视化按键映射配置工具(ScrcpyKeyMapper),无需手写JSON即可通过拖拽方式创建和编辑按键映射。
在飞飞投屏中,点击设备控制栏的"前往映射配置"按钮即可打开该工具。
界面概览
- 左侧画布:可拖拽背景图(通常是游戏截图),在此拖放和调整映射元素位置
- 右上角 Types 面板:可拖放的映射类型列表,双击或拖拽到画布创建新元素
- 右侧 Node List 面板:已创建的映射元素列表,可调整缩放和层级
- 右侧 Properties 面板:选中元素后显示其属性配置(按键、位置、透明度等)
- 顶部工具栏:切换键设置、保存/加载JSON、上传背景图、主题切换、语言切换
快速上手(5步完成映射)
第1步:上传背景图
点击顶部 按钮上传游戏截图(建议先在手机上截一张游戏界面图传到电脑)。背景图确定了所有坐标的相对参考。
第2步:创建方向盘
在 Types 面板中找到"方向盘"(Steer Wheel),双击它。画布中央会出现一个带4个方向键的方向盘。拖拽中心圆到游戏摇杆位置,然后拖拽4个方向的小圆到摇杆的各方向边界处。在 Properties 面板中可以修改每个方向的按键和算法。
第3步:创建按键映射
从 Types 面板拖拽"单击"(KMT_CLICK)到画布上对应游戏按钮的位置。选中后按键盘上的目标键将其绑定。重复此步骤为每个游戏按钮创建映射。
- 单击:常规按钮——开火、跳跃、换弹等
- 双击:按下和释放各触发一次——适合探头、开关镜等
- 多点点击:一键触发多次点击——适合组合操作
- 拖动:模拟手指滑动——适合划屏操作
第4步:创建鼠标视野映射
从 Types 面板拖拽"鼠标移动"(Mouse Move)到画布上。这个只有一个——鼠标的移动将被映射为以 startPos 为起点的触摸拖动。在 Properties 面板中可调整 X/Y 灵敏度和小眼睛按键。
第5步:保存并使用
点击顶部 保存按钮。如果在飞飞投屏中打开,配置会通过 WebSocket 直接发送到设备;如果是在浏览器中打开,会下载一个 JSON 文件到 Scripts 目录。
键盘快捷键
| 按键 | 功能 |
|---|---|
| Ctrl + 拖拽 | 复制并移动元素 |
| Shift + 拖拽 | 移动复杂元素(如方向盘整体) |
| Delete / 拖到删除区 | 删除选中的元素 |
| 选中元素 + 按键盘 | 绑定/更换按键 |
方向盘配置要点
- 中心点拖到游戏摇杆的正中心位置
- 4个方向的小圆拖到摇杆的各方向最大移动边界
- 偏移量(Offset)会自动计算,显示在 Properties 面板中
- 冲刺扩展:勾选 extendEnabled,设置修饰键(如 Shift)和扩展偏移量。按住修饰键+方向键时,偏移范围自动扩大
- 滑动算法:在下拉框中选择弧线滑动(默认)、轻微弧线或直线滑动
- 方向键默认绑定为 WASD,可点击方向键按钮后按键盘更换
鼠标视野映射配置要点
- startPos 锚点放在屏幕中央偏上位置(右手拇指自然触摸区域)
- speedRatioX/Y 值越大鼠标越"沉"(灵敏度越低),建议从 0.25 开始调试
- 小眼睛:点击小眼睛按钮新增,支持多个小眼睛按键。按下小眼睛键时,鼠标移动以该键的 pos 为起点
- 定时视角回正:勾选 timedResetView 后,鼠标静止 2.5 秒自动将视角归中
其他功能
- 切换键:顶部输入框设置,默认为
Key_Control(Ctrl键)。游戏中按住此键在普通模式和映射模式间切换 - 滚轮映射:勾选 Mouse Wheel 后配置点击位置和滚动范围,用于游戏中的地图缩放
- 节点缩放:Node List 面板右侧的 +/- 按钮可调整所有映射元素的大小
- 层级调整:选中元素后可用上下箭头按钮调整前后层级
- 透明度:Properties 面板中的滑块可调整单个元素的透明度
- 加载JSON:可导入已有的按键映射文件进行编辑
- 暗黑模式:右上角太阳/月亮图标切换主题
- 多语言:支持中文、English、العربية
📺 虚拟投屏应用教程
虚拟投屏(虚拟屏)会在手机上创建一个独立的虚拟显示器,并把指定应用启动到这个虚拟屏上。它和手机主屏幕互不干扰:主屏可以做别的事、甚至锁屏,虚拟屏上的应用照常运行,电脑端单独操控这个虚拟屏。
🚀 使用步骤
打开应用管理
选中一台已连接的设备,打开 「应用管理」 窗口,列表会显示该设备上已安装的应用。
点击「虚拟投屏」
在目标应用右侧点击 「虚拟投屏」 按钮,系统会自动创建虚拟屏,并把该应用启动到虚拟屏上。
在电脑端操控虚拟屏
投屏成功后,设备区域会出现这个虚拟屏设备,双击即可在大屏窗口里像操作真机一样操控,主屏不受影响。
结束虚拟屏
在设备区域(或数字区域)右键该虚拟屏设备,点击 「结束虚拟屏」 即可关闭虚拟屏,手机主屏恢复正常。
⚠️ 注意事项
- 安卓版本要求:虚拟屏功能需要 Android 10(API 29)及以上 才能创建虚拟显示器。
- 输入法(软键盘)限制:在虚拟屏上直接显示输入法需要 Android 13(API 33)及以上。Android 12 / 12L 上虚拟屏属于"不可信显示器",输入法会显示在手机主屏而不是虚拟屏里。
- 部分应用可能无法在虚拟屏运行:少数游戏、桌面启动器或强依赖主屏的应用只会在主屏渲染,虚拟屏上可能出现黑屏或无响应,这是应用自身限制。
- 应用不存在会失败:如果按包名启动时找不到该应用(已卸载、包名变更等),投屏会提示失败并自动退出。
- 性能占用:虚拟屏会额外占用手机的 GPU / CPU,多开多个虚拟屏时请注意手机发热与电量。