Top Related Projects
Like those other ds4tools, but sexier
[NOT maintained anymore] Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support
Windows kernel-mode driver emulating well-known USB game controllers.
The Interception API aims to build a portable programming interface that allows one to intercept and control a range of input devices.
Quick Overview
UCR (Universal Control Remapper) is an open-source input management tool for Windows. It allows users to remap and combine inputs from various devices, including gamepads, keyboards, and mice, to create custom control schemes for games and applications.
Pros
- Supports a wide range of input devices, including Xbox, PlayStation, and Nintendo controllers
- Offers advanced features like virtual devices, macro creation, and profile management
- Provides a user-friendly interface for creating and managing input remaps
- Actively maintained and regularly updated by the community
Cons
- Limited to Windows operating system
- May require some technical knowledge to set up and configure complex remaps
- Potential for input lag in certain configurations
- Some users report occasional compatibility issues with specific games or applications
Code Examples
As UCR is primarily a GUI-based application, there are no direct code examples to provide. The project is focused on user interaction through its interface rather than programmatic usage.
Getting Started
- Download the latest release from the UCR GitHub releases page.
- Extract the downloaded ZIP file to a location of your choice.
- Run the
UCR.exefile to start the application. - Click on "Add Profile" to create a new input profile.
- Add input devices and create mappings using the GUI.
- Save your profile and activate it to use your custom input configuration.
For more detailed instructions, refer to the UCR Wiki on the project's GitHub page.
Competitor Comparisons
Like those other ds4tools, but sexier
Pros of DS4Windows
- Specifically designed for DualShock 4 controllers, offering optimized support
- Includes features like touchpad mouse emulation and LED customization
- More user-friendly interface for casual users
Cons of DS4Windows
- Limited to DualShock 4 and DualSense controllers
- Less flexibility for complex input remapping scenarios
- Fewer options for advanced users and developers
Code Comparison
DS4Windows (C#):
public class DS4Device
{
public DS4State CurrentState;
public DS4State PreviousState;
public void StartUpdate() { /* ... */ }
}
UCR (C#):
public class Device : IDisposable
{
public DeviceDescriptor Descriptor { get; }
public IDeviceHandler Handler { get; }
public void Initialize() { /* ... */ }
}
Summary
DS4Windows is tailored for PlayStation controllers, offering a user-friendly experience with specific features. UCR provides a more versatile platform for various input devices, catering to advanced users and developers. DS4Windows focuses on simplicity and out-of-the-box functionality, while UCR emphasizes flexibility and extensibility for complex input scenarios.
[NOT maintained anymore] Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support
Pros of antimicro
- More mature project with a larger user base and longer development history
- Cross-platform support (Windows, Linux, macOS)
- Graphical user interface for easier configuration
Cons of antimicro
- Less actively maintained (last commit over 2 years ago)
- Limited support for complex input device configurations
- Fewer advanced features compared to UCR
Code Comparison
antimicro (C++):
void JoyButton::setChangeSetCondition(SetChangeCondition condition, bool passive)
{
SetChangeCondition oldCondition = setSelectionCondition;
if (condition != setSelectionCondition)
{
setSelectionCondition = condition;
emit propertyUpdated();
}
}
UCR (C#):
public void SetProfile(Profile profile)
{
if (profile == null)
throw new ArgumentNullException(nameof(profile));
_currentProfile = profile;
_currentProfile.Activate();
OnProfileChanged();
}
Both projects aim to provide input remapping functionality, but UCR offers more advanced features and is more actively maintained. antimicro has a wider user base and cross-platform support, making it more accessible for casual users. UCR is better suited for complex configurations and power users.
Windows kernel-mode driver emulating well-known USB game controllers.
Pros of ViGEmBus
- Lower-level implementation, providing direct virtual gamepad support
- Broader compatibility with various input devices and emulation scenarios
- More active development and community support
Cons of ViGEmBus
- Requires more technical knowledge to implement and use effectively
- Less user-friendly for non-developers or casual users
- May require additional software or drivers for full functionality
Code Comparison
ViGEmBus (C++):
VIGEM_TARGET_ALLOC_INIT(&client, VIGEM_TARGET_TYPE_X360);
vigem_target_add(client, target);
XUSB_REPORT report;
report.wButtons = 0;
vigem_target_x360_update(client, target, report);
UCR (C#):
var profile = new Profile("MyProfile");
var input = new Joystick(1);
var output = new vJoy(1);
profile.Map(input.Axis1, output.Axis1);
UCR.AddProfile(profile);
The code comparison illustrates the difference in abstraction levels between the two projects. ViGEmBus operates at a lower level, directly manipulating virtual gamepad reports, while UCR provides a higher-level API for mapping inputs to outputs.
The Interception API aims to build a portable programming interface that allows one to intercept and control a range of input devices.
Pros of Interception
- Lower-level input device interception, allowing for more direct control
- Supports a wider range of input devices, including keyboards, mice, and gamepads
- Provides a C API for easier integration with various programming languages
Cons of Interception
- Requires installation of a driver, which may pose security concerns
- Less user-friendly for non-technical users
- Limited built-in functionality compared to UCR's more comprehensive features
Code Comparison
UCR (C#):
public class JoystickHandler : IDeviceHandler
{
public void HandleInput(InputEvent inputEvent)
{
// Process joystick input
}
}
Interception (C):
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
InterceptionContext context;
InterceptionDevice device;
InterceptionStroke stroke;
// Process input using Interception API
}
UCR focuses on providing a user-friendly interface for remapping controls, while Interception offers lower-level access to input devices. UCR is written in C# and provides a more abstracted approach, whereas Interception uses C and requires more direct interaction with the input devices. The choice between the two depends on the specific requirements of the project and the developer's expertise.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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
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.
Top Related Projects
Like those other ds4tools, but sexier
[NOT maintained anymore] Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support
Windows kernel-mode driver emulating well-known USB game controllers.
The Interception API aims to build a portable programming interface that allows one to intercept and control a range of input devices.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot