• Stars
    star
    194
  • Rank 200,219 (Top 4 %)
  • Language AutoHotkey
  • License
    MIT License
  • Created over 10 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Universal Control Remapper [ALPHA]

UCR - Universal Control Remapper

THIS AHK VERSION OF UCR IS BEING PHASED OUT! PLEASE START TO MIGRATE TO THE NEW C# VERSION

ScreenShot

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)

  1. There is no "Bind Mode" for Xbox controllers, you must select from the menu to enable XInput support.
  2. 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:

  1. Install the latest version of vJoy from http://vjoystick.sourceforge.net/
  2. 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
  3. 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.

More Repositories

1

AutoHotInterception

An AutoHotkey wrapper for the Interception driver
C#
694
star
2

TapHoldManager

An AHK library for Long Press / Multi tap / Multi tap and hold
AutoHotkey
122
star
3

AHK-Universal-Joystick-Remapper

An application to remap one or more physical sticks to a virtual stick, with modifications such as axis inversion, deadzones, sensitivity etc. Uses the vJoy virtual joystick library.
AutoHotkey
86
star
4

AutoHotStreamDeck

An AutoHotkey wrapper for interacting with the Elgato Stream Deck
C#
73
star
5

ADHD-AHK-Dynamic-Hotkeys-for-Dummies

An AutoHotKey library for creating GUI scripts with user-configurable, persistent settings.
AutoHotkey
66
star
6

HotVoice

Adds Speech Recognition support to AutoHotkey, via a C# DLL
AutoHotkey
56
star
7

AHK-CvJoyInterface

A Simple to use class for AutoHotkey to interface with Shaul's vJoy
AutoHotkey
39
star
8

AHK-CGDipSnapShot

An AHK library for working with snapshots of a portion of the screen (compare, easy conversion etc) using the GDI+ library
AutoHotkey
28
star
9

AppFactory

A library for creating AHK Gui Apps with configurable hotkeys and settings.
AutoHotkey
27
star
10

JoystickWrapper

A C# DLL wrapper using SharpDX, to replace AHK's joystick functionality
C#
25
star
11

IOWrapper

Universal Control Remapper 2.0 (Back End)
C#
25
star
12

AHK-ViGEm-Bus

A wrapper for AHK that drives the ViGEm bus to create virtual console controllers
AutoHotkey
25
star
13

MW5HOTAS

A tool and guide to assist configuring HOTAS controllers in Mechwarrior 5
C#
24
star
14

AHK-Random-Musings

A random collection of test scripts, proof-of-concepts etc.
AutoHotkey
18
star
15

RollMouse

Emulate a trackball "spin" by lifting an optical mouse mid-movement
AutoHotkey
16
star
16

RDPTools

An AHK library for automating RDP client connections
AutoHotkey
15
star
17

Fire-Control

A multi-function macro for Mechwarrior Online
AutoHotkey
11
star
18

SequenceSender

A library for AutoHotkey to make it easy to send (optionally repeating) sequences of characters
AutoHotkey
11
star
19

CGui

A wrapper for AHK's GUI functionality, Experimental!
AutoHotkey
10
star
20

VTOLVRPhysicalInput

A mod for VTOL VR to allow using physical input devices
C#
9
star
21

WootingAHK

An AutoHotkey wrapper for the Wooting Keyboard analog / RGB APIs
AutoHotkey
9
star
22

CHotkeyControl

AutoHotkey
9
star
23

RADical

An AHK library for Rapid Application Development of GUI applications
AutoHotkey
8
star
24

SpaceMouse-HidLibrary

A library to read the SpaceMouse
C#
8
star
25

AHK-CHID

A class-based implementation of HID functions using HotkeyIt's _Struct
AutoHotkey
7
star
26

HotClass

A class that enhances AutoHotkey's input detection (ie hotkeys) capabilities
AutoHotkey
7
star
27

AHK-Library-Setup

Tool for AHK Library writers to ensure people using their library are set up correctly.
AutoHotkey
7
star
28

MicroTimer

A DLL Wrapper for Ken Loveday's MicroLibrary, with AutoHotkey interop demo
C#
6
star
29

7DTD-Loot-Viewer

C#
5
star
30

CHotkeyHandler

A class to allow end-users to easily bind hotkeys to script actions.
AutoHotkey
5
star
31

SourceGrab

An AHK Class to grab the source code of a web page
AutoHotkey
5
star
32

AHK-HID-Hotkeys

A class to replace AHK's hotkeys with a HID-based system not subject to the limitations of AHK's hotkeys.
AutoHotkey
5
star
33

HIDuino

Experiments with Arduino based HID manipulation
C#
4
star
34

OneSwitch-Utilities

A set of utilitie to assist disabled people operate computers. In association with OneSwtich.
AutoHotkey
4
star
35

CScrollGui

A Class that enables scrollbars for GUIs. Same as Just Me's code, but using _Struct / WinStructs
AutoHotkey
4
star
36

BaTSHit

Betaflight Thrust Stand Helper
AutoHotkey
4
star
37

UJRC

UJRC - Universal Joystick Remapper Companion - An AHK library to make it easy to map multiple functions onto a limited number of joystick buttons through the use of shift states.
AutoHotkey
4
star
38

NodeNetworkTests

A bunch of code playing with WouterDeK's NodeNetwork
C#
3
star
39

ProfileHandler

A library for adding Per-Profile settings to AHK GUI scripts
AutoHotkey
3
star
40

Chat

A program to automatically type predefined strings
AutoHotkey
3
star
41

SpaceMouse-HidSharp

A library to read the SpaceMouse
C#
3
star
42

NodeNetworkMefCalculator

An example of using MEF to load Nodes for WouterDeK's NodeNetwork
C#
3
star
43

Love2D-Joystick-Tester

A joystick input tester for Love2D.
Lua
2
star
44

LogSync

A tool to view multiple logs, synchronized in time and with synchronized scrollbars
C#
2
star
45

SockPuppet

A Remote Control library for AHK using TCP Sockets
AutoHotkey
2
star
46

ADHD-Analog-to-Digital

An experiment in analogue to digital - using an axis to spam space at varying rates
AutoHotkey
2
star
47

TitanWrapper

A C# wrapper for the Titan One API, with sample AutoHotkey scripts
C#
2
star
48

MarlinProbeAssistedLeveler

A tool to physically level a 3D printer's bed using a BLTouch probe
C#
1
star
49

Spreadsheet-Barcode-Scanner

A utility to make using a barcode scanner to find items in a spreadsheet easier
AutoHotkey
1
star
50

relative_throttle

AutoHotkey
1
star
51

InputWrapper

A plugabble Input Detection wrapper using MEF
C#
1
star
52

MWO-Intelligent-Zoom

An Autohotkey script to provide proper zoom controls in Mechwarrior Online
AutoHotkey
1
star
53

Pad-Throttle

Makes a joypad such as an XBOX controller behave like a throttle and rudder pedals
AutoHotkey
1
star
54

MWO-Absolute-Aim

A utility to enhance absolute stick aiming in MWO
AutoHotkey
1
star
55

xbox-360-controller-custom

Automatically exported from code.google.com/p/xbox-360-controller-custom
C++
1
star
56

MWO-Auto-Ready

A Script for MWO that automatically clicks ready for you
AutoHotkey
1
star