import math import time import gremlin from gremlin.user_plugin import * mode = ModeVariable("Mode", "The mode in which to use this mapping") input_1 = PhysicalInputVariable( "Input axis 1", "Input axis 1", [gremlin.common.InputType.JoystickAxis] ) invert_output_1 = BoolVariable( "Invert axis 1", "Invert axis 1" ) input_2 = PhysicalInputVariable( "Input axis 2", "Input axis 2", [gremlin.common.InputType.JoystickAxis] ) invert_output_2 = BoolVariable( "Invert axis 2", "Invert axis 2" ) output_1 = VirtualInputVariable( "Output axis", "Output axis", [gremlin.common.InputType.JoystickAxis] ) # Decorators for the two physical axes dec_1 = input_1.create_decorator(mode.value) dec_2 = input_2.create_decorator(mode.value) # Storage for axis values g_axis_1_value = -1 g_axis_2_value = -1 def update_axis(vjoy): if (((g_axis_1_value + 1) / 2) >= ((g_axis_2_value + 1) / 2)): value = g_axis_1_value else: value = g_axis_2_value vjoy[output_1.vjoy_id].axis(output_1.input_id).value = value @dec_1.axis(input_1.input_id) def axis1(event, vjoy): global g_axis_1_value if invert_output_1.value: g_axis_1_value = event.value * -1 else: g_axis_1_value = event.value update_axis(vjoy) @dec_2.axis(input_2.input_id) def axis1(event, vjoy): global g_axis_2_value if invert_output_2.value: g_axis_2_value = event.value * -1 else: g_axis_2_value = event.value update_axis(vjoy)