Skip to content

Releases: flamestream/input-device-emitter

Version 6.0

Choose a tag to compare

@flamestream flamestream released this 11 Oct 07:07
47d0b21

⚠️ 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_view across all UDP broadcasting hot paths.
  • Hardware Dirty-Checking: Integrated dwPacketNumber and memcmp dirty 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_EXTENDED flag on VK_RETURN to remap Numpad Enter to synthetic VK code 14 (0x0E), aligning with Warudo's NUMPAD_RETURN key 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.dll shared 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.dll hook 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_in structures and centralized Winsock startup/teardown.

Version 5 - XInput Support

Choose a tag to compare

@flamestream flamestream released this 13 Oct 03:43
8e4ac04

⚠️ 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/pen
      • K: Keyboard
      • D: DirectInput
      • X: XInput
      • G: GameInput
  • -x flag is no longer the debug flag. Use -z instead

Version 4.1.2

Choose a tag to compare

@flamestream flamestream released this 24 Dec 03:54
de50e88

🔥🔥🔥 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)
    • -P flag removed
    • -p flag repurposed to enable pointer tracking
    • --target long flag renamed --pointer-target, removed -t
    • --port long flag renamed --pointer-port
  • Gamepad option moved from -g to -d (for DirectInput)
    • --gamepad-* long options renamed to --directinput-*
  • Debug flag moved from -d to -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

Choose a tag to compare

@flamestream flamestream released this 08 Dec 04:14
351950b

📄 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

Choose a tag to compare

@flamestream flamestream released this 03 Feb 03:56
960d8f2

📄 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

Choose a tag to compare

@flamestream flamestream released this 01 Feb 06:46
fba3329

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

Choose a tag to compare

@flamestream flamestream released this 31 Jan 00:44
99e169a
  • Mouse support
  • Pen detection support
  • Gamepad support
  • Configurable destination
  • Configurable frequency