“延迟大约1毫秒。”这是开源固件项目OpenPuck页面上的描述。硬件爱好者Safijari用一个基于微控制器的方案,把Valve的Steam Controller从Steam客户端里解放了出来。原本只能在Valve生态内完整使用的手柄,现在可以在不启动Steam的情况下,直接模拟Xbox、PlayStation和Switch的按键布局。这个小装置本身并不起眼,背后却藏着一个把兼容性交互从PC软件层搬到嵌入式硬件的思路。

持这个改造的起点,是Steam Controller一直以来的一个硬伤:它并不原生支持XInput。XInput至今仍是大量PC游戏和外设默认的手柄输入标准,而Valve的设计选择,决定了要想让Steam Controller被游戏正确识别,就必须让Steam在后台保持运行并充当桥接层。这样一来,手柄的可用性跟客户端绑死,日常插拔、换机使用时多了一层依赖。Safijari做的事情很直接——把这层翻译从操作系统后台剥离,交给一块独立的微控制器。他设计的OpenPuck固件会直接读取手柄的原始输入,在硬件层面实时把信号重新映射成目标主机的键位规范,不再需要Steam插手。

打开网易新闻 查看精彩图片

上手这款自制“手柄转接器”的门槛不高,前提是对基础的微控制器操作有一定了解。OpenPuck的固件可以跑在Pro Micro nRF52840这类开发板上,这块板子本身就集成了低功耗蓝牙和2.4GHz无线功能,正适合充当无线桥接的介质。先把开发板置入DFU(设备固件更新)模式,通过USB-C连接到电脑,刷入配套的Arduino sketch,整个过程几分钟就能完成。闪存结束后,这块板子就变成了一个真正的OpenPuck,相当于在Steam手柄和你手头的设备之间架起一条直连的翻译通道。如果你想让成品更利落,项目还提供了3D打印外壳的文件,几件套上就能把裸露的电路板变成一个整洁的小盒子。

刷写完固件之后,所有配置操作都可以通过一个基于网页的管理工具完成。这个配置器跑在浏览器的WebUSB API上,直接跟设备通信,不需要安装额外的驱动或软件。界面上可以随时切换手柄模拟的模式,目前支持的选项包括Switch Pro、Xbox、DualSense和DualShock 4。也就是说,同一个Steam Controller,接上OpenPuck后,前一刻还在PC上以Xbox布局打游戏,下一刻就能用Switch的按键位置去连任天堂主机,模式切换不需要重新刷写,点几次鼠标就行。

提到1毫秒延迟这个数字,实际体验下来的确感知不强。设置完成后,Steam Controller在各模式下的操作手感,基本和被模拟的原厂手柄一致。部分模式切换更方便:Switch Pro或Xbox布局可以直接用手柄上的按钮组合即时唤醒切换,不用每次都打开网页配置器。不过PlayStation相关的DualSense和DualShock 4模组就需要靠网页操作来选定,多了一道步骤。好在常用场景里,设定一次基本也就固定下来了。

兼容性的差别主要体现在主机平台上。Switch模式可以直接在任天堂的实体机上使用,并且完整支持陀螺仪瞄准和HD触觉反馈。如果想省电或者不需要这两项功能,还可以选一个更简单的Hori Pad模拟档,陀螺仪与振动会被完全关闭。PlayStation这边的支持则分层更细:DualSense和DualShock 4两个模式主要在PC环境下生效,而额外的一个DualShock 3模式则能直接插上PS3使用,甚至保留了六轴感应操作。当然,如果你是原教旨主义者,OpenPuck也保留了Steam Controller的原生输出模式,想回到最初的手感随时可以切回去。

这个硬核项目还衍生出了一个反向版本ReversePuck,把思路倒过来,让Steam Deck也能变成无线手柄。做法是再引入一块NRF52840 Pro Micro板,让Steam Deck的按键输入通过2.4GHz频段传送到一台运行OpenPuck的PC上。大多数操控功能都能正常传递,除了握持背键目前还没办法支持。这就相当于给Steam Deck增加了一套无线控制器的工作模式,而且是利用跟OpenPuck完全相同的底层信号翻译机制,不再需要额外的串流软件。

从一块开发板加上几行固件的角度看,OpenPuck给出的自由度已经超出不少人的预期。因为所有的按键映射重定向都发生在微控制器端,扳机、摇杆、触摸板这些原厂输入再也不依赖Steam后台的输入重映射层。对普通用户来说,它能把手头可能已经落灰的Steam Controller重新用起来,插到更多平台上发光发热;对开发者和硬件爱好者来说,这更像一个示范:一块小小的嵌入式板子,确实可以填上厂商之间互不兼容留下的坑,