Giter Site home page Giter Site logo

snoothy / ucr Goto Github PK

View Code? Open in Web Editor NEW
854.0 32.0 86.0 1.11 MB

Universal Control Remapper [Alpha]

License: MIT License

C# 98.74% PowerShell 0.65% Batchfile 0.01% Shell 0.60%
input-output hid joystick keyboard mouse remapping plugin directinput xinput vigem

ucr's People

Contributors

craftyfirefox avatar evilc avatar snoothy avatar spadino avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ucr's Issues

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>

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 ?

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

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,

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.

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

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.

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.

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 screenshot

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

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.

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?

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?

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.

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.

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.

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

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

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.

[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

Interface is too slow to use

  1. Having to create input/output groups was confusing and seems like an unnecessary roadblock (initial setup time) to me.
  2. 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.

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.

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

Changes to EditBoxes do not take effect until they lose focus

Found in v0.3.1

  1. Add a new mapping
  2. Add a ButtonToAxis plugin
  3. Bind Inputs / Outputs
  4. Leave "Range Target" on default of 100
  5. Activate profile
  6. Axis deflects to full on press of button
  7. Deactivate profile
  8. Type 50 into Target Box
  9. Activate Profile
  10. Axis still deflects to full (BUG)
  11. Deactivate profile
  12. Click somewhere else so editbox loses focus (eg click Mapping)
  13. Activate Profile
  14. Axis now correctly deflects to 50% on press of button

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

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

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.

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.

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.

Design suggestions

  • Allow Axis plugin to be created with one, two or three axes (linear, circular, spherical), which share the same settings.
  • Chainable modifiers

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.