// Mouse + keyboard forwarding subsystem (HookSubsys_Mkb). // // The host captures its own window's MKB input and pushes events into the shared // MkbRing. This subsystem drains them on the worker thread, posts the matching // window messages to the game's main window (so message-driven games react), and // maintains a synthesized input state that hooked GetAsyncKeyState / // GetKeyboardState / GetCursorPos report (so polling games react too). The toggle // is the subsystem itself: not installed -> nothing is forwarded. #pragma once #include "ipc_client.hpp" namespace coop::hook { bool install_mkb_hooks(IpcClient& ipc); void remove_mkb_hooks(); // Drain the host's MKB event queue: post window messages + update synthesized // state. Called frequently from the worker loop while the subsystem is installed. void mkb_pump(IpcClient& ipc); } // namespace coop::hook