Alpha 0.1.22 — Wheel Left/Right
v0.1.22 Fix WheelLeft/WheelRight
Alpha 0.1.21 — XInput DPad fix
0.1.21 2nd Oct 2018
= Fixed XInput Dpad right / down swapped
Alpha 0.1.20 — XInput Support
+ Added XInput support
Does not have Bind Mode, as normal AHK hotkeys would see the input too
+ Added Support for Nintendo Switch to Titan
+ Performance increases for Mouse Delta input:
Cache state of Invert checkboxes in MouseToJoy plugin
Disable pseudo-thread callback for mouse delta
+ Replaced CreateGUID with Lexikos' ANSI compatible version
Alpha 0.1.19
0.1.19 26th Dec 2017
+ Added Deadzone option to axis splitter
Alpha 0.1.18
0.1.18 - 27th Oct 2017
= Increased number of Titan One axes to 13
TouchX and TouchY are now selectable.
+ Axis Splitter now has invert options for output axes
+ Added second editbox to CodeRunner plugin for code to run on button release
Alpha 0.1.17
0.1.17 - 21st Aug 2017
= You can now properly bind Mouse Wheel
= "Profile Inherits from Parent" checkbox now correctly updates when switching profile
+ Scale added to AxisToMouse, as sensitivity is a curve
+ The PauseButton plugin now beeps when you pause / unpause
+ Titan One D-Pad now correctly set
+ Titan One PS3 controllers now support accelerometer
+ Titan One PS4 controllers now support gyros
Alpha 0.0.16
0.1.16 - 11th Jun 2017
= Revert out: Changed Associative array empty detection technique to Lexikos' one
Seems to break vJoy bindings on reload.
Alpha 0.1.15
Key:
! : Warning
* : Comment
= : Change / Fix
+ : Added feature
0.1.15 - 6th Jun 2017
+ Added AxisRangeToButtons plugin
This can be used to map an axis to up to 10 buttons.
eg for throttle operated by up to 10 keyboard keys
+ Added AxesToMouse plugin
Joystick to mouse
+ Added ButtonInitializer plugin
+ Adds Notes plugin
Useful if you send someone an INI - you can write instructions in here.
= Fixed previews in AxisMerger plugin
= Crash fix in InputDelta plugin
+ Adds Loading splash screen
+ Fixed warning in ProfileSwitcher plugin
When you first tried to select a target profile, you would get a warning
that the clear item already existed.
= Added #NoEnv to all threads for performance
= Changed Associative array empty detection technique to Lexikos' one
Alpha 0.1.14
0.1.14 - 12th Mar 2017
= Massive changes to the MouseToButtons plugin
Is now a lot less "flickery"
There is now a "State Change" timeout value
This controls how long it takes to change state (reduce flicker)
= The MouseToJoy relative mode timeout value now works for the y axis
Alpha 0.1.13
Key:
! : Warning
* : Comment
= : Change / Fix
+ : Added feature
0.1.13 - 12th Mar 2017
+ Added Mouse Delta to Buttons plugin
+ Fixed suggested name for new plugins
+ Multiple InputAxis controls can now be bound to the same axis
+ Set default SetKeyDelay value to 0, 0
UCR does not send keypresses, it maps down events to down events etc
So this would likely only slow the code down
Current Known Issues
For a full list of issues, please see the Issues section of the GitHub page.
But, so that things are clear, I will detail the most important things you will need to be aware of if trying out UCR.
- Be wary of using mouse wheel while ComboBoxes, Dropdownlists etc have the focus.
We have taken steps to work around this issue, but it is hacky at best, and only works in certain cases.
Version history
Key:
! : Warning
* : Comment
= : Change / Fix
+ : Added feature
0.1.22 28th Oct 2018
+ Added support for MouseWheel Left / Right
0.1.21 2nd Oct 2018
= Fixed XInput Dpad right / down swapped
0.1.20 7th Sep 2018
+ Added XInput support
Does not have Bind Mode, as normal AHK hotkeys would see the input too
+ Added Support for Nintendo Switch to Titan
+ Performance increases for Mouse Delta input:
Cache state of Invert checkboxes in MouseToJoy plugin
Disable pseudo-thread callback for mouse delta
+ Replaced CreateGUID with Lexikos’ ANSI compatible version
0.1.19 26th Dec 2017
+ Added Deadzone option to axis splitter
0.1.18 — 27th Oct 2017
= Increased number of Titan One axes to 13
TouchX and TouchY are now selectable.
+ Axis Splitter now has invert options for output axes
+ Added second editbox to CodeRunner plugin for code to run on button release
0.1.17 — 21st Aug 2017
= You can now properly bind Mouse Wheel
= «Profile Inherits from Parent» checkbox now correctly updates when switching profile
+ Scale added to AxisToMouse, as sensitivity is a curve
+ The PauseButton plugin now beeps when you pause / unpause
+ Titan One D-Pad now correctly set
+ Titan One PS3 controllers now support accelerometer
+ Titan One PS4 controllers now support gyros
0.1.16 — 11th Jun 2017
= Revert out: Changed Associative array empty detection technique to Lexikos’ one
Seems to break vJoy bindings on reload.
0.1.15 — 6th Jun 2017
+ Added AxisRangeToButtons plugin
This can be used to map an axis to up to 10 buttons.
eg for throttle operated by up to 10 keyboard keys
+ Added AxesToMouse plugin
Joystick to mouse
+ Added ButtonInitializer plugin
+ Adds Notes plugin
Useful if you send someone an INI — you can write instructions in here.
= Fixed previews in AxisMerger plugin
= Crash fix in InputDelta plugin
+ Adds Loading splash screen
+ Fixed warning in ProfileSwitcher plugin
When you first tried to select a target profile, you would get a warning
that the clear item already existed.
= Added #NoEnv to all threads for performance
= Changed Associative array empty detection technique to Lexikos’ one
0.1.14 — 12th Mar 2017
= Massive changes to the MouseToButtons plugin
Is now a lot less «flickery»
There is now a «State Change» timeout value
This controls how long it takes to change state (reduce flicker)
= The MouseToJoy relative mode timeout value now works for the y axis
0.1.13 — 12th Mar 2017
+ Added Mouse Delta to Buttons plugin
+ Fixed suggested name for new plugins
+ Multiple InputAxis controls can now be bound to the same axis
+ Set default SetKeyDelay value to 0, 0
UCR does not send keypresses, it maps down events to down events etc
So this would likely only slow the code down
0.1.12 — 7th Mar 2017
+ Added AxisRangeToButtons plugin
This allows you to map an axis to up to 10 buttons
Each button has a «Low» and «High» value. If the axis is in this range…
Then the button is pressed. Else it is released.
If you need more buttons, more can be added by editing the source code.
+ You can now duplicate profiles using the «Copy» button in the toolbox.
Code contributed by Snoothy — thankyou!
+ You can now rename plugins to the same name but with different case
+ IOControl menus are now initialized when first opened.
This will mainly benefit users with large numbers of profiles.
UCR should load quicker, and you should not get a «Too many menus» error.
Code contributed by Snoothy — thankyou!
+ MaxThreads setting cranked up to 255
This seems to alleviate issues with fast, simultaneous input.
+ The InputDelta now self-updates Seen Mice
0.1.11 — 19th Feb 2017
+ You can now rename plugins
+ You can now re-order plugins
+ Plugin close button is now an icon
+ There are now preview GuiControls for Buttons and Axes
You no longer have to code your own in plugins
The Axis preview remains as a slider
The Button preview comes in two flavors:
A regular 25×25 icon with on/off states
A 3×34 icon that sits right next to an IOControl (To save horizontal space)
+ Added support for the following PS4 outputs on Titan One:
TouchPad X+Y
Aceelerometer X+Y
Touch Button
= Renamed Playstation LS/RS to L3/R3 in Titan One
= Fixed bad calculations in ButtonsToAxis plugin for Low/High options
+ Added support for Command-Line profile switching via CLI.ahk
Code contributed by Snoothy — thankyou!
+ You can now filter for individual mice in the MouseDelta
Thanks to David Baldwin for contributing the bulk of the code.
0.1.10 — 4th Feb 2017
= Ultrastik devices now work with UCR
Code contributed by Snoothy — thankyou!
= If vJoy is not installed, on startup you no longer get the error
«Error. An item with the name vJoy already exists in this menu»
0.1.9 — 26th Dec 2016
= Fix for disconnected sticks causing massive CPU usage
When a profile loads, it checks which sticks are connected.
Bindings for disconnected sticks will not be activated.
If you plug in the stick, try forcing a profile reload.
An easy way is by switching to global profile and then back
0.1.8 — 16th Dec 2016
= Fix for «invalid Gui Name» error for BindModePrompt
Hotkeys for bindmode were being enabled breifly on creation
= Fixed Joystick Hat/POV/D-Dpads in InputButtons
= Harmonized callback method for all input types to pseudo-threads
0.1.7 — 11th Dec 2016
= Fixed vJoy not acquring sticks until you changed a binding
* Merged Input-Output-Refactor into Master branch.
0.0.16 — 14th Aug 2016
+ The ButtonToButton plugin now has a Toggle mode
+ MouseToJoy plugin enhancements:
Added Scale Factor to Absolute mode.
Plugin can now be configured to only take input from a specific mouse.
You can now use multiple MouseToJoy plugins if you have more than one pointing device.
+ Added «HoldButton» functionality to OneSwitch Pulse plugin.
= InputActivity subscriptions no longer fire if the plugin is not active.
This only really affects OneSwitch Pulse or any custom plugins using InputActivity.
= Fixed bug that occurred when changing an InputButton plugin from button to hat:
The old binding was remaining active, this is now fixed.
= Fixed bug that occurred when changing an InputButton from keyboard to vJoy:
The vJoy selection UI would change selection of various elements in odd ways.
= A bunch of behind-the-scenes changes and fixes.
Please let me know if stuff that used to work now doesn’t.
= MouseToJoy plugin fixes:
Fixed numerous bugs which made Absolute mode center the stick way too much.
The Timeout value for Absolute mode now works.
0.0.15 — 24th July 2016
! All ProfileSwitcher plugins will no longer be bound to a profile.
You are advised to delete and re-add the plugin.
+ Dialogs to choose name of new Profile / Plugin now appear in the center of the UCR GUI.
+ A new custom GuiControl — the ProfileSelect is now available for Plugin Authors to use.
This allows you to provide a guicontrol for users to choose a profile.
+ There is now a Text-To-Speech library provided in UCR.Libraries.TTS
+ Added Profile Speaker plugin.
This can be used to speak something when a profile becomes active.
+ The OneSwitch Pulse plugin now makes a beep on toggle on/off.
+ The OneSwitch Pulse plugin now has a «Timeout Warning» setting.
= The recommended development environment for UCR is now AHK Studio
Debugging of UCR and it’s plugins is now much simpler.
See the UCR wiki for info on debugging plugins.
The code is now also split out into one file per class, so should be easier to work with.
= When you enter Bind Mode, the OnInActive() method is now called on all active plugins.
All plugins should cease all activity on OnInActive() and resume on OnActive()
= The code of the ProfileSwitcher plugin is now vastly simplified.
Most of it’s code was moved into the ProfileSelect GuiControl.
0.0.14 — 19th June 2016
! INI (Settings) file format changed to 0.0.5. UCR will attempt to upgrade for you.
YOU ARE ADVISED TO BACK UP YOUR UCR.INI BEFORE RUNNING THIS VERSION.
+ Adds new «Profile Inherits Plugins from parent» option to profiles.
There is a new checkbox in the Profile Toolbox to turn this on or off for the current profile.
If this option is on for a given profile, then when the profile is active…
… the profile’s parent profile (if it has one) will also be active.
This is useful when doing «Shift States», as it removes the need to duplicate plugins…
…in the «normal» and «shifted» profiles for things that don’t change when shift is held.
= The Profile Switcher plugin now allows you to pick a profile for press and release.
This was needed because two plugins in the same profile cannot be bound to the same button…
… so two profile pickers (one for press, one for release) bound tot he same button didn’t work.
= Bindings to Mouse Wheel now properly simulate the up (release) event.
Without this, if you remap mouse wheel to a key, that key is never released
= You can now control multiple vJoy sticks properly.
Previously, UCR would only control one stick at a time, resulting in weird behaviour.
+ All pop-up windows / dialogs now appear in the center of the GUI.
= Numpad Enter is now bindable
0.0.13 — 21st May 2016
! INI (Settings) file format changed to 0.0.4. UCR will attempt to upgrade for you.
YOU ARE ADVISED TO BACK UP YOUR UCR.INI BEFORE RUNNING THIS VERSION.
If you have problems, please post on the forums.
= Plugins are now uniquely identified by IDs.
This does not affect anything now, but it is an enabler for future features.
eg: Renaming of plugins, moving plugins between profiles, inter-plugin communication.
= All IDs (Profile and Plugin) are now GUIDs generated via windows APIs
+ Status of Input Threads is now show in the Profile Toolbox.
Blue = current profile, Green = active (eg global), Amber = Loaded but paused
= Fixes to logic for loading / unloading of Input Threads
= Up event for joystick buttons should now properly trigger…
… when entering a profile with the button already held.
+ UCR should now wait until done saving if you close the GUI mid-save.
+ Profile Toolbox now has a title in the GUI
0.0.12 — 17th May 2016
+ The Profile Toolbox is now integrated into the rest of the UI
The UI is now resizable horizontally, so you can resize the profile toolbox.
0.0.11 — 10th May 2016
= The following keyboard keys are now bindable as inputs / outputs:
PgUp, PgDn, End, Home, Left, Up, Right, Down, Insert, Delete
Please note that some of your existingly configured bindings may change.
eg Any binding set to NumpadLeft will now be Left arrow.
This can be fixed by simply re-binding.
0.0.10 — 4th May 2016
+ The ProfileSwitcher plugin now has a «Press/Release» option.
This controls whether the profile switch happens on press or release of the button.
You can use this to switch to another profile when you press a button…
… then switch back to the original profile when you release the button.
0.0.9 — 3rd May 2016
= Fixed Issue #83
The up event for a joystick button did not fire while a subsequently held button…
… was down, until you released the button.
eg Hold button A, then B. Up event for A would not fire until B was released.
= Fixed Issue #84
Output buttons were registering as Input buttons.
0.0.8 — 1st May 2016
+ Added memory management for profile Input Threads
The «Input Threads» which handle detection of input (one for each profile)…
… now start and stop dynamically as profiles change.
This is to limit the amount of memory UCR uses to a reasonable level.
A Profile’s Input Thread will now be unloaded on profile change if they are a …
… «Linked Profile» of the new profile or the global profile.
Profile A is considered a «Linked Profile» of Profile B if eg…
… a Profile Switcher plugin in Profile B is configured to point to Profile A.
Plugins can call UpdateLinkedProfiles() on the parent Profile…
… to set their relationship to other Profiles (Add or remove a link).
= All debug output now prefixed with UCR|
So if using DebugView, you can just filter for only UCR stuff using the string:
DBGVIEWCLEAR;UCR|*
0.0.7 — 13th Mar 2016
! Warning! Settings version has changed.
BACK UP your INI file before using it with this version, if you value it.
+ Profiles are now organized in a Tree instead of a flat list.
+ Added a «Profile Toolbox» to allow navigation of the profile tree.
Add / Add Child / Delete / Rename of profiles are all functional.
Dragging and dropping of items in the Profile Tree to change parenting or order is supported.
+ Profile Switcher plugin now has a «picker» that can be used to choose a profile from the tree.
If you later change the structure of the tree, it will still point to the same profile.
! Both the «Profile Toolbox» and the «Profile Picker» are experimental / placeholder.
The Profile Picker does not close unless you pick an item or close it.
Neither remember position or size.
= Multiple AxisMerge plugins can now be used together.
0.0.6 — 21st Feb 2016
= Fixed errors while switching profile at the same time as input was happening.
The ProfileSwitcher plugin should no longer crash UCR.
0.0.5 — 25th Jan 2016
= On change of profile, all held buttons are released.
= AxisToButton plugins now correctly manipulate the outputs.
= Multiple AxisToButton plugins now work together.
0.0.4 — 24th Jan 2016
+ Profile Switcher plugin added to allow changing profile using a hotkey.
This can be placed in the global profile to always be in effect.
+ Basic Joystick Axis to Button remapper plugin added.
+ Settings file is now written after one second’s inactivity, rather than on every change.
+ Fix for Gui getting «Lost» when you minimized it.
If this happened to you, edit your INI file and reset the x and y coordinates at the top to 0.
+ vJoy API calls optimized.
= State property added to Output GuiControls, to match input GuiControls.
= AHK_H version updated
= Objects which are used in multiple threads are shared via COM using new AHK_H function ObjShare().
0.0.3 — 3rd Jan 2016
! WARNING: The Mouse To Joystick plugin is DANGEROUS in this version.
Adding one can be tricky (You will have to use keyboard to manipulate the Output Axis Combos)…
… But once you have added one, it will effectively break UCR — crashes all over the place
You will also not be able to remove the plugin via the GUI.
= AHK_H version updated
= Mouse Delta input now fires InputEvent like the other inputs
= InputEvent callbacks are now «Critical Objects».
Input from the global profile at the same time as the active profile should no longer crash UCR.
= Spamming button inputs quickly should no longer result in a «MaxHotkeysPerInterval» warning.
= Fix for current profile being forgotten on exit.
= Fix for multiple AxisToAxis plugins all using same output.
0.0.2 — 31st Dec 2015
= AHK_H version updated
+ Button To Axis remapper plugin added. Allows mapping of WSAD to vJoy
+ MouseDelta library added for reading of Delta Move information from mice.
+ Mouse to Joystick remapper plugin added for controlling a vJoy stick using mouse.
= Fix for: Leak of memory on each input event (eg button down/up, axis move).
= When in Bind Mode, only joystick buttons and hats that actually exist are polled.
This is better practice, and also seems to solve crashes on some systems.
= Split plugins folder into Core and User folders.
This should allow easier upgrading if you have your own plugins.
* If upgrading, it is advised that you back up your INI file and delete the old folder.
0.0.1 — 25th Dec 2015
+ First versioned release
Universal Control Remapper
Universal Control Remapper is a complete rewrite of the original UCR, created in collaboration with evilC.
Universal Control Remapper is a Windows application which allows the end-user to remap any inputs from devices, such as keyboards, mice, joysticks, racing wheels, eye trackers, etc. to virtual output devices. Remapping is achieved by transforming inputs through plugins to a desired output device.
Table of Contents
- Downloads
- Documentation
- Support / Discussion / Feedback
- Features
- Device support
- License
Downloads
The latest release of Universal Control Remapper can be downloaded from GitHub and with a number of basic plugins. Extra experimental or niche plugins can be found in the UCR-Plugins repository.
You may also need to install other drivers etc, for example to allow creation of virtual Xbox or DirectInput controllers. See the Providers page for details on these.
Test builds, patches, updated components, new or enhanced plugins etc., are often posted to the UCR channel in the HidWizards Discord server linked below. If you encounter any problems, it is best to check this channel for pinned patches.
Documentation
Documentation for Universal Control Remapper are hosted on GitHub at https://github.com/snoothy/ucr/wiki.
Support / Discussion / Feedback
Please do not use the UCR thread on the AutoHotkey forums. Either raise an issue on the issue tracker or join us in the HidWizards chat channel on Discord
Features
- Remap any number of inputs to any number of outputs on emulated output devices, with full analog support
- Profiles and nesting allows for easy configuration
- Endless remapping potential through plugin extension support
- Remapping and device order persists through reboots and unplugging of devices
- Profiles can be switched by external programs through Command line parameters (CLI)
- HidGuardian support through HidCerberus for true HID remapping
- Remap your own, or unsupported, input/output devices through extension support for device providers
- Uses no injection making it compatible with games using anti-tampering technologies, such as Denuvo
Device support
UCR supports input and output devices through plugins using the IOWrapper backend. UCR is released with standard plugins but can be extended with third party plugins to add additional device support.
Supported input
- Xbox 360 controllers (XInput)
- DirectInput controllers, includes gamepads, racing wheels, HOTAS, etc.
- Keyboard (using interception)
- Mouse (using interception)
- Tobii Eye tracker
Supported output
- Xbox 360 controller (XInput) (using ViGEm)
- Dualshock 4 controller (using ViGEm)
- DirectInput controller (using vJoy)
- Keyboard (using interception)
- Mouse (using interception)
Building and Contributing
It is required to run the build script before building with Visual Studio. Run .\build.ps1 InitProject
from powershell to initialize the required dependencies. All subsequent builds can be done from Visual Studio 2017.
Please see CONTRIBUTING
when you’ve decided to contribute to Universal Control Remapper
License
Universal Control Remapper is Open Source software and is released under the MIT license.
Open Source Agenda is not affiliated with «UCR» Project. README Source: Snoothy/UCR
snoothy / ucr
Goto Github
PK
View Code? Open in Web Editor
NEW
749.0
79.0
1.11 MB
Universal Control Remapper [Alpha]
License: MIT License
PowerShell 0.65%
Batchfile 0.01%
Shell 0.60%
hid
input-output
joystick
keyboard
mouse
plugin
remapping
vigem
xinput
ucr’s People
ucr’s Issues
How to run?
1) Unable to load DLL ‘Tobii.EyeX.Client.dll’: The specified module could not be found. (Exception from HRESULT: 0x8007007E)
no input
i have my keyboard connected but in ucr it does not show in the input group,i try to re open it but i still can not find it can some one help me pls thx
Axis Merge Sum Mode wraps around
Analog input filtering/dampening
Hi, love this program. (And it’s AHK predecessors…)
I’d love to implement dampening filters to smooth out movements done with analog sticks on a controller. DIRT Rally’s default steering smoothing is ridiculously strong, but raw input isn’t ideal for driving either. I’m thinking of a damped spring filter with a few variables for start, but I’m sure there are different algorithms for this purpose if the spring based one wasn’t very good…
Would it be just another plugin?
Thanks.
Add Device Discoverer
Create a view that allows you to select a provider and put all devices of that provider into Bind Mode.
When input from a device comes in, some kind of feedback should be presented to the user to tell them what device there was activity on.
This would be useful for example with Interception, when you are not sure which device is which.
Built in laptop keyboard doesn’t work
Hi my laptop’s built in keyboard doesn’t get recognized in the devices core_interception tab. After plugging in a usb keyboard it works. Is this intended or just a bug ?
Changes to EditBoxes do not take effect until they lose focus
Found in v0.3.1
- Add a new mapping
- Add a ButtonToAxis plugin
- Bind Inputs / Outputs
- Leave «Range Target» on default of 100
- Activate profile
- Axis deflects to full on press of button
- Deactivate profile
- Type 50 into Target Box
- Activate Profile
- Axis still deflects to full (BUG)
- Deactivate profile
- Click somewhere else so editbox loses focus (eg click Mapping)
- Activate Profile
- Axis now correctly deflects to 50% on press of button
UCR.FileHandler has stopped working
all i get is this when I try to run «UCR_unblocker»
UCR.exe doesn’t do anything. both on Win 7 and 10
Mouse to Axis feature
I see that there’s no apparently any way to map a mouse to analog axis without losing the mouse itself. There’s a way to have it be mapped without have it cease to work as a mouse?
Combine AxisToAxis plugins
As per our Discord conversation, I suggest a kind of logical grouping for Axes. I propose a modifications to actual AxisToAxis plugin to be able to accept 1 to 3 input/output — linear, circular, spherical movements — so to avoid cluttering the select dropdown with three different plugins.
@Snoothy @evilC
It could be done implementing a dropdown control inside the plugin witch permits to choose between 1, 2 or 3 i/o, and an hook which reload the plugin with the current configuration.
R2/L2 button maps not working on ViGEm DualShock4
Mapping to R2 or L2 does not trigger them in game (PSNow).
Delta To Axis absolute mode super jittery
I have this weird issue, i dont know if this is intended but however. i have made a DS4 emulated(obvious) controller in the hopes that i can use it with PS now (which is a streaming service). i am using HTML5 gamepad tester to help me set this DS4 up, and i’ve came into this problem where the absolute mode is extremely jittery and janky. however when the said mode is off, the joystick moves freely with my mouse movements, as compared to the absolute mode, it seems that the joystick is on some sort of grid.. hopefully i explained this well.
Interface is too slow to use
- Having to create input/output groups was confusing and seems like an unnecessary roadblock (initial setup time) to me.
- Much like UCR-autohotkey, key binding is unnecessarily slow. I have to click 4 times to create a single mapping, 2-3 times to select the input (and there’s no autodetection), and 2-3 times to select an output.
How to add plugins?
I think I’m dumb, but I tried many things, but I can’t seem to have new plugins I downloaded such as DeltaToAxis show up in the software. This is the file structure of the plugin.
DeltaToAxis
DeltaToAxis.cs
DeltaToAxis.csproj
Properties
AssemblyInfo.cs
Please put invert output/input option on Delta to axis
Need to invert Y axis output, and dont see any option
Mouse AXIS to AXIS Unable to bind
I couldn’t bind the mouse when I added axis to axis
Crash at launch — vigemclient.dll
At launch the program crashes/stops responding with the following in the log file:
FATAL unable to load ‘vigemclient.dll’: The specified module could not be found.
(Button to axis ) when you tap right and then leave it and then quickly tap left ( or any other combination) it stays in middle position for some time [ Solved]
It stays in middle position for some time then goes to the corresponding direction. Because of this the character does not move instantaneously when going from left to right or up to down or vice versa
Multiple Profiles Activated
I’m trying to use 3 keyboards for playing in Nintendo 64, so far i have 2 profiles working like a charm (the default windows keyboard is the 3rd controller) but i can only active one profile at a time. When i try to active another profile, the first one is deactivated. Is there a way to make this work? Am i missing something?
Previews cause high CPU usage when using Delta inputs
The preview bars cause excessive CPU usage for Delta inputs if the Profile window is active.
Even if the Profile window is not visible on-screen due to being behind another window, this persists.
Maybe we should try to implement something like this, to stop the Previews from rendering unless actually visible.
Obviously doing this for each control would not be very efficient, I am thinking we would want one thread always running that periodically checks if the Profile window is currently visible, and if not, to disable rendering of Previews.
Multimedia Key Input
There is not option to select multimedia keys for input, like Volume_Up, Volume_Down, Browser_Home etc.
Hope this will be added soon.
Wiki suggestions
I would suggest adding some more sections to the Wiki and making them editable by the users. This would make it possible to let us users help with the documentation and make it easier for new users to get to grips with UCR C++.
A Plugins section:
With a list of plugins, with descriptions and guides for them. My thoughts are that the creator of the plugin, or users who have figured out how to use it, can write descriptions and guides.
An examples and do’s and don’ts for creating Plugins section:
A use section:
This could be for guides on how to setting up and use HidGuardian
Switching profiles with CLI
Setting up switch states
How to start UCR with a certain profile and the corresponding game or program from a desktop link and more like this.
A housekeeping section:
What files to backup before doing a complete wipe and reinstall of Windows and other operating systems and what to change after the reinstall.
List of, how and what to edit for certain gains and changes in userfiles like context.xml
Could be something like this:
Rename and move mappings in UCR C++
At the moment this is not possible in the gui, but can be done editing the context.xml file using Notepad++.
Remember to backup the file before editing.
Notepad++ is free, get it here: https://notepad-plus-plus.org/ After download install it.
To open the file in Notepad++:
Right click context.xml, click Edit with Notepad++
To rename a mapping:
Find the mapping name you have ie.
<Title>Button 2</Title>
and change it to what you want ie.
<Title>Button 2 Lock target</Title>
To move a mapping:
Mark everything from
to
Hit Crtl X
If you want to move the mapping to the top of the profile:
Find
Place the cursor behind |
Hit Enter and align the cursor with the front of
|
Hit Crtl V or Shift Insert
If you want to move the mapping anywhere else:
Find the you want your mapping to be below.
Place the cursor behind |
Hit Enter
Hit Crtl V or Shift Insert
Save the file and you are good to go.
These suggestions and the guide where inspired by the “Let user rename mappings” and “Allow to move mappings” suggestions here: #53
Thank you so very much for this very useful software.
Windows Defender finds a trojan in the binary of release v0.2.0
See screenshot:
Feature: Deadzone control for both ends of axis
Any chance for something like this:
In both UCR and UCR-C you can only control the deadzone around the center of the axis correct?
[UCR 0.6.1 ] Delta to Axis, input not converting to xbox Right stick or left stick ?
Trying to emulate mouse axis to xbox axis but Im failing to do so, it shows in the preview properly but output isnt there. Couldnd find tutorials on this, help
Edit: Just found out the plugins pack doesnt work with v6.1, it works with v6.0 though….
Edit: I would also like you guys to add a feature to invert output in Delta to Axis, please
For any plugin type, only the first one added works
For example:
Plugin #1
Type: Axis to axis
Axis Input: Xbox Controller 1, LX
Axis Output: ViGEm DS4 Controller 1, LX
Plugin #2
Type: Axis to axis
Axis Input: Xbox Controller 1, LY
Axis Output ViGEm DS4 Controller 1, LY
Only plugin #1 works, i.e. the LX mapping works, but not LY. If I instead define mapping for LY first, then LY works, but not LX.
Similarly, if I add two or more button-to-button plugins, only the first one will work.
If I add a combination of axis-to-axis and button-to-button plugins, only the first of each type will work.
Release v0.2.0 Alpha
The profile could not be activated
I tried to configure thrustmaster Hotas X with xbox controller, but after i have done the profile when I want to activate it didn’t go, I get thise errore message: the profile could not be activated, see the log for more details … another thing is that how to save created profile? The save button is not active.
2019-04-21.log
Mouse Movement to analog stick?
Is this even possible? I have Interception installed but there is no axis for mapping the mouse movement to RX+RY. Am I overlooking something?
I’m trying to fully emulate the DS4 with mouse and keyboard for use with PS Now(game streaming service.) I have a disability and can’t use a regular DS4. Any help would be greatly appreciated.
Adding Button+AxisToAxis plugin
It’s will be really useful in sims with lot of axis.
Pressing button «A» and roll axis «A» on joystic will give output as axis 1 of virtual joystic, pressing another button «B» and roll same axis «A» on joystic will give output axis 2 of virtual joystic.
Roll axis «A» without pressing any buttons will give output as axis 3 of virtual joystic (by AxisToAxis plugin).
And will be grate to do checkbox for variants of using button — press and hold, or press and release,
Deleting mapping does not delete associated plugin
Add a mapping
Add a plugin to that mapping
Delete the mapping
Plugin remains in right pane
Cannot activate profile, here is the error log [ Solved ]
2018-12-31 19:37:51.2294 INFO Launching UCR
2018-12-31 19:37:55.3519 ERROR Failed to load context.xml
2018-12-31 19:37:57.3056 DEBUG Start bind mode
2018-12-31 19:38:31.8513 DEBUG Activating profile: {Xbox360}
2018-12-31 19:38:31.8756 DEBUG Successfully populated subscription state
2018-12-31 19:38:31.8756 DEBUG SubscriptionState successfully activated
2018-12-31 19:56:55.3126 INFO Launching UCR
2018-12-31 19:57:00.4260 ERROR Failed to load context.xml
2018-12-31 19:57:07.9620 DEBUG Start bind mode
2018-12-31 20:00:05.6200 DEBUG End bind mode
2018-12-31 20:01:31.4366 DEBUG End bind mode
2018-12-31 20:01:53.8593 DEBUG End bind mode
2018-12-31 20:02:01.5436 DEBUG End bind mode
2018-12-31 20:02:13.3902 DEBUG End bind mode
2018-12-31 20:03:39.7775 DEBUG End bind mode
2018-12-31 20:05:03.6308 DEBUG End bind mode
2018-12-31 20:05:27.8648 DEBUG End bind mode
2018-12-31 20:08:49.8361 DEBUG End bind mode
2018-12-31 20:08:54.3649 DEBUG End bind mode
2018-12-31 20:11:56.2665 DEBUG End bind mode
2018-12-31 20:12:01.9351 DEBUG End bind mode
2018-12-31 20:13:06.7329 DEBUG End bind mode
2018-12-31 20:13:22.4091 DEBUG End bind mode
2018-12-31 20:13:23.7746 DEBUG End bind mode
2018-12-31 20:13:25.7612 DEBUG End bind mode
2018-12-31 20:14:03.5336 DEBUG Activating profile: {xbox360}
2018-12-31 20:14:03.5716 DEBUG Successfully populated subscription state
2018-12-31 20:14:03.5776 DEBUG Subscribing output device: {Device:{ViGEm Xbox 360 Controller 1} Provider:{Core_ViGEm} Handle:{xb360} Num:{0}}
2018-12-31 20:14:03.8847 ERROR Failed to activate profile successfully
2018-12-31 20:14:07.2075 DEBUG Activating profile: {xbox360}
2018-12-31 20:14:07.2135 DEBUG Successfully populated subscription state
2018-12-31 20:14:07.2135 DEBUG Subscribing output device: {Device:{ViGEm Xbox 360 Controller 1} Provider:{Core_ViGEm} Handle:{xb360} Num:{0}}
2018-12-31 20:14:07.5056 ERROR Failed to activate profile successfully
2018-12-31 20:15:06.0001 INFO Launching UCR
2018-12-31 20:15:10.8927 DEBUG Start bind mode
2018-12-31 20:15:27.4982 DEBUG Activating profile: {xbox360}
2018-12-31 20:15:27.4982 DEBUG Successfully populated subscription state
2018-12-31 20:15:27.5142 DEBUG Subscribing output device: {Device:{ViGEm Xbox 360 Controller 1} Provider:{Core_ViGEm} Handle:{xb360} Num:{0}}
2018-12-31 20:15:27.8809 ERROR Failed to activate profile successfully
2018-12-31 20:17:09.0720 DEBUG Activating profile: {xbox360}
2018-12-31 20:17:09.0720 DEBUG Successfully populated subscription state
2018-12-31 20:17:09.0720 DEBUG Subscribing output device: {Device:{ViGEm Xbox 360 Controller 1} Provider:{Core_ViGEm} Handle:{xb360} Num:{0}}
2018-12-31 20:17:09.3731 ERROR Failed to activate profile successfully
2018-12-31 20:18:55.7286 DEBUG Activating profile: {xbox360}
2018-12-31 20:18:55.7286 DEBUG Successfully populated subscription state
2018-12-31 20:18:55.7286 DEBUG Subscribing output device: {Device:{ViGEm Xbox 360 Controller 1} Provider:{Core_ViGEm} Handle:{xb360} Num:{0}}
2018-12-31 20:18:56.0285 ERROR Failed to activate profile successfully
2018-12-31 20:24:40.6358 INFO Launching UCR
2018-12-31 20:24:42.7941 ERROR Failed to load context.xml
2018-12-31 20:24:43.2579 DEBUG Start bind mode
2018-12-31 20:25:06.5588 INFO Launching UCR
2018-12-31 20:25:09.1514 DEBUG Start bind mode
2018-12-31 20:25:13.3075 DEBUG Activating profile: {xbox360}
2018-12-31 20:25:13.3075 DEBUG Successfully populated subscription state
2018-12-31 20:25:13.3254 DEBUG Subscribing output device: {Device:{ViGEm Xbox 360 Controller 1} Provider:{Core_ViGEm} Handle:{xb360} Num:{0}}
2018-12-31 20:25:13.6185 ERROR Failed to activate profile successfully
Unable to open version 0.4
Previously I could open v0.3.1, however it failed to display any devices under my device group manager. I fixed this by unblocking the zip in the properties context menu then extracting it. On 0.4 I got the same issue, it opens, no devices are listed. However when doing the same method of unblocking the zip, it now crashes the moment I try to open. Giving me a generic this application stopped working message. Here is the log.
2018-10-07.log
Blocking is not working
This project is really awesome, but it seems there is an error or bug like following one.
I tried changing BlockingEnabled value to True on Settings.xml file on the same directory as Core_Interception.dll file.
But key blocking was not working.
Please help me.
Thanks.
F13 — F14 Rebinding Error
I noticed that when i rebind f13, it binds it as tab. And other like f14 etc are not shown.
WiFi HID emulator
hi , sorry to open a ticket for my question, but I have a question that may related to your field of repository and any possible hint really appreciated
Actually I interested to send game-pad data by WiFi bridge(ESP8266) to my laptop, but generic joystick only use USB port, Is there a way to emulate «HID-compliant game controller» driver which listen to IP message instead of USB port
Tnx
UCR_unblocker crashes when directory has spaces.
Removing space from dir fixed the issue, so confirmed.
Streamdeck as input device.
Are there any plans to support/allow the Elgato Stream Deck as an input device?
They should have a developer api available.
Add AxisInitializer plugin
This is currently blocked, as setting output states in OnActivate
does not seem to work.
I am guessing that OnActivate
is fired before the Outputs are acquired
Only takes in x input when moving mouse diagonally [solved]
Would this be added in the future where both x and y inputs would go in simultaneously ?
Edit: NVM it was for v0.5.2
Usability suggestions
- Let user rename mappings
- Allow to move mappings
- Collapsible groups (aka, subfolders) to easily deal with lots of mappings
- Allow users to activate another profile without have to disable the current active profile (auto disabling)
- Minimize to system tray
- Global settings window
- Refresh button which de-activate and re-activate a profile, from the edit window
about vJoy pov and Vigem pov
vJoy pov max is 35900 but vigem pov max is 36000. so how to mapper each other ?
Intent for others to be able to build?
Is it your intent that others be able to build this code and potentially contribute to the project?
Design suggestions
- Allow Axis plugin to be created with one, two or three axes (linear, circular, spherical), which share the same settings.
- Chainable modifiers
ButtonToAxis plugin is confusing
It is not immediately apparent how this plugin works.
Suggest instead we have «Value on Press» / «Value on Release» editboxes and a «Set axis on release» checkbox.
Mouse to Axis / Delta to Axis not appearing in plugin list
Hello, I have UCR 0.6.0 downloaded and Interception installed. When I try to add a plugin, I cannot see a Mouse to Axis or Delta to Axis option. I am trying to map mouse movement to the right stick of an emulated Xbox controller.
UCR.FileHandler has stopped working
all i get is this when I try to run «UCR_unblocker»
UCR.exe doesn’t do anything. both on Win 7 and 10
Adding ability to use a Button to toggle an Axis position
would be an amazing feature.
button press => toggle Y Axis +20%
button press again => back to 0%
I want to map a button to toggle auto walk at a custom speed.
Keep last used plugin when adding new mapping.
I have an enhancement suggestion, that I feel have the potential to make it easier, to use this very useful application.
Suggestion:
Have the Add plugin dialog keep the last used plugin, at least in the current session, instead of reverting to the Axes Range to Button, each time a new mapping is added.
Having up to 25 axes and 139 button and hat presses on 7 different devices to assign, makes it very timeconsuming and somewhat frustrating having to change it each time.
It would also be very nice, if the output device dialog could keep the last used device.
Thank you very much for the effort that you put into this great project.
Key combinations and mouse double clicks
How to map key combinations like shift+key and mouse double clicks? And something like shift+click? In context.xml, there is KeySubValue, but it is not working for me, for example shift+a:
<KeyType>1</KeyType>
<KeyValue>41</KeyValue>
<KeySubValue>29</KeySubValue>
Recommend Projects
-
ReactA declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
TypescriptTypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlowAn Open Source Machine Learning Framework for Everyone
-
DjangoThe Web framework for perfectionists with deadlines.
-
LaravelA PHP framework for web artisans
-
D3Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
FacebookWe are working to build community through open source technology. NB: members must have two-factor auth.
-
MicrosoftOpen source projects and samples from Microsoft.
-
GoogleGoogle ❤️ Open Source for everyone.
-
AlibabaAlibaba Open Source for everyone
-
D3Data-Driven Documents codes.
-
TencentChina tencent open source team.
UCR — Universal Control Remapper
THIS AHK VERSION OF UCR IS BEING PHASED OUT! PLEASE START TO MIGRATE TO THE NEW C# VERSION
DOWNLOAD HERE
DO NOT Use the green «Download» button at the top of this page
Forum thread for news and discussion
Historical releases
IMPORTANT NOTES ON XBOX CONTROLLERS!
GENERAL
UCR does not currently support remapping of a physical Xbox controller.
That is to say, if you wish to alter how a game sees a physical Xbox controller, you cannot currently do this.
This may be possible in the future via Nefarius’ HidGuardian project.
Reading input from an Xbox controller and sending output to vJoy etc is fine.
Reading input from a non-Xbox stick and emulating an Xbox controlelr is fine.
Input (Reading state of your XBox controller)
- There is no «Bind Mode» for Xbox controllers, you must select from the menu to enable XInput support.
- Some Xbox controller variants (One, Elite, Accessibility) will only work in Xinput mode.
If Xbox controllers stop working while UCR is not active, then you are not using XInput mode! Select from the menu, don’t use Bind Mode!
Output (Emulating Xbox controllers)
For Virtual XBox controllers to work, you must:
- Install the latest version of vJoy from http://vjoystick.sourceforge.net/
- On first run of UCR, check the vJoy log to make sure vJoy loaded OK
From the UCR main menu: IOClasses -> vJoy -> Show vJoy log - If all went well, install the SCPVBus:
From the UCR main menu: IOClasses -> vJoy -> Install SCPVBus
If this step fails, open an admin command prompt and navigate to UCR’s resources folder, there are .bat files in there
About
The aim of UCR is to allow end-users to easily leverage the power of AHK without having to learn to code.
At it’s basest level, think of it as a way for an end-user to run a number of scripts written by various people, and manage when each script runs, what keys trigger it’s functions, tweak each script’s parameters, etc — solely by using a GUI application.
The primary target audience is gamers, UCR is intended to be able to replicate the functionality that comes with programmable keyboards / mice / joysticks etc.
Profiles
UCR supports profiles. A number of plugins can be grouped together into a Profile.
Profiles can also have child profiles, and child profiles can «inherit» the plugins of a parent profile.
This can be used to create «Shift states» to switch the functionality of inputs.
In the future, it is also planned to allow profiles to be linked to a specific application — when that application gets the focus, the profile becomes active.
Command line profile switching
Profiles can be changed through command line parameters when launching UCR through the CLI tool and subsequently to change the profile of the running instance. The syntax for profile switching is UCR.exe CLI.ahk <ParentProfile> <ChildProfile>
. There are three different methods for changing profiles using the syntax. Passing a valid profile GUID as the <ParentProfile>
will find and activate the profile. Passing a string, quoted or unquoted, as <ParentProfile>
will select the first profile matching <ParentProfile>
(all matches are case insensitive). Passing both <ParentProfile>
and <ChildProfile>
will find and select a profile matching the <ChildProfile>
name with a parent profile matching the <ParentProfile>
name. The <ParentProfile>
will be selected as fallback if no <ChildProfile>
is found.
Example: UCR.exe CLI.ahk "MAME" "megaman"
Plugins
At the core of the design of UCR is the idea of an AHK script as a «Plugin».
From an end-user’s perspective, a plugin is a widget which can perform a small task — eg remap one key to another.
From a plugin author’s point of view, a plugin is simply a text file containing AHK script.
The script contains an AHK class that derives from a base class which is part of the UCR source code.
Each instance of each plugin gets it’s own GUI inside the UCR app when added by a user.
The GuiControls in the Gui can easily be made persistent across runs and you can add special GuiControls that allow the end-user to select the inputs (eg hotkeys) and outputs to configure your script.
There are varios provided methods and mechanisms to get notification of events (eg the profile containing the plugin went active or inactive)
Pretty much anything that you could normally put in an AHK class should work inside a plugin.
Persistent GuiControls
Plugins can call UCR methods to add a GuiControl to their Gui whose value will be remembered between runs of UCR.
It can be used to allow the end user to tweak the behavior of the plugin that it is part of.
Inputs and Outputs
Plugins may also contain special GuiControls that allow the end user to bind inputs and outputs.
Valid inputs are: Keyboard, Mouse, Joystick.
Valid outputs are: Keyboard, Mouse, vJoy Virtual Joystick (Inc virtual XBox), Titan One hardware
More inputs and output types can be added through the «IOClass» system — Each IOClass can add items to the UCR Main menu, handles adding of menu items to the Input/Output GuiControls, and handles processing of input and output (eg Calling DLLs).
Requirements
If you are a typical end-user of UCR, you just need to download the zip from the releases page, unzip it and double-click UCR.exe. No installation is required, and you do not need to install AutoHotkey.
In order to run UCR un-compiled:
Install AutoHotkey, then take a copy of UCR.exe from the download zip, rename it AutoHotkey.exe and place it in your AutoHotkey install folder. Optionally back up the old AutoHotkey.exe, but the files named like AutoHotkeyA32.exe in your AHK folder are already backups of the normal AHK executables.
Debugging UCR
A major design goal of UCR is to make it (and plugins) debuggable.
Development is currently done using SciTE4AutoHotkey, so if you wish to debug UCR or a plugin, that is the advised solution.
Currently the relased version of SciTE4AutoHotkey does not support breakpoints in plugins etc properly, but Lexikos has a fix for this, and I posted instructions [here](https://autohotkey.com/boards/viewtopic.php?p=111383# p111383) on how to apply the fix.
UCR’s code avoids the use of SetTimer, OnMessage etc in the main thread wherever possible, so that «stepping in» in the debugger does not end up dropping you into some random timer pseudo-thread. In general, it works around these situations by offloading any code that might interfere with the debugging process to a worker thread.
Debugging Plugins
If you wish to be able to set breakpoints within a plugin, then you must do the following:
Edit UCRDebug.ahk
and place a line like # include Plugins\User\MyPlugin.ahk
at the end.
Also, make sure the line # Include *iUCRDebug.ahk
in UCR.ahk
is not commented out.
This makes the debugger aware of the plugin, and allows you to place breakpoints within it.
You may debug any number of plugins in this way.
Documentation
Please see the Wiki.