Repository navigation
Releases: flamestream/input-device-emitter
Release list
Version 6.0
⚠️ Notice
Your AV will likely flag this program as trojan (as it should)! Please use with care.
You may need to allow the program to be executed.
⚡ Performance & 0.0% Idle CPU
- Event-Driven Message Pump: Replaced busy polling loops with message queue draining and
MsgWaitForMultipleObjectsEx, dropping background idle CPU usage to 0.0%. - Zero-Allocation Packet Serialization: Replaced dynamic string streams with stack buffers and
std::string_viewacross all UDP broadcasting hot paths. - Hardware Dirty-Checking: Integrated
dwPacketNumberandmemcmpdirty checks across controller loops to skip packet generation and socket transmission when inputs are resting. - 1.0 ms Multimedia Timer Precision: Locked multimedia timer resolution to 1.0 ms via
timeBeginPeriod(1).
⌨️ Keyboard & Protocol Enhancements
- Numpad Enter Differentiation: Detects the
KF_EXTENDEDflag onVK_RETURNto remap Numpad Enter to synthetic VK code14(0x0E), aligning with Warudo'sNUMPAD_RETURNkey binding. - Defensive Modifier Aliasing: Added automatic bidirectional mapping between generic modifiers (
VK_SHIFT,VK_CONTROL,VK_MENU) and their left/right counterparts. - POD DLL Shared Segments: Standardized
KeyboardTracker.dllshared data segment to raw POD arrays for robust multi-process memory isolation.
🎮 Controller & Pointer Improvements
- XInput Initial State: Fixed controller connection lifecycle to immediately broadcast the resting state upon connection, preventing uninitialized states in receivers.
- Mouse Click Freshness: Updated
MouseTracker.dllhook callback to refresh coordinates and extra info on all button-down and button-up events. - GameInput Status: GameInput controller mode is now marked as
(Experimental). For standard Xbox controllers, XInput is recommended. - Robust Networking: Zero-initialized
sockaddr_instructures and centralized Winsock startup/teardown.
Version 5 - XInput Support
⚠️ Notice
Your AV will likely flag this program as trojan (as it should)! Please use with care.
You may need to allow the program to be executed.
Recording.2025-10-12.222933.mp4
🎮 XInput Support
Controllers that emit signals to XInput can now be captured and broadcasted by the program.
🔌 Device Reconnection Support
The program no longer exits when the tracked DirectInput Device is disconnected; It will wait for reconnection.
This also applies to XInput and GameInput.
⚠️ BREAKING CHANGES
- Broadcast string's version section is no longer an integer
- It is alphanumerical, beginning with version number and ending with a letter code identifying message type
P: Pointer/mouse/penK: KeyboardD: DirectInputX: XInputG: GameInput
- It is alphanumerical, beginning with version number and ending with a letter code identifying message type
-xflag is no longer the debug flag. Use-zinstead
Version 4.1.2
🔥🔥🔥 Previously published 4.1.1 was a mistakenly built older version. Please download 4.1.2 below instead.
⚠️ Notice
Your AV will likely flag this program as trojan (as it should)! Please use with care.
You may need to allow the program to be executed.
⛓️💥 Breaking Change: New Message Format for DirectInput emitter (Protocol Version 3)
For more information, see #9
The updated Warudo translates it back to old signal values, so there shouldn't be any perceived changes.
⛓️💥 Breaking Change: New Flag Behaviours
- No pointer tracking is performed by default (must be explicitly specified)
-Pflag removed-pflag repurposed to enable pointer tracking--targetlong flag renamed--pointer-target, removed-t--portlong flag renamed--pointer-port
- Gamepad option moved from
-gto-d(for DirectInput)--gamepad-*long options renamed to--directinput-*
- Debug flag moved from
-dto-x - Frequency flag default changed from 50 to 30, to better match 30 fps capture (set it to around 16 for 60 fps)
🎮 GameInput Support
GameInput support has been added. This means that Xbox Series S | X controllers are now supported.
They may be enabled with -g and customized with --gameinput-*
NOTE: GameInput had two modes: High-level controller interface and Low-level controller interface. Some controllers work better on one more than the other. For example, Xbox Series S | X only works with high level interface, while Switch Pro works better on low level interface.
👤 Interactive Mode
For discoverability and the less tech-savvy, an interactive mode is presented when executing the program without any options.
fs-emitter-interactive-mode.mp4
⭐ Miscellaneous
- Fixed frequency option
- Automatically detect DirectInput device disconnection
- Performance optimizations
Version 3.0
📄 Change Log
- Add keyboard tracking support on a new port (activate using -k flag)
- Add ability to print current version with -v flag
Version 2.0
📄 Change Log
- [BREAKING] Protocol for gamepad signal has changed to version
2- Add support for more controllers (specifically PS5 in mind at this time)
Version 1.1
You may now select which gamepad to bind to when multiple ones are found.
Use new flag --gamepad-index to specify it.
Version 1.0
- Mouse support
- Pen detection support
- Gamepad support
- Configurable destination
- Configurable frequency