网络上的人机界面设备:几个简短的示例

从您的应用连接到不常见的设备。

Joe Medley
Joe Medley
Matt Reynolds
Matt Reynolds

什么是 WebHID API?

许多人机接口设备 (HID) 太新、太旧或太不常见,系统的设备驱动程序无法访问它们。WebHID API 通过提供一种在 JavaScript 中实现设备专用逻辑的方法来解决此问题。

WebHID API 的建议用例

HID 可从人接受输入或向人提供输出。设备示例包括键盘、指控设备(鼠标、触摸屏等)和游戏手柄。借助 HID 协议,您可以在桌面设备上使用操作系统驱动程序来访问这些设备。Web 平台通过依赖这些驱动程序来支持 HID。

在游戏手柄支持方面,无法访问不常见的 HID 设备尤为令人头疼。专为 PC 设计的游戏手柄通常使用 HID 来处理游戏手柄输入(按钮、摇杆、扳机)和输出(LED、振动)。不过,游戏手柄输入和输出未得到充分标准化,并且网络浏览器通常需要针对特定设备使用自定义逻辑。这种做法不可持续,会导致对大量旧款和不常见设备的支持不佳。这还会导致浏览器依赖于特定设备行为中存在的怪癖。

演示、演示、演示

如果您想了解其中任何示例的运作方式,可以前往 GitHub 查看所有示例的源代码。该说明文档中提供了一个基础代码示例

MacBook Pro 键盘背光

试用这些演示版的最大障碍是无法访问设备。幸运的是,如果您使用的是带有 Touch Bar 的 MacBook Pro,则无需购买任何设备。通过此演示,您可以直接在笔记本电脑上使用该 API。它还展示了如何使用 WebHID 解锁内置设备(而不仅仅是外围设备)的功能。

作者:FWeinb
演示/来源键盘背光

游戏控制器

PlayStation 4 无线控制器

接下来介绍的设备可能只有少数人拥有。Sony 的 DualShock 4 是 PlayStation 4 游戏机的无线控制器。

DualShock 4 演示版使用 WebHID 接收 DualShock 4 的输入原始报告,并提供一个高级 API 来访问控制器的陀螺仪、加速度计、触控板、按钮和摇杆输入。它还支持振动和设置控制器内置 RGB LED 的颜色。

作者:TheBITLINK
演示DualShock 4 演示来源

Nintendo Switch Joy-Con 控制器

将 Nintendo Switch Joy-Con 控制器放入裤兜,然后通过实际跳跃来玩 Chrome 恐龙 🦖 离线游戏。此演示由 Joy-Con WebHID 提供支持,它是适用于 Nintendo Switch Joy-Con 控制器的 WebHID 驱动程序。

作者Thomas Steiner
演示Chrome Dino WebHID演示源代码驱动程序源代码

BlinkStick Strip

BlinkStick Strip 是一款符合 HID 标准的灯条,带有 8 个 RGB LED。在该演示中,用户可以从多个闪烁模式(包括追光、闪烁和 Larson 扫描器 [也称为“Cylon”])中进行选择。

作者:Robat Williams
演示blinkstick-strip来源

此演示有何用途?(请稍等。)它会闪烁。实际上,这三个演示都使用了 blink(1) USB 通知灯。

blink(1) 简单且文档完善,是开始使用 HID 的绝佳选择。

作者:Tod E. Kurt
演示blink(1)源代码

致谢

感谢 Pete LePageKayce Basques 对本文的审核。

照片由 UgurAkdemir 拍摄,选自 Unsplash