Skip to content
Moyor's Cauldron
Back to Workshop
GlobalInputBridge

GlobalInputBridge

In Development Open Source UE Plugin UE5 V1.0.1 March 2026

A Windows UE5 input plugin that feeds global keyboard/mouse input to the game thread regardless of window focus — your UE app keeps receiving input while running in the background.

What it is

GlobalInputBridge is a Windows-only Unreal Engine input plugin. Its core capability is delivering window-focus-independent global keyboard/mouse input to the game thread — even when the UE application is running in the background.

Target scenarios: UE running as a companion app behind foreground software — VTuber streaming (mirroring aim and movement while playing an FPS), macro panels, input analytics, overlay tools, and more.

Headline feature: mouse aim deltas keep flowing even when the foreground game is an FPS that uses raw input and locks the system cursor to the screen center (e.g. Hunt: Showdown) — because the movement data comes from WM_INPUT raw relative deltas, the exact same data the game itself reads.

The plugin is a purely passive reader: it never injects or synthesizes input, and it does not replace Enhanced Input in your project.

Features

  • Global keyboard: background Windows Raw Input worker thread (RIDEV_INPUTSINK) receives keys regardless of focus; multi-device aggregation and hot-plug handling
  • Global mouse movement: four tracking modes, Raw Input by default — immune to cursor locking, pointer acceleration, and DPI scaling; alternatives are Polling (desktop pixel deltas), Buttons Only, and Disabled
  • Event nodes: Enhanced-Input-style lifecycle (Started / Triggered / Completed), modifier-key combos, optional exclusive-modifier exact matching — no manual Bind/Unbind needed
  • State queries, broadcast events, and event filtering (allow/exclude lists affecting broadcasts only, not state tracking)
  • Debug support, an override-state manager, chord bindings, key mappings, and automated tests that run inside the editor

Key Blueprint nodes

CategoryNodes
SubsystemGet Engine Subsystem → GlobalInputSubsystem, Start Listening
State queriesIs Global Key Down, Was Global Key Pressed/Released This Frame, Get Pressed Global Keys
MouseGet Global Mouse Delta, On Global Mouse Move
EventsGlobal Input Action Event (purple node), On Global Key Event
FilteringSet Global Input Event Filter, Clear Global Input Event Filter
DebugGet Global Input Debug Info, Set Log Level

Installation

  1. Clone or download the repository into <YourProject>/Plugins/GlobalInputBridge
  2. Regenerate project files and compile (or just launch the project and let the editor build it)
  3. Enable the plugin; settings live under Project Settings > Plugins > Global Input Bridge

Requirements: UE 5.7 (developed and tested; other UE 5.x versions untested); Windows x64 only.

Quick start

  • The plugin ships with a DemoMap (Content folder) containing Blueprint examples of every feature
  • Enable Auto Start in settings, or call Start Listening yourself (commandlets and dedicated servers never auto-start)
  • Continuous behavior → poll Is Global Key Down; one-shot behavior → check the pressed/released frame edges
  • Mouse aim → read Get Global Mouse Delta every tick, or bind On Global Mouse Move
  • Typical aim-mirroring pipeline: accumulate mouse deltas per tick → multiply by a sensitivity factor → drive the Aim Offset. Note that Raw Input deltas are device counts (no pointer acceleration) — calibrate the scaling yourself

Mouse tracking modes

ModeMovement deltaIn cursor-locked games
Raw Input (default)WM_INPUT raw relative countsWorks
PollingDesktop pixel differenceZero deltas
Buttons OnlyNoneOn Global Mouse Move never broadcasts
DisabledNoneKeyboard listening is unaffected in all modes

Technical notes

  • Threading: a dedicated worker thread runs a hidden Win32 message window and registers keyboard/mouse device collections with RIDEV_INPUTSINK; packets travel through a single-producer/single-consumer queue and are consumed on the game thread by the engine subsystem’s tick
  • Registration heartbeat (key design): Windows allows only one Raw Input target window per device class per process — last one registered wins. UE’s own viewport high-precision mouse mode repeatedly claims that slot, so whenever mouse Raw Input is enabled the worker thread re-registers itself on a 500ms heartbeat after input stops flowing (at most half a second of movement data is lost); cross-process registrations never conflict, so the foreground game is unaffected
  • Thread safety: all UObject access, state, and Blueprint broadcasts happen on the game thread; the worker thread touches only Win32 APIs and the queue

Limitations

  • Windows only (all platform code guarded by PLATFORM_WINDOWS)
  • Purely passive — cannot block or modify input, and cannot be used as an input injector
  • Raw Input mouse deltas are device counts; scale yourself if you need pixel semantics
  • MIT license

Code & Documentation