playing around with surn's config file i was able to get my ch pro throttle and fighterstick to work, though i was unable to pull the same trick on my pro pedals for some reason (it could be that its the only one without any buttons on it).
i also discovered that you can also map multiple controllers, as i was able to get both my throttle and fighter stick to work at the same time. i just had to add a second InputRemapping=... line to the file. its entirely possible that more than 2 devices are supported and it just doesnt like my pedals. here are the working mappings,
granted its just the axis mappings and ive yet to do buttons. buttons seem to be working. uggh, thats a lot of code to move 24 bits of data.
[/Script/RawInput.RawInputSettings]
InputRemapping=(DeviceName="CH Fighterstick USB",VendorID="0x068E",ProductID="0xC0F3",AxisRemapping=((InAxis=GenericUSBController_Axis1,OutAxis=Axis_TorsoYaw,Offset=-0.500000,DeadZoneMin=-0.020000,DeadZoneMax=0.020000,CurvePoints=((X=1.000000,Y=1.000000),(X=0.000000,Y=0.000000),(X=-1.000000,Y=-1.000000))),(InAxis=GenericUSBController_Axis2,OutAxis=Axis_TorsoPitch,Offset=-0.500000,DeadZoneMin=-0.020000,DeadZoneMax=0.020000,CurvePoints=((X=1.000000,Y=-1.000000),(X=0.000000,Y=0.000000),(X=-1.000000,Y=1.000000)))),ButtonRemapping=((InButton=GenericUSBController_Button1,OutButtons=(Joystick_Button1)),(InButton=GenericUSBController_Button2,OutButtons=(Joystick_Button2)),(InButton=GenericUSBController_Button3,OutButtons=(Joystick_Button3)),(InButton=GenericUSBController_Button4,OutButtons=(Joystick_Button4)),(InButton=GenericUSBController_Button5,OutButtons=(Joystick_Button5)),(InButton=GenericUSBController_Button6,OutButtons=(Joystick_Button6)),(InButton=GenericUSBController_Button7,OutButtons=(Joystick_Button7)),(InButton=GenericUSBController_Button8,OutButtons=(Joystick_Button8)),(InButton=GenericUSBController_Button9,OutButtons=(Joystick_Button9)),(InButton=GenericUSBController_Button10,OutButtons=(Joystick_Button10)),(InButton=GenericUSBController_Button11,OutButtons=(Joystick_Button11)),(InButton=GenericUSBController_Button12,OutButtons=(Joystick_Button12)),(InButton=GenericUSBController_Button13,OutButtons=(Joystick_Button13)),(InButton=GenericUSBController_Button14,OutButtons=(Joystick_Button14)),(InButton=GenericUSBController_Button15,OutButtons=(Joystick_Button15)),(InButton=GenericUSBController_Button16,OutButtons=(Joystick_Button16)),(InButton=GenericUSBController_Hat1,OutButtons=(Joystick_Hat_1)),(InButton=GenericUSBController_Hat2,OutButtons=(Joystick_Hat_2)),(InButton=GenericUSBController_Hat3,OutButtons=(Joystick_Hat_3)),(InButton=GenericUSBController_Hat4,OutButtons=(Joystick_Hat_4)),(InButton=GenericUSBController_Hat5,OutButtons=(Joystick_Hat_5)),(InButton=GenericUSBController_Hat6,OutButtons=(Joystick_Hat_6)),(InButton=GenericUSBController_Hat7,OutButtons=(Joystick_Hat_7)),(InButton=GenericUSBController_Hat8,OutButtons=(Joystick_Hat_8))))
InputRemapping=(DeviceName="CH Pro Throttle USB",VendorID="0x068E",ProductID="0xC0F1",AxisRemapping=((InAxis=GenericUSBController_Axis3,OutAxis=Axis_Throttle,Offset=-0.500000,DeadZoneMin=-0.050000,DeadZoneMax=0.050000,CurvePoints=((X=1.000000,Y=-1.000000),(X=0.000000,Y=0.000000),(X=-1.000000,Y=1.000000))),(InAxis=GenericUSBController_Axis1,OutAxis=Axis_LegsRotation,Offset=-0.500000,DeadZoneMin=-0.050000,DeadZoneMax=0.050000,CurvePoints=((X=1.000000,Y=1.000000),(X=0.000000,Y=0.000000),(X=-1.000000,Y=-1.000000)))),ButtonRemapping=((InButton=GenericUSBController_Button1,OutButtons=(Joystick_Button1)),(InButton=GenericUSBController_Button2,OutButtons=(Joystick_Button2)),(InButton=GenericUSBController_Button3,OutButtons=(Joystick_Button3)),(InButton=GenericUSBController_Button4,OutButtons=(Joystick_Button4)),(InButton=GenericUSBController_Button5,OutButtons=(Joystick_Button5)),(InButton=GenericUSBController_Button6,OutButtons=(Joystick_Button6)),(InButton=GenericUSBController_Button7,OutButtons=(Joystick_Button7)),(InButton=GenericUSBController_Button8,OutButtons=(Joystick_Button8)),(InButton=GenericUSBController_Button9,OutButtons=(Joystick_Button9)),(InButton=GenericUSBController_Button10,OutButtons=(Joystick_Button10)),(InButton=GenericUSBController_Button11,OutButtons=(Joystick_Button11)),(InButton=GenericUSBController_Button12,OutButtons=(Joystick_Button12)),(InButton=GenericUSBController_Button13,OutButtons=(Joystick_Button13)),(InButton=GenericUSBController_Button14,OutButtons=(Joystick_Button14)),(InButton=GenericUSBController_Button15,OutButtons=(Joystick_Button15)),(InButton=GenericUSBController_Button16,OutButtons=(Joystick_Button16)),(InButton=GenericUSBController_Hat1,OutButtons=(Joystick_Hat_1)),(InButton=GenericUSBController_Hat2,OutButtons=(Joystick_Hat_2)),(InButton=GenericUSBController_Hat3,OutButtons=(Joystick_Hat_3)),(InButton=GenericUSBController_Hat4,OutButtons=(Joystick_Hat_4)),(InButton=GenericUSBController_Hat5,OutButtons=(Joystick_Hat_5)),(InButton=GenericUSBController_Hat6,OutButtons=(Joystick_Hat_6)),(InButton=GenericUSBController_Hat7,OutButtons=(Joystick_Hat_7)),(InButton=GenericUSBController_Hat8,OutButtons=(Joystick_Hat_8))))
those lines that mess look rather complicated but at closer examination its just a list of key-value pairs with hierarchy denoted by the (), very reminiscent of lua tables. try as i might to format them in a readable matter with the proper appliction of white space and line breaks, the game never seems to like it that way and will overwrite it with a sanitized version when you run the game. you can also set deadzones and sensitivity and other variables. even set float curves to do advanced calibration. cool beans.
important thing is that you need to look up your controller in the device manager, get its name, vid and pid (latter to can be found under hardware ids and should be four digit hex codes). much of the other data is self explanatory. the 'CurvePoints=' part is the float curve and its just a list of x,y plots, likely interpolated.
anyway to use them just get surn's file and replace the line starting in 'InputRemapping' with one, the other, or both.
upon further testing ive found that you dont need the stuff at the bottom of surn's file as i was able to remove it and the controls still worked. though it does let you tweak global deadzones and provides a reference to function names. so you can just paste the code block above into your input.ini. its set up with the stick controlling torso, and the throttle and thumbstick controlling throttle and legs. im running with an inverted y (or as i call it, 'normal').
next step is to break out my arduino joystick library and see if i can get the game to recognize my arduino as a controller. then i can put that 16-bit delta simga adc breakout board sitting in my drawer to good use, i also have some diy hall sensors that are pretty awesome. simpit here we come.
also if anyone else has a set of ch pedals, can you test this out. trying to figure out if this is a me problem or if its everyone. be sure the controller is in direct mode in your ch software if you use it and stick this in your input.ini, should make the rudder control your legsm though its not working for me for some reason dispite the other ch controllers working fine.
[/Script/RawInput.RawInputSettings]
InputRemapping=(DeviceName="CH Pro Pedals USB",VendorID="0x068E",ProductID="0xC0F2",AxisRemapping=((InAxis=GenericUSBController_Axis3,OutAxis=Axis_LegsRotation,Offset=-0.500000,DeadZoneMin=-0.050000,DeadZoneMax=0.050000,CurvePoints=((X=1.000000,Y=-1.000000),(X=0.000000,Y=0.000000),(X=-1.000000,Y=1.000000)))))
e: with regards to joystick combining, it seams you cant reuse button designations. so if for example you have 8 buttons on one controller and 8 buttons on another, you need to assign the first stick to buttons 1-8. and the second stick to buttons 9-16. otherwise they will have mirrored functions.
Edited by LordNothing, 02 December 2019 - 05:44 AM.