2024-04-09 11:19:43 +08:00
|
|
|
|
# maimai-android-touch-panel
|
|
|
|
|
|
2024-04-12 10:19:08 +08:00
|
|
|
|
使用 `adb shell getevent` 记录 Android 设备触屏事件并模拟 maimai 触摸屏幕的脚本.
|
2024-04-09 11:20:37 +08:00
|
|
|
|
|
2024-08-20 07:59:37 +08:00
|
|
|
|
## 提示
|
|
|
|
|
|
|
|
|
|
玩具项目, 仅在 Xiaomi Pad 5 Pro (Android 13) 上通过测试,
|
|
|
|
|
且仅适配了 Linux 多点触控协议类型 B .
|
|
|
|
|
|
|
|
|
|
目前已知的问题有:
|
|
|
|
|
|
|
|
|
|
- 仅支持 Linux 多点触控协议类型 B 而不支持 A (#6), 这可能会导致较旧的设备不受支持,
|
|
|
|
|
两种类型不同之处详见[文档](https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt)
|
|
|
|
|
- 输出 Touch Keys 但无按键按下(分辨率问题)
|
|
|
|
|
- 游戏内按两下只识别一个tap(脚本未进入运行模式)
|
|
|
|
|
- 游戏内始终显示按下(未知原因)
|
|
|
|
|
|
|
|
|
|
本人暂无时间去修复存在的 Bug, 对于 open issue 和B站私信问题的很抱歉本人无法进行答复,
|
|
|
|
|
有能力的可以自行修复, 也欢迎提交PR.
|
|
|
|
|
|
|
|
|
|
另外本项目使用了效率较为低下且抽象的方案(Python+读图+串流), 存在延迟等问题, 由于本身是娱乐项目故未做优化.
|
|
|
|
|
|
|
|
|
|
更加优秀的项目有:
|
|
|
|
|
|
|
|
|
|
- [AstroDX](https://github.com/2394425147/astrodx)
|
|
|
|
|
- [MajdataPlay](https://github.com/LingFeng-bbben/MajdataPlay)
|
|
|
|
|
|
|
|
|
|
这些项目包含对 Mai2 Chart Player 的完整实现, 而不仅仅是一个触摸输入程序.
|
|
|
|
|
|
2024-04-12 10:19:08 +08:00
|
|
|
|
## 使用方法
|
|
|
|
|
|
2024-04-19 02:07:39 +08:00
|
|
|
|
1. 请先将游戏配置文件中 `DummyTouchPanel` 的值改为 `0`
|
|
|
|
|
2. 打开任意P图工具, 准备一个和设备屏幕大小相同的一张图片(例如:1600x2560), 将 `./image/color_exp_panel.png`
|
2024-04-14 07:16:16 +08:00
|
|
|
|
放置到该图片圆形触摸区域的位置, 编辑好的图片放到脚本 `image` 目录下取名 `image_monitor.png`.
|
2024-04-19 02:07:39 +08:00
|
|
|
|
3. 编辑 `config.yaml` 配置文件, 修改 `exp_image_dict` 配置, 将各区块对应的 RGB 通道颜色值改为刚P的图的对应区块颜色值(
|
2024-04-14 03:36:26 +08:00
|
|
|
|
一般不用改默认就行)
|
2024-04-19 02:07:39 +08:00
|
|
|
|
4. 电脑安装 ADB 调试工具, 安装路径添加到系统环境变量里面
|
|
|
|
|
5. 如果电脑上没有 Python 环境, 请先去 [官网](https://www.python.org/) 下载安装
|
|
|
|
|
6. 双击运行 `install.bat` 安装依赖
|
|
|
|
|
7. 先将实际屏幕大小填入脚本内 `ANDROID_ABS_MONITOR_SIZE` 配置, 打开终端, 运行 `adb shell getevent -l`, 点一下屏幕的最右下角的位置,
|
2024-04-14 07:16:16 +08:00
|
|
|
|
在终端获取该次点击得到的 `ABS_MT_POSITION_X` 和 `ABS_MT_POSITION_Y` 的数值, 把十六进制转换到十进制,
|
|
|
|
|
将得到的数据填入到 `ANDROID_ABS_INPUT_SIZE` 配置
|
2024-04-19 02:07:39 +08:00
|
|
|
|
8. Android 设备充电口朝下一般为屏幕的正向, 如需反向屏幕游玩可将配置 `ANDROID_REVERSE_MONITOR` 改为 true
|
|
|
|
|
9. 编辑 `config.yaml` 配置文件, 按文件内说明修改多个配置
|
|
|
|
|
10. 下载一个 `VSPD` 虚拟串口工具, 将 `COM3` 和 `COM33` 建立转发
|
|
|
|
|
11. 手机打开 USB 调试, 强烈建议同时使用 USB 网络共享连接电脑, 串流走 WLAN 可能不是很稳定
|
|
|
|
|
12. 电脑画面可使用 `IddSampleDriver`, `Sunshine` 和 `Moonlight` (提一嘴:想要竖屏串流必须使用支持竖屏的 Sunshine Nightly
|
2024-04-16 06:15:49 +08:00
|
|
|
|
版本, [Releases 地址](https://github.com/LizardByte/Sunshine/releases/nightly-dev))
|
|
|
|
|
或者延迟较大但比较方便的 `spacedesk` 等软件串流到 Android
|
|
|
|
|
设备,
|
|
|
|
|
详细过程请自行寻找, 不在本篇讨论范围之内
|
2024-04-19 02:07:39 +08:00
|
|
|
|
13. 手机连接电脑, 先双击运行 `start.bat`, 再运行游戏, 脚本控制台输出 `已连接到游戏` 即可
|
|
|
|
|
14. 进游戏调整延迟, 一般判定A/B都要调才能正常用, 我这边是 `A:-1.0/B:+0.5` 到 `A:-2.0/B:+2.0`
|
|
|
|
|
15. 打一把看看蹭不蹭星星/触控是否灵敏, 根据体验修改 `AREA_SCOPE` 变量
|
|
|
|
|
16. 如果单点延迟低但滑动时延迟极大, 请将脚本中 `TOUCH_THREAD_SLEEP_MODE` 修改为 false,
|
2024-04-16 06:15:49 +08:00
|
|
|
|
或者可以调小 `TOUCH_THREAD_SLEEP_DELAY` 的值(如果还是卡请提 issue 反馈)
|
2024-04-12 10:19:08 +08:00
|
|
|
|
|
2024-10-18 00:53:03 +08:00
|
|
|
|
|
2024-04-14 07:39:25 +08:00
|
|
|
|
## 命令列表
|
|
|
|
|
|
2024-04-13 01:55:18 +08:00
|
|
|
|
游戏时如果不小心断开连接, 请在控制台输入 `start` 并回车来重新连接游戏
|
|
|
|
|
|
2024-04-14 07:23:27 +08:00
|
|
|
|
输入 `reverse` 可调整触控设备屏幕方向
|
|
|
|
|
|
|
|
|
|
输入 `restart` 可重新读取配置文件/重启脚本
|
|
|
|
|
|
2024-04-14 00:28:56 +08:00
|
|
|
|
## 部分问题
|
|
|
|
|
|
2024-04-19 02:03:41 +08:00
|
|
|
|
关于延迟/其他建议可参考 [#3](https://github.com/ERR0RPR0MPT/maimai-android-touch-panel/issues/3)
|
|
|
|
|
|
2024-04-14 00:28:56 +08:00
|
|
|
|
Q: 在安卓高版本(13,14)上测试触摸区域完全对不上,只有点屏幕左上角有用,图片用的是平板实际分辨率,在一台安卓10设备测试是正常的
|
|
|
|
|
|
2024-04-14 03:36:26 +08:00
|
|
|
|
A: 按步骤修改脚本内 `ANDROID_ABS_MONITOR_SIZE` 和 `ANDROID_ABS_INPUT_SIZE` 配置
|
2024-04-14 00:28:56 +08:00
|
|
|
|
|
2024-10-18 00:53:03 +08:00
|
|
|
|
Q: 关闭再打开报错
|
|
|
|
|
|
|
|
|
|
A: 如果直接关闭控制台窗口有可能导致后台进程残留,请使用任务管理器彻底关闭进程或者使用ctrl+z终止程序
|
|
|
|
|
|
2024-04-12 10:19:08 +08:00
|
|
|
|
## 注意
|
|
|
|
|
|
2024-10-18 00:53:03 +08:00
|
|
|
|
想要加 2P 的重新复制一下脚本并添加串口 COM4 到 COM44 的转发,并且在配置文件“SPECIFIED_DEVICES”中指定使用“adb devices”获取到的设备序列号
|
2024-04-12 10:19:08 +08:00
|
|
|
|
|
|
|
|
|
该脚本仅用于测试, 目前来说打12+及以下应该是问题不大, 12+以上水平不够没试过.
|
2024-04-14 03:54:51 +08:00
|
|
|
|
|
2024-04-16 06:15:49 +08:00
|
|
|
|
## 类似项目
|
|
|
|
|
|
|
|
|
|
[maimai-windows-touch-panel](https://github.com/ERR0RPR0MPT/maimai-windows-touch-panel)
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
[MIT License](https://github.com/ERR0RPR0MPT/maimai-android-touch-panel?tab=MIT-1-ov-file)
|
|
|
|
|
|
2024-04-14 03:54:51 +08:00
|
|
|
|
## 其他
|
|
|
|
|
|
2024-04-14 07:16:16 +08:00
|
|
|
|
编辑好的区块成品图类似这样:
|
2024-04-14 03:54:51 +08:00
|
|
|
|
|
|
|
|
|

|