
Sunshine 虚拟手柄让手机、平板变成 PC 游戏的物理控制器【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine周六晚上你用平板连着 Moonlight 想玩《艾尔登法环》游戏却反复提示未检测到控制器——手里明明有设备屏幕上却只有一块触屏。Sunshine 作为自托管游戏串流服务器内置的虚拟手柄功能专门解决这件事它把 Moonlight 客户端的触摸、按键和陀螺仪信号翻译成本机游戏能直接认出的 Xbox 360、DualShock 4 等标准手柄信号。你不需要任何实体手柄串流目标机上的游戏会以为插着一个真手柄。它到底在干什么把虚拟手柄理解成一个手柄替身Moonlight 发来的每一记按键都被 Sunshine 在宿主机上代打成一个标准控制器的动作。游戏不关心你的输入来自屏幕还是橡胶按键只关心有没有一个合法手柄在响应。开始之前需要准备什么Moonlight 客户端装在手机、平板或另一台电脑上是串流的发送端虚拟手柄的原始输入都从它来。宿主机装好 Sunshine 并以服务方式运行虚拟手柄由 Sunshine 进程在宿主侧创建Sunshine 不跑后面全白搭。按平台装驱动Windows官方推荐 Virtual HID BrokerLizardByte 在维护的虚拟输入驱动支持 Xbox One/Series、DualSense 等全套手柄型号免费的 ViGEmBus 只支持 Xbox 360 和 DualShock 4 两种型号且已停止更新仅作兜底。macOS虚拟手柄同样依赖单独安装的 Virtual HID Broker。Linux需要读写/dev/uinput的权限虚拟输入设备节点官方安装脚本会自动建好input组Web UI 检测缺失时会直接给出修复步骤。Web UI 可访问浏览器打开https://localhost:47990首次访问需输入初始化时设置的账号密码忽略自签名证书的警告即可。把虚拟手柄开起来Sunshine 现在主要通过 Web UI 配置界面里的 Input 页就是虚拟手柄的控制台。进去后确认控制器输入是开启状态默认就是开启的改完保存无需重启服务。Web UI 里的 ViGEmBus 驱动安装入口Windows 用户的一键安装入口接着选择手柄后端。Windows 和 macOS 上Sunshine 未选过后端时会持续弹提示让你在全部可用驱动 / 仅 Virtual HID Broker / 仅 ViGEmBus / 禁用之间挑一个选全部意味着有有效许可证时优先走 Virtual HID Broker没有就自动退回 ViGEmBus 兜底。Linux 不需要这一步直接走系统自带的 uinput。最后是仿真型号。默认autoSunshine 根据 Moonlight 上报的控制器类型来选带运动传感器或触摸板的设备会选 PlayStation 风格手柄其余默认 Xbox 风格。想固定成某一款就直接指定gamepad x360x360、xone、xseries、ds4、ds5、switch、generic七个值对应不同型号完整列表见 配置文件说明。然后打开 Moonlight连上你的 Sunshine 主机进游戏。屏幕上的虚拟按键出现、游戏里手柄图标亮起、设备管理器或系统设置里能看到新控制器——看到任意一条就说明链路通了。按场景微调玩靠陀螺仪的游戏射箭、体感类保持motion_as_ds4默认开启客户端上报的运动数据会让 Sunshine 优先仿真 DS4不需要体感时关掉它避免误判。客户端有触摸板输入touchpad_as_ds4默认开启触摸板会仿真成 DS4 触摸板游戏把触摸板点击当成别的东西时可以关掉试试。某款游戏只认特定布局把gamepad从auto改成对应型号比如只认 DualShock 4 的游戏改成ds4。注意 ViGEmBus 后端下只有auto、x360、ds4可选想要更多型号得用 Virtual HID Broker。PS 风格手柄里Select 键没反应打开ds4_back_as_touchpad_click让该按键同时触发 DS4 触摸板点击——不少游戏实际绑定的是这个动作而不是按键本身。按键位置不合手这属于客户端范畴直接在 Moonlight 的设置里改控制器布局和按键映射别去改 Sunshine 配置。在意操作延迟手柄信号本身是几十字节的 UDP 小包几乎不产生延迟你感觉到的延迟九成来自视频编码和网络。调编码参数、换有线网络见 性能调优。出了问题往哪查如果游戏完全检测不到控制器先别怀疑游戏——打开 Web UI 的故障排除页看 Virtual Input 一栏的驱动版本和许可证状态驱动没装好或许可证失效Sunshine 会连兜底提示都给你弹出来。把驱动装好、重启电脑装过虚拟输入驱动后官方建议重启再重连 Moonlight 会话。如果控制器被认出来了、但某个按键不生效多半是仿真型号和游戏不匹配换一个gamepad值重连或在 PS 风格手柄下打开ds4_back_as_touchpad_click再观察游戏内的键位提示变化。如果是 Raw Input 类游戏连键盘鼠标都收不到而虚拟手柄又正常——查看日志里 libvirtualhid 的版本和回退记录确认没有静默退到 SendInput 注入路径grep -i libvirtualhid sunshine.log串流中按键有延迟但本地操作正常时几乎可以排除虚拟手柄本身优先查编码和网络日志界面能直接看到是编码卡住还是网络抖动故障排除页的日志视图用来定位串流延迟来源 平台相关的输入故障案例更多见 故障排查。接下来还能做什么虚拟手柄只是 Moonlight 输入链路的一半客户端侧的按键布局、宏和每游戏配置都在 Moonlight 里做两端配合才是完整体验。宿主机侧的输入细节键位转发、ds4_back_as_touchpad_click之类的开关都集中在 Web UI 的 Input 页和 配置文件说明 的 Input 章节需要时直接翻那里。手柄信号是极小的 UDP 包操作延迟基本等于视频串流延迟先调视频和网络再怀疑手柄。gamepad保持auto游戏挑手柄时再手动指定型号重连后生效。排查顺序故障排除页看驱动和许可证 → 换仿真型号 → 查日志。装过或更新过虚拟输入驱动后重启一次宿主机。现在连上 Moonlight按一个键看看游戏里亮不亮。【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考