俺正在 mac 上打王者:开源项目 Scrcpy Mask 像模拟器一样用鼠标键盘控制 Android 设备,基于 Rust & Tarui 开发的跨平台客户端

写在前面

为了实现电脑控制安卓设备,本人使用 Tarui + Vue 3 + Rust 开发了一款跨平台桌面客户端。该客户端能够提供可视化的鼠标和键盘按键映射配置。通过按键映射实现了实现类似安卓模拟器的多点触控操作,具有毫秒级响应速度。该工具可广泛用于电脑控制安卓设备玩手游等等,提供流畅的触控体验。

本项目仅实现了 Scrcpy 控制协议,不提供投屏功能。因为投屏会存在延迟和模糊问题,本项目另辟蹊径,直接放弃投屏,而使用透明的蒙版显示窗口背后的内容(可以使用 AVD 、手机自带低延迟投屏界面等),从根本上杜绝了投屏延迟的现象。

感兴趣的请进主页:项目地址

特性&TODO

  • 有线、无线连接安卓设备
  • 启动并连接 Scrcpy 服务端
  • 实现 Scrcpy 控制协议
  • 鼠标和键盘按键映射
  • 可视化编辑按键映射配置
  • 按键映射配置的导入与导出
  • 更新检查
  • 在按键映射和插入文本之间切换
  • 国际化
  • 手柄按键映射
  • 更好的宏
  • 通过 WebSocket 提供外部接口
  • 帮助文档

相关视频

截图

  • 设备控制

  • 可视化编辑按键映射配置

  • 游戏控制

基本使用

  1. releases 中安装适合你系统平台的软件包
  2. 确认你的安卓设备类型
    1. 对于手机或平板电脑等物理设备
      1. 你需要自己解决投屏的问题。推荐使用设备品牌的官方投屏方式,这样一般延迟最小。
      2. 通过USB或无线方式在设备上启用ADB调试,然后将其连接到电脑。
    2. 对于模拟器,不仅不需要投屏,而且模拟器通常默认启用ADB有线调试。所以几乎不用操作就能获得最好的体验。
  3. 启动软件并导航到设备页面。
    1. 在可用的设备中查找你的设备(如果未找到,请自行搜索如何为安装设备启用ADB调试)。
    2. 右击你的设备并选择“获取屏幕大小”。根据获得的屏幕尺寸为参考,正确输入设备的宽度和高度。注意:如果宽度或高度不正确 (例如,在纵向和横向模式下这两个参数是颠倒的),所有触摸操作将被忽略,但是不会有任何错误消息。
    3. 再次右击设备并选择“控制此设备”。
  4. 导航到设置页面->蒙版设置,将蒙版的宽度和高度设置为设备大小的一定倍数,以确保蒙版大小合适。
  5. 导航到蒙版页面,你可以在其中看到一个完全透明的蒙版区域。接下来,调整并移动模拟器窗口或投屏窗口,让其内容区域与透明蒙版区域完全对齐。
  6. 导航到键映射页面,切换或编辑键映射配置。
  7. 返回到蒙版界面,开始使用吧!

最后

如果对这个项目感兴趣,欢迎收藏。

此外,本人在掘金上分享项目的实现原理细节,可以来了解一下 AkiChase 的个人主页 - 动态 - 掘金

1 Like

牛逼啊大佬

1 Like

是不是可以理解成键鼠控制,看手机的屏幕?

1 Like

手机投屏或者使用安卓模拟器。你看着手机屏幕怎么知道电脑鼠标在哪呢,除非你的游戏不需要鼠标参与。

我的初衷是解决模拟器没有适合的按键映射的问题。

2 Likes

这个与 waydroid 的适配怎么样呢?
waydroid 是一个Linux的安卓子系统,但是并没有很好的按键映射方式,目前我用的qtscrcpy也实现了按键映射,但是并没有图形化编辑按键映射的能力

我手上并没有Linux的机器,你可以自行测试。理论上只要是可通过adb连接的安卓设备都可以

Scrcpy Mask v0.3.0 更新了!现在 Scrcpy Mask 可以用于控制安卓设备玩和平精英之类的FPS手游。

经测试,控制 macOS 上的 Android Studio 模拟器来玩和平精英是没问题的。

【如何用电脑玩FPS手游?这样的“安卓模拟器”,也不是不可以】 如何用电脑玩FPS手游?这样的“安卓模拟器”,也不是不可以_哔哩哔哩_bilibili

目前的问题是我没玩过手柄,甚至还没买呢

老板,你的 aarch版提示 损坏,咋回事?

可能是mac有安全检测吧,你自己搜搜要怎么关掉

需要自己解决投屏问题的话,对于我这样的小白就很难了。

可以拖拽传输文件不,这个搞上就好了

今天折腾了折腾 linux 上的 waydroid 安卓容器,遇到的一个问题就是火影忍者手游不支持键盘,当时就想到了这个项目,尝试了一下,效果出其得好
很棒的项目