Universal Control Remapper (UCR) - v0.1.22 28th Oct 2018

Post gaming related scripts
raron
Posts: 22
Joined: 11 Aug 2014, 00:50

Re: Universal Control Remapper (UCR) - v0.1.12 7th Mar 2017

11 Mar 2017, 20:42

@ evilC

Great stuff! Just confirming that it works.
(Except preview in UCR)
DarkEntity
Posts: 9
Joined: 09 Mar 2017, 13:54

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 08:56

Can someone make a plugin that locks axis at current position with a press of a button ? Lets say you push analog stick 80% and when you press the lock button it would lock that axis to that position until you release the button or press it again.
User avatar
evilC
Posts: 4742
Joined: 27 Feb 2014, 12:30

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 09:11

You may want to describe what you want to happen when the lock is released.

Should the axis move to the position that the input is now at, or should it not move until you move the axis again?
DarkEntity
Posts: 9
Joined: 09 Mar 2017, 13:54

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 09:22

evilC wrote:You may want to describe what you want to happen when the lock is released.

Should the axis move to the position that the input is now at, or should it not move until you move the axis again?

Oh, yes, it would be good if on release axis moves to current input position.
User avatar
evilC
Posts: 4742
Joined: 27 Feb 2014, 12:30

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 14:30

DarkEntity wrote:Can someone make a plugin that locks axis at current position with a press of a button ? Lets say you push analog stick 80% and when you press the lock button it would lock that axis to that position until you release the button or press it again.
So you need it to be able to support both "Hold Button to Lock" and "Tap Button to Toggle Lock"?

I have to run an errand, but once I get back I will code it for you.
DarkEntity
Posts: 9
Joined: 09 Mar 2017, 13:54

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 15:09

evilC wrote:
DarkEntity wrote:Can someone make a plugin that locks axis at current position with a press of a button ? Lets say you push analog stick 80% and when you press the lock button it would lock that axis to that position until you release the button or press it again.
So you need it to be able to support both "Hold Button to Lock" and "Tap Button to Toggle Lock"?

I have to run an errand, but once I get back I will code it for you.
I actually only need "Hold Button to Lock".

Thanks in advance !
User avatar
evilC
Posts: 4742
Joined: 27 Feb 2014, 12:30

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 15:23

Oh dammit. I just coded Toggle only.

I did this partly as an exercise to show how easy it was to make a plugin.
I took the regular axis to axis plugin, and added a button and some logic.
I commented all bits that are different to the regular AxisToAxis plugin with the words "Added for Lockable version"
Save as Plugins\User\AxisToAxisLockable.ahk

Code: Select all

/*
Remaps a physical joystick axis to a virtual joystick axis
Requires the StickOps library and the vJoy library
*/
class AxisToAxisLockable extends _UCR.Classes.Plugin {
	Type := "Remapper (Axis To Axis, Lockable)"
	Description := "Maps an axis input to a virtual axis output"
	vAxis := 0
	vDevice := 0
	
	LockState := 0 ; Added for Lockable version
	InputAxisState := 0 ; Added for Lockable version
	
	; Set up the GUI to allow the user to select input and output axes
	Init(){
		Gui, Add, Text, % "xm w125 Center", Input Axis
		Gui, Add, Text, % "x+5 yp w100 Center", Input Preview
		Gui, Add, Text, % "x+5 yp w40 Center", Invert
		Gui, Add, Text, % "x+5 yp w40 Center", Deadzone
		Gui, Add, Text, % "x+5 yp w40 Center", Sensitivity
		Gui, Add, Text, % "x+5 yp w30 Center", Linear
		Gui, Add, Text, % "x+10 yp w125 Center", Output Virtual Axis
		Gui, Add, Text, % "x+5 yp w100 Center", Output Preview
		
		;this.AddInputAxis("InputAxis", 0, this.MyInputChangedState.Bind(this), "xm w125")
		this.AddControl("InputAxis", "IA1", 0, this.MyInputChangedState.Bind(this), "xm w125")
		this.AddControl("AxisPreview", "", 0, this.IOControls.IA1, "x+5 yp w100", 50)
		;this.AddControl("Invert", 0, "CheckBox", "x+20 yp+3 w30")
		this.AddControl("CheckBox", "Invert", 0, "x+20 yp+3 w30")
		;this.AddControl("Deadzone", 0, "Edit", "x+10 yp-3 w30", "0")
		this.AddControl("Edit", "Deadzone", 0, "x+10 yp-3 w30", "0")
		Gui, Add, Text, % "x+0 yp+3", `%
		;this.AddControl("Sensitivity", 0, "Edit", "x+10 yp-3 w30", "100")
		this.AddControl("Edit", "Sensitivity", 0, "x+10 yp-3 w30", "100")
		Gui, Add, Text, % "x+0 yp+3", `%
		;this.AddControl("Linear", 0, "Checkbox", "x+18 yp w30")
		this.AddControl("Checkbox", "Linear", 0, "x+18 yp w30")
		;this.AddOutputAxis("OutputAxis", this.MyOutputChangedValue.Bind(this), "x+5 yp-3 w125")
		this.AddControl("OutputAxis", "OA1", this.MyOutputChangedValue.Bind(this), "x+5 yp-3 w125")
		this.AddControl("AxisPreview", "", 0, this.IOControls.OA1, "x+5 yp w100", 50)
		
		; Added for Lockable version
		Gui, Add, Text, xm w125 Center, Lock Button
		this.AddControl("InputButton", "IB1", 0, this.LockButtonChangedState.Bind(this), "xm w125")
	}
	
	; Added for Lockable version
	LockButtonChangedState(state){
		if (!state)
			return	; Ignore key releases, only presses toggle the state of the lock
		; Store the current lock state somewhere handy ...
		; ... so when an axis moves, it knows state of button
		this.LockState := !this.LockState	; Toggle state of the lock
		; When we disable the lock, set the axis back to where it should be
		if (!this.LockState){
			this.MyInputChangedState(this.InputAxisState)
		}
	}
	
	; The user changed options - store stick and axis selected for fast retreival
	MyOutputChangedValue(value){
		this.vAxis := value.Binding[1]
		this.vDevice := value.DeviceID
		this.OutputBound := value.IsBound()
	}
	
	; The user moved the selected input axis. Manipulate the output axis accordingly
	MyInputChangedState(value){
		; Added for Lockable version
		; Store the state of the input axis somewhere handy, so that when the lock is released...
		; We know what to set the axis to
		this.InputAxisState := value	; Added for Lockable version
		if (this.LockState){
			return ; ignore input
		}
		; End of Added for Lockable version
		value := UCR.Libraries.StickOps.AHKToInternal(value)
		if (this.OutputBound){
			if (this.GuiControls.Deadzone.Get()){
				value := UCR.Libraries.StickOps.Deadzone(value, this.GuiControls.Deadzone.Get())
			}
			if (this.GuiControls.Sensitivity.Get()){
				if (this.GuiControls.Linear.Get())
					value *= (this.GuiControls.Sensitivity.Get() / 100)
				else
					value := UCR.Libraries.StickOps.Sensitivity(value, this.GuiControls.Sensitivity.Get())
				
			}
			if (this.GuiControls.Invert.Get()){
				value := UCR.Libraries.StickOps.Invert(value)
			}
			value := UCR.Libraries.StickOps.InternalToAHK(value)
			this.IOControls.OA1.Set(value)
		}
	}
}

User avatar
evilC
Posts: 4742
Joined: 27 Feb 2014, 12:30

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 15:30

Here is a version which supports hold and toggle.
Note that if you bind a keyboard key as the lock toggle button, turn "Filter Repeats" ON for the lock button, especially if you use toggle mode.
Joystick buttons do not repeat if held, so no need there.

Code: Select all

/*
Remaps a physical joystick axis to a virtual joystick axis
Requires the StickOps library and the vJoy library
*/
class AxisToAxisLockable extends _UCR.Classes.Plugin {
	Type := "Remapper (Axis To Axis, Lockable)"
	Description := "Maps an axis input to a virtual axis output"
	vAxis := 0
	vDevice := 0
	
	LockState := 0 ; Added for Lockable version
	InputAxisState := 0 ; Added for Lockable version
	LockToggleMode := 0 ; Added for Lockable version
	
	; Set up the GUI to allow the user to select input and output axes
	Init(){
		Gui, Add, Text, % "xm w125 Center", Input Axis
		Gui, Add, Text, % "x+5 yp w100 Center", Input Preview
		Gui, Add, Text, % "x+5 yp w40 Center", Invert
		Gui, Add, Text, % "x+5 yp w40 Center", Deadzone
		Gui, Add, Text, % "x+5 yp w40 Center", Sensitivity
		Gui, Add, Text, % "x+5 yp w30 Center", Linear
		Gui, Add, Text, % "x+10 yp w125 Center", Output Virtual Axis
		Gui, Add, Text, % "x+5 yp w100 Center", Output Preview
		
		;this.AddInputAxis("InputAxis", 0, this.MyInputChangedState.Bind(this), "xm w125")
		this.AddControl("InputAxis", "IA1", 0, this.MyInputChangedState.Bind(this), "xm w125")
		this.AddControl("AxisPreview", "", 0, this.IOControls.IA1, "x+5 yp w100", 50)
		;this.AddControl("Invert", 0, "CheckBox", "x+20 yp+3 w30")
		this.AddControl("CheckBox", "Invert", 0, "x+20 yp+3 w30")
		;this.AddControl("Deadzone", 0, "Edit", "x+10 yp-3 w30", "0")
		this.AddControl("Edit", "Deadzone", 0, "x+10 yp-3 w30", "0")
		Gui, Add, Text, % "x+0 yp+3", `%
		;this.AddControl("Sensitivity", 0, "Edit", "x+10 yp-3 w30", "100")
		this.AddControl("Edit", "Sensitivity", 0, "x+10 yp-3 w30", "100")
		Gui, Add, Text, % "x+0 yp+3", `%
		;this.AddControl("Linear", 0, "Checkbox", "x+18 yp w30")
		this.AddControl("Checkbox", "Linear", 0, "x+18 yp w30")
		;this.AddOutputAxis("OutputAxis", this.MyOutputChangedValue.Bind(this), "x+5 yp-3 w125")
		this.AddControl("OutputAxis", "OA1", this.MyOutputChangedValue.Bind(this), "x+5 yp-3 w125")
		this.AddControl("AxisPreview", "", 0, this.IOControls.OA1, "x+5 yp w100", 50)
		
		; Added for Lockable version
		Gui, Add, Text, xm w125 Center, Lock Button
		Gui, Add, Text, x+5 w125 Center, Lock Toggle Mode
		this.AddControl("InputButton", "IB1", 0, this.LockButtonChangedState.Bind(this), "xm w125")
		this.AddControl("CheckBox", "LockToggleMode", this.LockToggleModeChanged.Bind(this), "x+65 yp+10")
	}
	
	; Added for Lockable version
	LockButtonChangedState(state){
		if (this.LockToggleMode && !state)
			return	; In Toggle mode, ignore key releases, only presses toggle the state of the lock
		; Store the current lock state somewhere handy ...
		; ... so when an axis moves, it knows state of button
		if (this.LockToggleMode){
			this.LockState := !this.LockState	; Toggle state of the lock
		} else {
			this.LockState := state
		}
		; When we disable the lock, set the axis back to where it should be
		if (!this.LockState){
			this.MyInputChangedState(this.InputAxisState)
		}
	}
	
	LockToggleModeChanged(state){
		this.LockToggleMode := state
	}
	
	; The user changed options - store stick and axis selected for fast retreival
	MyOutputChangedValue(value){
		this.vAxis := value.Binding[1]
		this.vDevice := value.DeviceID
		this.OutputBound := value.IsBound()
	}
	
	; The user moved the selected input axis. Manipulate the output axis accordingly
	MyInputChangedState(value){
		; Added for Lockable version
		; Store the state of the input axis somewhere handy, so that when the lock is released...
		; We know what to set the axis to
		this.InputAxisState := value	; Added for Lockable version
		if (this.LockState){
			return ; ignore input
		}
		; End of Added for Lockable version
		value := UCR.Libraries.StickOps.AHKToInternal(value)
		if (this.OutputBound){
			if (this.GuiControls.Deadzone.Get()){
				value := UCR.Libraries.StickOps.Deadzone(value, this.GuiControls.Deadzone.Get())
			}
			if (this.GuiControls.Sensitivity.Get()){
				if (this.GuiControls.Linear.Get())
					value *= (this.GuiControls.Sensitivity.Get() / 100)
				else
					value := UCR.Libraries.StickOps.Sensitivity(value, this.GuiControls.Sensitivity.Get())
				
			}
			if (this.GuiControls.Invert.Get()){
				value := UCR.Libraries.StickOps.Invert(value)
			}
			value := UCR.Libraries.StickOps.InternalToAHK(value)
			this.IOControls.OA1.Set(value)
		}
	}
}
DarkEntity
Posts: 9
Joined: 09 Mar 2017, 13:54

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 15:43

evilC wrote:Here is a version which supports hold and toggle.
Note that if you bind a keyboard key as the lock toggle button, turn "Filter Repeats" ON for the lock button, especially if you use toggle mode.
Joystick buttons do not repeat if held, so no need there.

Code: Select all

/*
Remaps a physical joystick axis to a virtual joystick axis
Requires the StickOps library and the vJoy library
*/
class AxisToAxisLockable extends _UCR.Classes.Plugin {
	Type := "Remapper (Axis To Axis, Lockable)"
	Description := "Maps an axis input to a virtual axis output"
	vAxis := 0
	vDevice := 0
	
	LockState := 0 ; Added for Lockable version
	InputAxisState := 0 ; Added for Lockable version
	LockToggleMode := 0 ; Added for Lockable version
	
	; Set up the GUI to allow the user to select input and output axes
	Init(){
		Gui, Add, Text, % "xm w125 Center", Input Axis
		Gui, Add, Text, % "x+5 yp w100 Center", Input Preview
		Gui, Add, Text, % "x+5 yp w40 Center", Invert
		Gui, Add, Text, % "x+5 yp w40 Center", Deadzone
		Gui, Add, Text, % "x+5 yp w40 Center", Sensitivity
		Gui, Add, Text, % "x+5 yp w30 Center", Linear
		Gui, Add, Text, % "x+10 yp w125 Center", Output Virtual Axis
		Gui, Add, Text, % "x+5 yp w100 Center", Output Preview
		
		;this.AddInputAxis("InputAxis", 0, this.MyInputChangedState.Bind(this), "xm w125")
		this.AddControl("InputAxis", "IA1", 0, this.MyInputChangedState.Bind(this), "xm w125")
		this.AddControl("AxisPreview", "", 0, this.IOControls.IA1, "x+5 yp w100", 50)
		;this.AddControl("Invert", 0, "CheckBox", "x+20 yp+3 w30")
		this.AddControl("CheckBox", "Invert", 0, "x+20 yp+3 w30")
		;this.AddControl("Deadzone", 0, "Edit", "x+10 yp-3 w30", "0")
		this.AddControl("Edit", "Deadzone", 0, "x+10 yp-3 w30", "0")
		Gui, Add, Text, % "x+0 yp+3", `%
		;this.AddControl("Sensitivity", 0, "Edit", "x+10 yp-3 w30", "100")
		this.AddControl("Edit", "Sensitivity", 0, "x+10 yp-3 w30", "100")
		Gui, Add, Text, % "x+0 yp+3", `%
		;this.AddControl("Linear", 0, "Checkbox", "x+18 yp w30")
		this.AddControl("Checkbox", "Linear", 0, "x+18 yp w30")
		;this.AddOutputAxis("OutputAxis", this.MyOutputChangedValue.Bind(this), "x+5 yp-3 w125")
		this.AddControl("OutputAxis", "OA1", this.MyOutputChangedValue.Bind(this), "x+5 yp-3 w125")
		this.AddControl("AxisPreview", "", 0, this.IOControls.OA1, "x+5 yp w100", 50)
		
		; Added for Lockable version
		Gui, Add, Text, xm w125 Center, Lock Button
		Gui, Add, Text, x+5 w125 Center, Lock Toggle Mode
		this.AddControl("InputButton", "IB1", 0, this.LockButtonChangedState.Bind(this), "xm w125")
		this.AddControl("CheckBox", "LockToggleMode", this.LockToggleModeChanged.Bind(this), "x+65 yp+10")
	}
	
	; Added for Lockable version
	LockButtonChangedState(state){
		if (this.LockToggleMode && !state)
			return	; In Toggle mode, ignore key releases, only presses toggle the state of the lock
		; Store the current lock state somewhere handy ...
		; ... so when an axis moves, it knows state of button
		if (this.LockToggleMode){
			this.LockState := !this.LockState	; Toggle state of the lock
		} else {
			this.LockState := state
		}
		; When we disable the lock, set the axis back to where it should be
		if (!this.LockState){
			this.MyInputChangedState(this.InputAxisState)
		}
	}
	
	LockToggleModeChanged(state){
		this.LockToggleMode := state
	}
	
	; The user changed options - store stick and axis selected for fast retreival
	MyOutputChangedValue(value){
		this.vAxis := value.Binding[1]
		this.vDevice := value.DeviceID
		this.OutputBound := value.IsBound()
	}
	
	; The user moved the selected input axis. Manipulate the output axis accordingly
	MyInputChangedState(value){
		; Added for Lockable version
		; Store the state of the input axis somewhere handy, so that when the lock is released...
		; We know what to set the axis to
		this.InputAxisState := value	; Added for Lockable version
		if (this.LockState){
			return ; ignore input
		}
		; End of Added for Lockable version
		value := UCR.Libraries.StickOps.AHKToInternal(value)
		if (this.OutputBound){
			if (this.GuiControls.Deadzone.Get()){
				value := UCR.Libraries.StickOps.Deadzone(value, this.GuiControls.Deadzone.Get())
			}
			if (this.GuiControls.Sensitivity.Get()){
				if (this.GuiControls.Linear.Get())
					value *= (this.GuiControls.Sensitivity.Get() / 100)
				else
					value := UCR.Libraries.StickOps.Sensitivity(value, this.GuiControls.Sensitivity.Get())
				
			}
			if (this.GuiControls.Invert.Get()){
				value := UCR.Libraries.StickOps.Invert(value)
			}
			value := UCR.Libraries.StickOps.InternalToAHK(value)
			this.IOControls.OA1.Set(value)
		}
	}
}


Thank you very much man, it works perfectly :D
Also thanks for comments, I'd like to learn AHK and make some scripts on my own :)
User avatar
evilC
Posts: 4742
Joined: 27 Feb 2014, 12:30

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 15:46

Good to hear.
Check out the wiki on the Github page - that in combination with my comments should show how a feature can be added to a plugin - In order to make useful plugins, you do not need to understand how it all works, you just need to be able to code basic logic, and assemble the building blocks that UCR provides.

Oh, and by the way, I have not had much feedback from people who are new to coding and/or AHK about how easy/hard it is to learn how to write a plugin, how the docs are helpful/unhelpful in this regard, so I would value any feedback you have.
DarkEntity
Posts: 9
Joined: 09 Mar 2017, 13:54

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

13 Mar 2017, 16:21

evilC wrote:Good to hear.
Check out the wiki on the Github page - that in combination with my comments should show how a feature can be added to a plugin - In order to make useful plugins, you do not need to understand how it all works, you just need to be able to code basic logic, and assemble the building blocks that UCR provides.

Oh, and by the way, I have not had much feedback from people who are new to coding and/or AHK about how easy/hard it is to learn how to write a plugin, how the docs are helpful/unhelpful in this regard, so I would value any feedback you have.

Ok, I'll check it out, think of a plugin that I could make and I'll try to write it on my own and I'll report back my experience.
thieftheodore
Posts: 9
Joined: 31 Dec 2016, 12:39

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

18 Mar 2017, 11:34

Just want to let you guys know that using steam big picture overlay I managed to remap my joystick and hide the input from physical stick and it works and all games including unity games that use raw input, maybe ucr can implement something similar in the future
User avatar
evilC
Posts: 4742
Joined: 27 Feb 2014, 12:30

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

18 Mar 2017, 12:05

Nefarius is writing a system called HidGuardian / HidCerberus that will allow us to whitelist / blacklist apps from being able to see sticks.
It works by installing a driver, so it will be 100% reliable - it can even stop a joystick appearing in control panel!!

The blocking bit is working, but the whitelisting bit (So UCR can still see the stick) is not ready yet.
blazer003

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

20 Mar 2017, 11:11

Stumbled upon UCR and it's awesome! Question, is there an option to make a button to button (or some other way) in which a button held on the joystick results in rapid pulse output? I'm playing X-Wing Alliance on a gamepad, and I need the UCR to rapidly tap the throttle up button when I hold a joystick button or axis. A hold of the button in game (whether with UCR or just default joystick driver) does not repeat when the button is held, and so will not continue to increase throttle unless you repeatedly tap the button. I'm also looking into writing my own AHK code, but just diving into this.

In simplest terms: A held joystick button translates into lots of quick presses of that button.

Thanks for any input (ha, pun!) and let me know if you need any clarification!
User avatar
evilC
Posts: 4742
Joined: 27 Feb 2014, 12:30

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

20 Mar 2017, 12:29

No, there is no plugin to handle this currently, but it would be simple to make.

Take the ButtonToButton plugin (ButtonToButton.ahk in the plugins\core folder) and copy it to plugins\user, naming it something like MyNewButtonToButton.ahk

Edit the file, search and replace ButtonToButton with MyNewButtonToButton to rename the class, so it matches the filename.

Now we can add your custom code - here is what it will probably look like: (Untested - may work, may not)

Code: Select all

class MyNewButtonToButton extends _UCR.Classes.Plugin {
	Type := "Remapper (Button To Button - SPAMMING VERSION)"
	Description := "Remaps button type inputs (Keys, Mouse buttons, Joystick buttons + hat directions)"
	; The Init() method of a plugin is called when one is added. Use it to create your Gui etc
	Init(){
		; Create the GUI
		Gui, Add, GroupBox, Center xm ym w170 h60 section, Input Button
		this.AddControl("InputButton", "IB1", 0, this.MyHkChangedState.Bind(this), "xs+5 ys+20")
		this.AddControl("ButtonPreview", "", 0, this.IOControls.IB1, "x+5 yp+5")
		;Gui, Add, Text, y+10, % "Remap"
		Gui, Add, GroupBox, Center x190 ym w170 h60 section, Output Button
		this.AddControl("OutputButton", "OB1", 0, "xs+5 ys+20")
		this.AddControl("ButtonPreview", "", 0, this.IOControls.OB1, "x+5 yp+5")
		
		Gui, Add, GroupBox, Center x370 ym w100 h60 section, Settings
		this.AddControl("Checkbox", "Toggle", 0, "xs+10 yp+30", "Toggle mode")
		
		; Added new stuff for spam plugin below. All stuff above is a copy of the ButtonToButton plugin
		this.TimerFn := this.TimerTick.Bind(this)
		this.TimerRunning := 0
		this.SpamRate := 100	; Later we can add an editbox to configure this, for now, hard-code it
	}
	
	; Called when the hotkey changes state (key is pressed or released)
	; ReWritten for spam plugin
	MyHkChangedState(e){
		fn := this.TimerFn
		if (e && !this.TimerRunning){
			; Button went down while timer not running
			this.TimerTick() ; Fire action off straight away...
			SetTimer, % fn, % this.SpamRate		; Then set the timer running
			this.TimerRunning := 1
		} else if (!e && this.TimerRunning){
			; Button when up while timer running
			SetTimer, % fn, Off
			this.TimerRunning := 0
		}
	}
	
	; Added new code for spam plugin
	TimerTick(){
		this.IOControls.OB1.Set(!this.IOControls.OB1.Get()) ; Toggle state of output
	}
}
Deciman
Posts: 1
Joined: 21 Mar 2017, 04:21

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

21 Mar 2017, 04:24

Hi

Nice tool, indeed!

Is it possible to add another feature?

I can create a virtual axis (->Buttons to Axis)
initialize it to a default value when the script starts (AxisInitializer)
and change thew value of the axix by keypresses (-> Incremential Mode)

What I miss is a possibility to reset the Axis to a default value by another keypress.
AxisInitializer doesn't work a second time because the axis won't forgewt its actual value.

Deciman
sunrrrise
Posts: 3
Joined: 22 Mar 2017, 19:06

Re: Universal Control Remapper (UCR) - v0.1.14 12th Mar 2017

23 Mar 2017, 09:06

I haven't found an option to send anything on release button. Is it possible with UCR?

I mean:

if button is pressed:
send something
if button is released:
send something

Also, is there a way to define minimum press duration? Currently I can see that my presses last for 3-4ms, I need to increase them to 25ms or more. Is that possible with UCR?

Return to “Gaming”

Who is online

Users browsing this forum: No registered users and 20 guests