跳到主要内容
Moyor的炼药小锅
返回工坊
全局输入桥(GlobalInputBridge)

全局输入桥(GlobalInputBridge)

已发布 开源 UE 插件 UE5 V1.0.1 2026年3月

Windows 平台 UE5 输入插件:不依赖窗口焦点,向游戏线程传递全局键盘/鼠标输入——UE 在后台也能持续接收。

这是什么

全局输入桥(GlobalInputBridge)是一个面向 Windows 平台的 Unreal Engine 输入插件,核心能力是向游戏线程传递不依赖窗口焦点的全局键盘/鼠标输入——即使 UE 应用在后台运行,也能持续接收输入。

目标场景:UE 作为伴随程序运行在前台软件后面——虚拟主播直播(玩 FPS 时同步镜像瞄准与移动)、宏面板、输入分析、覆盖层工具等。

核心亮点:即使前台是采用 Raw Input 并把系统光标锁定在屏幕中心的 FPS 游戏(如《Hunt: Showdown》),鼠标瞄准增量依然能持续获取——因为移动数据来自 WM_INPUT 原始相对增量,与游戏本身读取的是同一份数据。

插件是纯被动读取器:绝不注入或合成输入,也不替代项目中的 Enhanced Input。

特性

  • 全局键盘:后台 Windows Raw Input 工作线程(RIDEV_INPUTSINK),无论焦点如何都接收按键;支持多设备聚合与热插拔处理
  • 全局鼠标移动:四种跟踪模式,默认 Raw Input——不受光标锁定、指针加速、DPI 缩放影响;另有 Polling(桌面像素增量)、Buttons Only(仅按钮)、Disabled(禁用)
  • 事件节点:类 Enhanced Input 生命周期(Started / Triggered / Completed)、修饰键组合、可选的独占修饰键精确匹配,无需手动 Bind/Unbind
  • 状态查询、广播事件与事件过滤(允许/排除列表,只影响广播不影响状态跟踪)
  • 调试支持、覆盖状态管理器、和弦绑定、键映射,以及可编辑器内运行的自动化测试

主要蓝图节点

类别节点
子系统Get Engine Subsystem → GlobalInputSubsystem、Start Listening
状态查询Is Global Key Down、Was Global Key Pressed/Released This Frame、Get Pressed Global Keys
鼠标Get Global Mouse Delta、On Global Mouse Move
事件Global Input Action Event(紫色节点)、On Global Key Event
过滤Set Global Input Event Filter、Clear Global Input Event Filter
调试Get Global Input Debug Info、Set Log Level

安装

  1. 克隆或下载仓库到 <YourProject>/Plugins/GlobalInputBridge
  2. 重新生成项目文件并编译(或直接启动项目让编辑器构建)
  3. 启用插件;设置位于 Project Settings > Plugins > Global Input Bridge

环境要求:UE 5.7(开发测试版本,其他 UE 5.x 未经测试);仅 Windows x64。

快速上手

  • 插件自带 DemoMap(Content 文件夹),包含所有功能的蓝图示例
  • 在设置中启用 Auto Start,或自行调用 Start Listening(Commandlet 与专用服务器永不自动启动)
  • 持续行为 → 查询 Is Global Key Down;一次性行为 → 查询按下/松开的帧边沿
  • 鼠标瞄准 → 每 tick 读取 Get Global Mouse Delta,或绑定 On Global Mouse Move
  • 典型瞄准镜像流程:每 tick 累积鼠标增量 → 乘以灵敏度系数 → 驱动 Aim Offset。注意 Raw Input 增量是设备计数(无指针加速),缩放系数需自行调校

鼠标跟踪模式对比

模式移动增量光标锁定游戏中
Raw Input(默认)WM_INPUT 原始相对计数有效
Polling桌面像素差增量为零
Buttons Only无On Global Mouse Move 永不广播
Disabled无键盘监听在所有模式下不受影响

技术实现

  • 线程架构:专用工作线程运行隐藏 Win32 消息窗口,以 RIDEV_INPUTSINK 注册键鼠设备集合;数据包经单生产者/单消费者队列传递,在引擎子系统 tick 中由游戏线程消费
  • 注册心跳机制(关键设计):Windows 限制每个进程每类设备只允许一个 Raw Input 目标窗口,后注册者生效。UE 自身的视口高精度鼠标模式会反复抢占该槽位,因此工作线程在停止收到鼠标输入后按 500ms 心跳重新注册自身(最多丢失半秒移动数据);跨进程注册互不冲突,前台游戏不受影响
  • 线程安全:所有 UObject 访问、状态与蓝图广播均在游戏线程;工作线程只触碰 Win32 API 和队列

限制

  • 仅限 Windows(PLATFORM_WINDOWS 守卫全部平台代码)
  • 纯被动读取,不能阻止/修改输入,不可作为输入注入器
  • Raw Input 鼠标增量是设备计数,需要像素语义请自行缩放
  • MIT 许可证

源码与文档