All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added Core ESP8266 provider
- [DS4WindowsApi Provider] Target DS4WindowsApi v0.0.2
Fixes NullRef if exiting UCR while ViGEm DS4 is being emulated - [Interception Provider] Mouse Wheel Up / Down / Left / Right subscriptions fire correct subscription with correct value
A binding to Wheel Up was firing +1 on wheel up but also -1 on wheel down - [Interception Provider] Mouse Buttons now correctly labelled (Path for Buttons was "Event: ..." and path for events was "Button: ...")
- [ViGEm Provider] Fix Issue #41
No longer crashes if ViGEm not installed
- [Tobii Provider] If IsLive is false, now reports reason in ErrorMessage
- [SpaceMouse provider] IsLive is always true, as HID is always present
- [MIDI provider] IsLive is always true, as MIDI is always present
- [TitanOne Provider] IsLive now reflects connected status of device
- [TitanOne Provider] Reports 0 devices if IsLive is false
- [vJoy Provider] IsLive now reflects whether driver is installed
- [Interception Provider] IsLive is false if no devices are found, assumes driver is not installed
- Provider Report now contains
ErrorMessage
property If the provider is not live, this should contain a string indicating why
- [ViGEm Provider] Do not show devices if Bus Driver not installed
- [Tobii Provider] IsLive now reflects state of driver
- [Tobii Provider] Only show Tobii devices in ProviderReport that are currently connected
- [XInput Provider] Only show Xinput devices in ProviderReport that are currently connected
- [DS4WindowsApi Provider] Only show DS4 devices in ProviderReport that are currently connected
- [SpaceMouse Provider] Only show SpaceMouse devices in ProviderReport that are currently connected
- [Interception Provider] Blockable property of BindingDescriptor now indicates if input is blockable or not
This is controlled by whether BlockingEnabled in the settings file is true or not
- [Interception Provider] BlockingControlledByUi setting removed
- Fix for IOWrapper Issue #33 / UCR issue #98
DirectInput should no longer freeze when PollThreads are started or stopped
- [Interception Provider] Polling now uses Multimedia Timer, allowing poll rates down to 1ms. Controlled via Settings.xml
- [Interception Provider] (Dev Option) Allowing selecting block via UI is controlled via Settings.xml
- [Interception Provider] (Tester Option) Allowing selecting threaded or non-threaded pass-through of stroke is controlled via Settings.xml
- [Interception Provider] Keyboard now supports per-mapping blocking (Block one button, but not another)
- [DirectInput Provider] Fix #31 - Axis values are no longer inverted
- [Interception Provider] Mouse now supports per-mapping blocking (Block one button, but not another)
- [ViGEm Provider] Rename DS4 LT / RT to L2 (LT) and R2 (RT)
- [Interception Provider] Fix #30
When multiple mouse buttons changed state in one update of the mouse, only one event would be fired for one of the buttons
- [DirectInput Provider] Duplicate devices now have #2, #3 etc after their name
- If a provider crashes on load, it no longer stops IOWrapper from loading
- [Interception Provider] Windows keys are now mappable. Previously, if the non-extended scancode did not have a key name, the extended version of the scancode was not checked
- [Interception Provider] F13-F24 are now mappable.
- [Interception Provider] Pause is now mappable.
- [MIDI Provider] Note path shortened, now selected note displays better in UI
- [MIDI Provider] CC now uses the full -32768..32767 range
- [MIDI Provider] Note naming fixed. Now starts at Octave -2, and goes up to Octave 8, ending at G8
- [MIDI Provider] Pitch Wheel now works in Bind Mode
- [MIDI Provider] Fix notes, CCs etc only reaching 32766 instead of 32767
- [MIDI Provider] ProcessUpdate no longer crashes if preProcessedUpdates is null
- [Interception Provider] Left/Right Mouse Wheel labels are no longer switched
- Subscription and Bind Mode callbacks are now executed as Tasks and are an Action rather than dynamic
- Default blocking to true while UCR GUI does not support selecting block
- Added Block property to InputSubscriptionRequest
- Interception now blocks inputs which have the block property set to true
- Added Blockable property to BindingReport to indicate that the block property is supported for this input
- Fixed XInput additional attempt to dispose empty device
- Made SetDetectionMode and Subscribe / Unsubscribe calls thread-safe
- DeviceReport now has optional HidPath parameter
- Added GetInputDeviceReport
- GetInputDeviceReport / GetOutputDeviceReport now take a DeviceDescriptor and BindingDescriptor
- Fix inverted Interception mouse button values
- Subscription Mode callbacks are no longer fired on their own thread. Doing so breaks some tests and alters behavior.
Difference between v0.9.9 and v0.9.6 is solely the "Fix Interception Bind Mode reporting for axes" item.
- Tasks implementation from v0.9.7 removed due to conflicts with UCR. Subscription Mode callbacks are still fired on their own thread
- Fix Interception Bind Mode reporting for axes
- Bind Mode now uses Tasks instead of Threadpool
- Subscription callbacks are now fired on their own thread, using Tasks
- InputSubscriptionRequest's Callback is now an
Action<int>
instead of dynamic
- SpaceMouse and MIDI Providers now support Bind Mode
- Dispose fixes for DI and XI Providers
- Bind Mode updates now fired on a thread
- Interception Provider now supports Bind Mode
- BindingReport now has a "Path" property that can be used to get the fully qualified name of the input
- BindModeUpdate now contains a BindingReport instead of a BindingDescriptor
- Refactored DeviceHandlers in Provider Libraries
- BindingDescriptor is now a Struct instead of a Class
- SpaceMouse provider crash fix
- MIDI Provider - Add support for Output (ControlChange only for now)
- Provider Libraries - Split DeviceLibrary into Input/Output variants
- MIDI Provider "Unsigned" values now report as Positive only Signed. UCR currently does not support eg AxisToButton for unsigned, and resolution is only 7-bit, so we lose nothing and gain compatibility
- Add experimental MIDI provider
- Added experimental SpaceMouse provider (Currently only supports SpaceMouse Pro)
- Provider DLL loading improved - PluginLoader no longer loads all DLLs in folder into Container
- Tobii Eye Tracker Provider build events missing causing provider to be absent from builds
- Internal build, no changes
- Do not exit XI poll thread if device disconnected
- XInput LT reporting wrong scale
- Axes not being processed if previous ones were unsubscribed