You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何像识别游戏控制器一样区分多键盘,实现单Windows应用分编辑器输入?

Windows多键盘独立识别实现方案

基于Electron + Node.js的实现方案

Windows系统默认会合并所有外接键盘的输入事件,标准Web API和Node.js内置模块都无法获取输入对应的设备来源,需要调用Windows原生的Raw Input API实现区分:

  • 依赖封装了Raw Input接口的Node.js原生模块,比如node-rawinput,无需自己手写C++扩展
  • 主进程中调用接口完成以下逻辑:
    1. 枚举所有接入的HID键盘设备,使用VID(厂商ID)+ PID(产品ID)+ 实例ID作为每个键盘的唯一标识,和对应玩家身份做绑定
    2. 监听Raw Input的全局输入回调,根据事件携带的设备ID判断输入来源
    3. 通过IPC将输入内容分发到渲染进程对应玩家的编辑器组件
  • 需要额外处理的边界情况:
    1. 应用启动后新接入的键盘热插拔识别
    2. 同型号键盘的实例ID区分,部分廉价键盘可能没有唯一实例ID,需要做首次接入的绑定引导
    3. 禁用渲染进程默认的键盘输入监听,避免输入重复触发

更适配的替代技术栈

如果仅需支持Windows平台,推荐使用C# + WPF/WinForm技术栈,开发和维护成本更低:

  • .NET框架内置了Raw Input相关封装,无需处理Node原生扩展的跨版本编译、兼容性问题
  • 输入分发、多编辑器焦点管理的实现更简单,输入延迟远低于Electron方案
  • 系统权限申请、设备异常处理的官方文档更完善

不要尝试用普通的keydown、keypress事件实现设备区分,这类事件已经是系统合并所有输入后的统一事件,不会携带任何输入设备的标识信息

内容的提问来源于stack exchange,提问作者강대원

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 02:27:02