Skip to content
LostonelzqPublic

About

轻划:通过局域网用 Windows 键盘和鼠标控制 Android 手机

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

轻划 · SJM

用 Windows 键盘和鼠标控制支架上的 Android 手机,支持刷视频、悬浮鼠标和点击。当前版本 1.0.8(局域网试用版),由 Windows EXE 和 Android APK 组成,不依赖云端服务,日常使用无需 Root、USB 或无线调试。

功能与限制

  • 全局快捷键上下滑动,窗口最小化后仍有效。
  • Ctrl + 鼠标滚轮切换视频。
  • 按住 Alt 移动手机悬浮箭头,左键点击;松开恢复电脑点击。
  • 六位码配对、保存凭据、状态检查和原地址自动重连。
  • 手机通知栏停止接收,电脑暂停控制或取消配对。

暂不支持直接键盘打字、鼠标拖拽、自动发现新 IP、跨互联网连接、自动点赞/关注/评论、自动更新。开发用无障碍填字接口不是完整输入功能;当前测试设备的视频号评论框填字验证未通过。不包含远程输入法。

运行环境

设备 要求
电脑 Windows,主要在 Windows 11 验证;使用 .NET Framework 4.x
手机 Android 8.0 / API 26 及以上,主要在 Xiaomi 15 / HyperOS 3 验证
网络 两端局域网互通,电脑可以接网线
手机权限 手动开启轻划无障碍服务,允许后台接收

未声明全机型或全部视频 App 兼容。

获取与安装

仓库不存放二进制文件。构建后产物位于 dist/:

  • SJM.exe:电脑直接运行。
  • SJM-1.0.8.apk:传到手机安装。

已发布 v1.0.8 发行包:Windows EXE · Android APK · SHA-256 校验文件。也可按下方说明从源码构建。运行成品不需要 Java、Python、Gradle 或 Android 开发工具。

  1. 手机安装并打开轻划。
  2. 点击“设置无障碍权限”,按系统提示手动开启“轻划 · 上下滑动”。当前权限包含手势和窗口控件访问,后者用于输入框兼容性测试。
  3. 返回轻划,点击“生成配对码并开启接收”,建议允许通知,便于随时停止。
  4. 电脑运行 EXE,填写手机轻划首页显示的 IPv4 地址和 6 位配对码,点击连接。
  5. 手机切回视频 App 并保持解锁。

配对码有效期两分钟,成功使用后失效;连续输错五次需生成新码。可以先配对后开无障碍,但未开启时不能执行手势。

地址示例:192.168.1.20。不要填写无线调试端口,也不要在地址后附加端口。

快捷键与鼠标

操作 手机行为
Ctrl + ↓ 上滑,通常为下一条视频
Ctrl + ↑ 下滑,通常为上一条视频
Ctrl + 空格 上滑
Ctrl + 滚轮向下 上滑
Ctrl + 滚轮向上 下滑
按住 Alt + 移动鼠标 显示并移动手机箭头
按住 Alt + 左键 在箭头尖端位置点击手机
松开 Alt 停止鼠标会话,隐藏箭头,恢复电脑点击
窗口“暂停控制” 停止手机控制并释放快捷键

电脑光标仍会移动。手机指针按当前显示器的位置映射,围绕显示器中心放大到初版的 1.5 倍;超出范围时停在手机屏幕边缘。当前只支持左键轻触,不支持拖拽。

Ctrl + 空格可能与输入法冲突;Ctrl + 滚轮会占用浏览器缩放,滚轮功能可以单独取消勾选。热键注册失败会提示具体冲突组合。

窗口最小化后仍有效;关闭窗口会退出。无托盘模式,也没有 F8/F9/F10 或鼠标侧键绑定。

网络与配对

手机 IP 没有写死,通信端口固定为 TCP 39871。 电脑保存用户填写的地址,启动时自动连接。

  • 每 5 秒尝试检查连接;单次普通请求超时上限 6 秒,检查不重叠执行。
  • 网络恢复且 IP 不变时自动恢复;用户主动暂停的状态保留。
  • 失败的滑动和点击不会自动补发,避免恢复后误操作。
  • 手机超过 15 秒没有认证通信会显示暂未通信。“已配对”不等于网络在线。
  • IP 改变时,当前需电脑取消配对,再填新地址和新配对码;尚无自动发现。
  • 电脑“取消配对”只清除本机记录。手机“撤销已配对的电脑”更换密钥,使旧电脑凭据失效。

访客 Wi-Fi、AP 隔离、防火墙或不同网段的访问限制都可能阻断连接。无线调试仅供开发安装与诊断,关闭它不影响日常使用。

排障

现象 检查方法
连接被拒绝 手机是否已开启接收
前台正常,切回视频后超时 检查应用后台限制;测试小米设备设为“省电策略 → 无限制”后恢复
已配对但不能滑动 检查轻划自己的无障碍服务,而非系统“无障碍菜单”
换 Wi-Fi 后失效 核对局域网互通和手机 IP
手机重启或应用强行停止 重新打开轻划并开启接收
无障碍授权被限制 阅读系统提示,按系统提供的流程自行确认;程序不绕过授权
Windows 意外退出 查看 %LOCALAPPDATA%\SJM\diagnostics.log,分享前检查并脱敏

常驻通知不保证服务永远不受系统限制。手机锁屏或熄屏时拒绝滑动和点击。

隐私与认证

  • 不截图、不录音,无广告、分析 SDK 或云端账号。
  • 无障碍具有读取窗口控件权限。当前填字测试只访问焦点输入框,不回传页面文字,并拒绝已标记为密码的输入框。
  • 普通控制只传指令、坐标和状态;填字测试通过加密连接传递显式指定的短文本,不会自动发送评论。
  • 手机凭据保存在私有 SharedPreferences,禁止备份/迁移;TLS 私钥位于 Android Keystore。
  • Windows 用当前用户 DPAPI 加密保存 %LOCALAPPDATA%\SJM\pairing.dat,异常日志位于同一目录。当前没有存储目录设置。
  • 使用 TLS 1.2、配对后证书指纹固定、随机挑战及 HMAC-SHA256。首次配对采用首次信任方式,只应在可信局域网配对,不能抵御首次配对时的主动冒充。
  • 所有持有效配对凭据的电脑都有控制权;手机停止接收会断开连接并隐藏指针。

源码结构

路径 内容
android/ 原生 Java Android 接收端
SwipeService.java 无障碍滑动及控制入口(位于 Android 源目录)
PointerControl.java 悬浮箭头、按帧合并移动、点击、填字测试
ReceiverService.java TLS 接收与会话管理
Protocol.java / TlsIdentity.java 有界解析、HMAC 与 Keystore 身份
desktop/Program.cs WinForms 界面、热键、鼠标钩子、状态检查
desktop/RemoteClient.cs 普通请求与证书校验
desktop/PointerSession.cs 持续鼠标连接
scripts/ / tests/ 构建脚本与回归测试

普通指令包括 STATUS、UP、DOWN、FOCUS、TEXT:。MOUSE2 认证后进入持续 TLS 会话:移动不逐条等待回复,手机通过 Choreographer 合并到最新位置;点击和周期检查仍确认。保留旧 MOUSE 协议。解析长度、坐标范围、并行连接数和鼠标会话数均有限制。

滑动轨迹为纵向 76% → 28%、持续 260ms,下滑反向,间隔至少 450ms。指针断流有约 800ms 隐藏计时,实际执行受系统调度影响。

从源码构建

需要 Windows、PowerShell、JDK 17、Android SDK Platform 36、Gradle 8.14、Android Gradle Plugin 8.11.1,以及 .NET Framework C# 编译器。

当前脚本依赖开发机安装布局,不是开箱即用的通用构建脚本;未附带 Gradle Wrapper。 请先调整:

  • scripts/build.ps1:JDK、SDK、Gradle 路径。
  • scripts/test.ps1:JDK 路径。
  • SDK 也可用不提交的 local.properties 配置 sdk.dir。

依赖下载需能访问 Google Maven / Maven Central。在仓库根目录运行,构建前关闭运行中的 EXE:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/test.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build.ps1

构建会执行 Android release、lint、Windows 编译,并输出 SHA-256。测试使用回环端口 39871,运行前确保该端口空闲。

首次构建在 .local/ 生成 release 签名和 DPAPI 加密密码。保留签名、不要提交或分享;不同签名不能直接覆盖安装原 APK,卸载会清除配对。DPAPI 与 Windows 用户绑定,迁移构建机需另外妥善迁移签名凭据。

.local/、dist/、缓存、签名、日志和现场调试材料均不提交。测试代码中的固定字符串是测试夹具,不要替换为真实凭据。

验证情况

  • Java 协议认证、指令白名单、长度边界、配对码有效期和失败次数限制。
  • Java/C# HMAC 一致性、真实本地 TLS 握手与证书指纹拒绝。
  • 持续鼠标会话、无 MOVE 回复时连续推进坐标、点击顺序、认证前点击丢弃及关闭连接。
  • 使用隔离配对文件的 Windows 界面状态、窗口释放检查。
  • Android release 和 lint;Xiaomi 15 滑动、指针显示和点击评论框实测。
  • 当前视频号无障碍直接填字测试未通过。
  • 1.0.8 一次 4 秒轨迹测试:收到 234 个位置,处理 127 次帧更新,约 32 次/秒。这是应用处理次数,不是最终屏幕呈现帧率,不保证所有网络达到相同速度。

Windows 曾发生一次无系统崩溃记录的退出;已补充诊断和回调释放保护,但未复现原始原因,不宣称所有退出问题均已解决。

版本记录

版本 变化
1.0.8 连续发送移动、手机按帧合并,改善等待回复造成的卡顿
1.0.7 白色黑边箭头,1.5 倍移动速度
1.0.6 Alt 鼠标控制与填字兼容性测试
Windows 1.0.5 异常日志、回调及窗口释放保护
1.0.4 定时状态检查、原地址自动重连
1.0.3 方向键和滚轮方向调整
1.0.2 Ctrl 快捷键、滚轮与配对界面

反馈与许可

欢迎通过 Issues 提供设备型号、系统版本、轻划版本、复现步骤和脱敏错误信息。不要上传配对文件、私钥、签名或包含私人内容的截图。

本仓库尚未附加开源许可证。公开可见不等于授予任意使用、修改和再分发许可。

About

轻划:通过局域网用 Windows 键盘和鼠标控制 Android 手机

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages