Skip to content
csszyftPublic

About

手柄控制的攻略视频悬浮窗:DS5 一键暂停/显隐,B 站分 P 与弹幕,mpv 内核,可选 PS 组合键隔离

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

GuidePad

打 BOSS 前要查攻略,切出去开浏览器、暂停、找进度点、切回游戏——一套流程下来手柄已经放下了。GuidePad 把这件事简化成两个键:麦克风键暂停 / 继续视频,PS 键显示 / 隐藏攻略窗口,眼睛不用离开游戏,手不用离开手柄。

它是一个 Windows 桌面小工具:用 mpv 做播放器(启动的独立进程,不是内嵌浏览器),控制面板常驻托盘,悬浮窗置顶、可鼠标穿透、支持四角摆放。手柄读取走 DS5 原生 USB HID 报文,不依赖 XInput,也不向手柄写入任何输出报告。

控制面板

功能

  • 手柄控制:DS5 原生 USB HID 直读,麦克风键暂停 / 继续,PS 键显隐攻略窗口;所有按键都可以在「录入 / 自定义快捷键」面板里重新绑定,支持任意组合键(松开组合成员时触发一次,可以按住一个修饰键反复按另一个键)。
  • B 站分 P / 合集:粘贴视频链接自动读取分集列表,「上一集 / 下一集」可绑到手柄;自动获取每集对应的弹幕。
  • 弹幕:B 站 XML 自动转成 ASS 渲染在视频底部,预留底部区域、降低拥挤度;也支持直接加载 ASS / SSA / SRT 字幕,弹幕开关就是字幕轨开关。
  • 实用细节:前进键短按跳 5 秒、长按临时 2 倍速;音量、画质上限、Cookie、缓存大小、窗口位置 / 大小 / 最大化状态全部可配置并记忆;关面板后留托盘,双击托盘图标唤回。
  • PS 组合键隔离(可选,进阶):勾选后用开源的 libVIIPER 创建原生 USB 虚拟 DS5 逐帧转发输入,HidHide 隐藏实体手柄,游戏只能看到虚拟手柄,PS / 麦克风组合键在转发前被过滤,不会漏进游戏;震动、扳机反馈、扬声器与麦克风音频转发回实体手柄。需要 %ProgramFiles%\USBip\usbip.exe 和 HidHide 两个带签名的驱动组件,首次开启要管理员权限。蓝牙连接的 DS5 保持直连,不参与隔离。设计过程与离线验证记录见 docs/独立隔离方案.md。

快速开始

要求:Windows 10/11 x64、.NET Framework 4.x(系统自带)、USB 连接的 DualSense 手柄。

  1. 编译主程序(用的是 Windows 自带的 .NET Framework 编译器,无需安装任何依赖):

    .\build.ps1
  2. 下载播放器二进制(脚本自带 SHA-256 校验;mpv 从本仓库 Release 拿,yt-dlp 从官方 Release 拿):

    .\setup.ps1
  3. 运行 GuidePad.exe,顶部应显示「DS5 USB 原生 HID 已识别」。

  4. 点「打开本地攻略」选择本地视频文件,或粘贴完整 B 站链接(https://www.bilibili.com/video/BV...)。

  5. 开游戏。短按麦克风键暂停 / 继续,短按 PS 键显示 / 隐藏攻略窗口。

关闭控制面板后程序缩到托盘;右键托盘图标可以退出,会同时关掉它启动的 mpv。

默认按键

按键 功能
麦克风键 暂停 / 继续
PS 键 显示 / 隐藏攻略窗口
PS + 麦克风 最大化 / 还原
PS + R1 前进 5 秒
PS + L1 后退 3 秒
PS + L2 / R2 上一集 / 下一集
PS + 上 / 下 音量增 / 减

键盘备用:Ctrl+Alt+Space 暂停 / 继续、Ctrl+Alt+V 显隐、Ctrl+Alt+←/→ 后退 / 快进、Ctrl+Alt+D 弹幕开关。完整动作列表(17 个可绑定动作)和录入方法见 docs/使用说明.md。

从源码构建

构建脚本用的是 Windows 自带的 .NET Framework 4.x C# 编译器,不需要装任何东西:

.\build.ps1          # 生成 GuidePad.exe
.\build-update.ps1 -StagingDirectory <目录>   # 额外生成自带新版的 GuidePad-update.exe 升级器

两个脚本都会把 libVIIPER 运行库、许可证和托盘图标嵌入 exe;libVIIPER 在首次开启隔离时由程序自解压到 data/ 并校验哈希。

仓库结构

src/                  C# 源码(WinForms 主程序、DS5 输入、隔离层、升级器、弹幕转换器)
assets/               图标与界面截图
player/               mpv 便携配置,以及随 mpv 构建附带的小型运行库(mpv.exe 用 setup.ps1 下载)
runtime/isolation/    libVIIPER.dll(构建时嵌入 exe)
tools/                yt-dlp CDN 选择插件(danmaku2ass 原版 Python 脚本保留作参考)
licenses/             GPL-3.0、mpv、yt-dlp 许可证文本(libVIIPER 在 src/)
docs/                 使用说明、隔离方案、上游项目记录
research/             隔离功能的离线验证记录与输入过滤组件源码

默认配置 vs 本机配置

仓库里的 config.json 是干净默认值:Cookie 关闭、画质不限制、启动时恢复上次视频。程序运行后会自动改写它(记住上次视频、窗口位置、Cookie 路径),这份文件会被 git 标记为修改——属正常现象,别把它提交回去。

已知边界

  • 麦克风键的硬件静音行为可能保留,长按 PS 或麦克风键会触发手柄自身的关机 / 静音动作,请用短按。
  • Steam、Xbox Game Bar 可能响应 PS 键;请在 Steam 控制器设置里关闭「Guide 键聚焦 Steam」,在游戏栏设置里关闭手柄启动。
  • 蓝牙连接的 DS5 基础报告不含麦克风键,本工具会明确提示,建议用 USB。
  • 游戏建议用无边框窗口;独占全屏不保证悬浮窗可见,本工具不做注入或强改。
  • 若系统装有 HidHide,需把 GuidePad.exe 加入白名单才能读取真实手柄;工具不会绕过设备隐藏。

上游项目与许可

本项目按 GPL-3.0 发布(LICENSE)。播放器与工具链来自这些上游项目:

  • mpv(shinchiro 构建,v0.41.0-1227-ge471496c5)— GPL,二进制未修改,随 Release 分发;
  • yt-dlp(2026.10.21)— Unlicense;
  • danmaku2ass — GPL-3.0,B 站 XML 管线移植为 src/DanmakuConverter.cs,原版 Python 脚本随仓库分发作参考;
  • libVIIPER(v1.0.1)— GPL-3.0,构建时嵌入 exe;

版本、下载地址与 SHA-256 校验值的完整记录见 docs/上游项目.md。

About

手柄控制的攻略视频悬浮窗:DS5 一键暂停/显隐,B 站分 P 与弹幕,mpv 内核,可选 PS 组合键隔离

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages