Cemu 控制器 API 选择 — SDL、XInput、DirectInput 选哪个
什么是控制器 API
物理手柄连接 PC 后,Windows 需要一个标准接口来读取手柄输入(按键按下、摇杆位置)。不同手柄厂家实现不同,所以需要各种 API 适配。
Cemu 支持以下几种:
| API | 平台 | 适配范围 | 延迟 | 推荐 |
|---|---|---|---|---|
| SDL | 全平台 | Xbox、PS4/5、Switch Pro、JoyCon、更多 | 低 | ⭐⭐⭐⭐⭐ |
| XInput | Windows | Xbox 360/Xbox One/Xbox Series | 低 | ⭐⭐⭐⭐ |
| DirectInput | Windows | 老手柄、第三方手柄 | 中等 | ⭐⭐ |
| Keyboard | 全平台 | 纯键盘(不推荐长时间玩) | — | ⭐⭐ |
SDL:2.6 推荐首选
Cemu 2.x 新增 SDL2 GamePad 输入 API。SDL 是跨平台的游戏控制器标准,好处:
- 原生支持几乎所有现代手柄——Xbox Series、DualSense(PS5)、DualShock 4(PS4)、Switch Pro、JoyCon 左右半、8bitdo、几乎所有蓝牙手柄
- 不需要第三方驱动——直接插 USB 或蓝牙配对就能识别
- 比 XInput 支持的手柄范围宽得多
- 延迟低、响应快
2024 年发布的 Cemu 2.1 甚至在更新日志里专门提到 SDL 作为新输入 API——这是官方主推的方向。
XInput:Windows 上的传统方案
XInput 是微软为 Xbox 手柄设计的 API。在 Windows 上:
- Xbox 360/Xbox One/Xbox Series 手柄可以直接用(不需要 Steam 输入映射、不需要 DS4Windows)
- 延迟很低
- 仅支持 Xbox 系列手柄——PS 和 Switch 手柄需要先转译成 XInput 信号(通过 DS4Windows、Steam 输入等)
Windows 上的 Xbox 手柄用户:XInput 和 SDL 都能选,效果差不多。SDL 的优势是如果你换 PS 或 Switch 手柄也不用换 API。
DirectInput:老手柄的退路
DirectInput 是 DirectX 的旧控制器接口。主要用于:
- 非常老的第三方手柄(十年前的罗技、赛钛客等)
- 一些摇杆类控制器
现代手柄基本不需要 DirectInput。
怎么设置
- 顶部 → Options → Input settings
- Emulated controller 选好类型(通常 Wii U GamePad)
- Controller API 下拉菜单选 SDL(或 XInput)
- Controller 下拉菜单应该能看到你的物理手柄名称
- 如果没看到——确认手柄插好了、蓝牙配对了,或点右上角 Refresh
- 先选好 API 和物理手柄,再去映射按键
各手柄推荐搭配
| 物理手柄 | 推荐 API | 备注 |
|---|---|---|
| Xbox Series X/S / Xbox One 手柄 | SDL 或 XInput | 都行,原生支持好 |
| DualSense(PS5) | SDL | 免驱动,插 USB 直接识别 |
| DualShock 4(PS4) | SDL 或 XInput | 用 SDL 更方便;或装 DS4Windows 转 XInput |
| Switch Pro Controller | SDL | 原生支持,陀螺仪也能用 |
| JoyCon 左右半 | SDL | 单独或配对都能识别 |
| 8bitdo 系列 | SDL | 免驱动 |
| 纯键盘 | Keyboard | 只推荐偶尔玩 |
陀螺仪支持
SDL API 是 Cemu 陀螺仪支持的核心。如果你的物理手柄支持陀螺仪(Switch Pro、JoyCon、DualSense、DS4),选 SDL 后可以把陀螺仪输入直接映射到模拟控制器的陀螺仪。
陀螺仪的用途:Wii U 上少数游戏需要体感操作(Splatoon 瞄准、Mario 赛车陀螺仪控制方向)。
手柄按键映射
选好 API 和物理手柄后,进入按键映射:
- Input settings 窗口右边有一长列 Wii U 按键
- 依次点击要映射的按键(A、B、X、Y、L、R、ZL、ZR、Up/Down/Left/Right 方向键等)
- 点击后 Cemu 会在 3 秒内等待你按下物理手柄上对应的按键
- 按下后自动绑定
- 摇杆也要推一下确认能正确识别方向
快速检查清单
- [ ] 手柄插好 / 蓝牙配对完成
- [ ] API 选对了(SDL 或 XInput)
- [ ] Refresh 一下能不能在 Controller 下拉看到手柄
- [ ] 先选好 API + 物理手柄,再映射按键
- [ ] 摇杆每个方向都推一下,确保能识别
- [ ] 陀螺仪需要的话确认 SDL 下开启了