SCToolsfactory / SCJMapper-V2

SC Joystick Mapper (.Net 4; using sharpDX wrapper)
Other
137 stars 30 forks source link

SCJ Mapper registers and binds correctly (via device tuning); once bindings are loaded in SC, my stick and pedals aren't being read. #24

Closed Zyadox closed 9 years ago

Zyadox commented 9 years ago

Hey guys, I'm using a USB CH Throttle with a 15-pin adapted CH Fighterstick and pedals. I've set up my bindings in SCJ Mapper and for all intents and purposes, the controls work like a dream under "Device Tuning". I've dumped and saved my .xml file with a unique name, but when I load it up in Star Citizen, it loads up a completely different configuration using my mouse and CH Throttle, one that I didn't even bind myself!

I was curious if anyone else had a similar problem and if they found a solution. I'm certain that all of my peripheries are being correctly read by my computer. It's especially curious, since everything works well in "Device Tuning". Could it be something in Star Citizen itself that is manually overriding my custom .xml whenever I play AC?

Also, CH Control Manager just has my throttle loaded up into it. Windows registers the CH FighterStick and pedals as a "4-axis, 4button joystick w/view finder" and I've bound it as such on SCJ Mapper. Under "Devices and Printers", I've made sure that the values are being read correctly as well for the "4-axis,4button joystick w/view finder" and it reads Z-rotation from the pedals.

When launching SC, it doesn't seem to register the stick and the pedals as being plugged at all.

Thanks so much for taking the time to share your thoughts! I really appreciate it.

standardtoaster commented 9 years ago

How many joystick / game pad devices do you have plugged in to your machine?

I believe that there's a hard limit in SC where it just kinda won't see some devices of there are many plugged in.

On Dec 15, 2014, at 7:45 PM, Zyadox notifications@github.com wrote:

Hey guys, I'm using a USB CH Throttle with a 15-pin adapted CH Fighterstick and pedals. I've set up my bindings in SCJ Mapper and for all intents and purposes, the controls work like a dream under "Device Tuning". I've dumped and saved my .xml file with a unique name, but when I load it up in Star Citizen, it loads up a completely different configuration using my mouse and CH Throttle, one that I didn't even bind myself!

I was curious if anyone else had a similar problem and if they found a solution. I'm certain that all of my peripheries are being correctly read by my computer. It's especially curious, since everything works well in "Device Tuning". Could it be something in Star Citizen itself that is manually overriding my custom .xml whenever I play AC?

Also, CH Control Manager just has my throttle loaded up into it. Windows registers the CH FighterStick and pedals as a "4-axis, 4button joystick w/view finder" and I've bound it as such on SCJ Mapper. Under "Devices and Printers", I've made sure that the values are being read correctly as well for the "4-axis,4button joystick w/view finder" and it reads Z-rotation from the pedals.

When launching SC, it doesn't seem to register the stick and the pedals as being plugged at all.

Thanks so much for taking the time to share your thoughts! I really appreciate it.

— Reply to this email directly or view it on GitHub.

Zyadox commented 9 years ago

Hello again, standardtoaster! At the time of testing and after a computer restart, I only have my USB throttle plugged in and the 15-pin adapted USB fighterstick and pedals plugged in. Are two different inputs too many? I mean, I have other peripheries like a wireless adapter, wacom tablet, and external hard-drive plugged in. I tried restarting without the tablet or hard-drive to no avail, unfortunately.

Also, I'm daisy-chaining my 15-pin male Fighterstick to the female 15-pin CH pedals and then feeding the male 15-pin from the pedals to the 15pin/USB adapter. It's being read correctly by SCJMapper and Windows, but would that have anything to do with my problems?

standardtoaster commented 9 years ago

It shouldn't be an issue with any regular USB peripherals. There's just a problem if you have 6+ (I think?) game controller devices plugged in.

Can you clarify the commands that you're running in the console in Star Citizen?

Do you access the bindings interface at all after running the commands?

Zyadox commented 9 years ago

Sure thing! As I was creating my bindings, I had it saved as "pp_rebindkeys layout_my_joystick", which is what I'm typing into the SC console log after I load AC.

After realizing that doesn't work, I load up the binding interface within SC itself, to see if my devices are being read. While I'm able tor rebind my throttle in-game, none of the movements or buttons of my stick or pedals are being recognized.

bm98 commented 9 years ago

Hi, this is a known issue - well behavior of AC. They reallocate the devices according to some keywords i.e. pedals and some more are second. So you may want to use i_DumpDeviceInformation in the console to see what AC thinks is the js mapping - see screenshot below http://www.burri-web.org/cassini/images/i_DumpDeviceInformation.jpg Then reassing in SCJMapper according to the outcome and you should be fine.

Zyadox commented 9 years ago

Hello bm98, thanks for the input. I gave it a go and here are the results: http://i.imgur.com/3mJRxy0.jpg It seems that the Fighterstick/Pedals are altogether unrecognized by SC.. :/

Could this perhaps be the 6+ hard limit that standardtoaster was referring to?

bm98 commented 9 years ago

Hi, as the screenshot indicates there is no limit coming into play I think, only one joystick is listed and I got up to 4 joysticks here listed when testing, in addition the gamepad and a mouse.

Going through Google it seems that more suffer this issue

I found one that recommends the following:

1 - Unplug all of your CH Products devices and then uninstall the control manager software. 2 - Reboot (whether you are prompted to do so or not). 3 - Plug in each device one at a time allowing time for windows to install the driver for each one before plugging in the next one (exactly as it says in the CH Quick Start Guide). May be the FSX part (Flightsim of MS) is not needed... 4 - Launch FSX. Click Settings. Click Controls. Under the Calibration tab, check that Enable Controllers is checked and that each of your CH devices is in the list of controllers. 5 - Select any CH device and click Calibrate. 6 - Select properties for each device and check that each one operates as it should. 7 - Close FSX. Here it goes.... 8 - Install the CH products Control Manager software clicking "Install anyway" as many times as necessary to complete the installation. 9 - Open the Windows Device Manager (Start/right-click Computer/Click Properties/click Device manager). You should now see a new item called "CH Products" listing all of your installed CH products devices. 10 - Run the CH Control Manager and calibrate each device.

And then there seems to be a mapped and a direct mode. Mapped puts all controls into one combined device rather than independent USB one.

So one advised to use the mapped mode: sounds like your profiler is in "direct mode" instead of "mapped" make sure your profiler is set to "start in mapped mode" (in cm control center)

May be some of this helps ? Martin

Zyadox commented 9 years ago

Hey Martin, thanks for the thorough research and ideas. I went through a couple tests.

My first trial run had me going through each of the steps as you listed. One thing important to note: my Fighterstick and pedals are not picked up at all by the CH Control Manager. It exclusively detects the throttle and that is it. I was able to calibrate the throttle correctly, but did not map any of the buttons or movement on the stick/pedals since CH manager did not register them. Everything worked fine in SCJMapper, as shown by device tuning. When I launched AC, however, the same problem (stick/pedals not being read) persisted.

I tried a second run after uninstalling CH Control Manager and then rebooting. This trial run did not have CH Manager involved whatsoever and only used the Windows-downloaded drivers for both the throttle and the adapted stick/pedal combo. Again, SCJ Mapper read everything correctly, but AC did not register the stick.

I'm running out of ideas.. :/

In any event, I sincerely appreciate the time and effort you've put into troubleshooting this. It means a lot.

bm98 commented 9 years ago

OK - it seems even CH products is not longer supporting the 15pin things :(

http://www.chproducts.com/13-29602-Simulation-Consumer-FAQ-.php

FAQ "I have one of your 15 pin controllers. Is there an adapter I can use to convert it to USB? CH Products no longer supports legacy 15 pin controllers nor do we recommend the use of adapters. "

Anyhow to see what my prog finds would you go the install folder of SCJMapper and change the filename from log4net.config.OFF to log4net.config (i.e. removing the .OFF) then start the program and just exit and send me the file trace.log that now should be in that same folder. Then you may rename it back to log4net.config.OFF to switch off debug mode.

I would like to see what kind of device my prog detects. There are a bunch of different types and may be your USB adapter just screws up i.e. makes a device that AC developers are not collecting as game input - may be there is a chance to get them doing it ?? who knows. my e-mail can be found here: http://www.burri-web.org/cassini/ bottom of the page as image (so I don't have it spoiled over the web...)

standardtoaster commented 9 years ago

It would be neat to see the log attached here, as long as it doesn't have private information in it.

bm98 commented 9 years ago

Attaching a file ?? - it says images only.. Here is the log - at least the relevant parts - my finds are - the USB adapter registers as Gamepad but not an X-pad compliant one. AC does not go for such devices neither does the CH software as it does not recognize a proprietary VID_PID on the USB adapter.

see line with: #0 Type:Gamepad Device:4-axis,4button joystick w/view finder

So now one has to convince CIG to use DirectInput gamepads too (which SCJM does) or find a Gamepad - Joystick converter - or build one using e.g. vJoy

Here is the log snip:

2014-12-17 22:32:38,483|INFO |SCJMapper_V2.Program| 2014-12-17 22:32:38,509|INFO |SCJMapper_V2.Program|SCJMapper_V2 - Started 2014-12-17 22:32:38,695|DEBUG|SCJMapper_V2.MainForm|MainForm_Load - Entry 2014-12-17 22:32:38,697|INFO |SCJMapper_V2.MainForm|Application Version: 2.8.0.37 2014-12-17 22:32:38,698|DEBUG|SCJMapper_V2.MainForm|Loading RTB 2014-12-17 22:32:38,700|DEBUG|SCJMapper_V2.MainForm|Loading Profiles 2014-12-17 22:32:38,708|DEBUG|SCJMapper_V2.SCDefaultProfile|DefaultProfileNames - Entry 2014-12-17 22:32:38,708|DEBUG|SCJMapper_V2.SCPath|SCGameData_pak - Entry 2014-12-17 22:32:38,708|DEBUG|SCJMapper_V2.SCPath|SCClientDataPath - Entry 2014-12-17 22:32:38,709|DEBUG|SCJMapper_V2.SCPath|SCBasePath - Entry 2014-12-17 22:32:38,714|DEBUG|SCJMapper_V2.SCPath|SCLauncherFile3 - Entry 2014-12-17 22:32:38,714|INFO |SCJMapper_V2.SCPath|SCLauncherFile3 - Found HKLM - CIG - Launcher.exe 2014-12-17 22:32:38,789|DEBUG|SCJMapper_V2.MainForm|Loading Other 2014-12-17 22:32:38,790|DEBUG|SCJMapper_V2.MainForm|Loading DirectX 2014-12-17 22:32:38,814|DEBUG|SCJMapper_V2.MainForm|Entry 2014-12-17 22:32:38,814|DEBUG|SCJMapper_V2.MainForm|Instantiate DirectInput 2014-12-17 22:32:38,827|DEBUG|SCJMapper_V2.MainForm|Get Keyboard device 2014-12-17 22:32:38,844|DEBUG|SCJMapper_V2.KeyboardCls|KeyboardCls ctor - Entry with Keyboard 2014-12-17 22:32:38,845|DEBUG|SCJMapper_V2.KeyboardCls|Get KBD Object 2014-12-17 22:32:38,846|DEBUG|SCJMapper_V2.MainForm|Scan GameControl devices 2014-12-17 22:32:38,890|INFO |SCJMapper_V2.MainForm|GameControl: #0 Type:Gamepad Device:4-axis,4button joystick w/view finder 2014-12-17 22:32:38,890|DEBUG|SCJMapper_V2.MainForm|Create the device interface 2014-12-17 22:32:38,897|DEBUG|SCJMapper_V2.MainForm|Create the device interface for: 4-axis,4button joystick w/view finder 2014-12-17 22:32:38,897|DEBUG|SCJMapper_V2.MainForm|Add first Joystick panel 2014-12-17 22:32:38,897|DEBUG|SCJMapper_V2.MainForm|Create Joystick instance 2014-12-17 22:32:38,900|DEBUG|SCJMapper_V2.JoystickCls|JoystickCls ctor - Entry with 4-axis,4button joystick w/view finder 2014-12-17 22:32:38,915|DEBUG|SCJMapper_V2.JoystickCls|Get JS Objects 2014-12-17 22:32:38,926|INFO |SCJMapper_V2.MainForm|GameControl: #1 Type:Joystick Device:CH PRO THROTTLE USB 2014-12-17 22:32:38,926|DEBUG|SCJMapper_V2.MainForm|Create the device interface 2014-12-17 22:32:38,927|DEBUG|SCJMapper_V2.MainForm|Create the device interface for: CH PRO THROTTLE USB 2014-12-17 22:32:38,927|DEBUG|SCJMapper_V2.MainForm|Add next Joystick panel 2014-12-17 22:32:38,935|DEBUG|SCJMapper_V2.MainForm|Create Joystick instance 2014-12-17 22:32:38,935|DEBUG|SCJMapper_V2.JoystickCls|JoystickCls ctor - Entry with CH PRO THROTTLE USB 2014-12-17 22:32:38,936|DEBUG|SCJMapper_V2.JoystickCls|Get JS Objects 2014-12-17 22:32:38,938|DEBUG|SCJMapper_V2.MainForm|Added 2 GameControl devices 2014-12-17 22:32:38,938|DEBUG|SCJMapper_V2.MainForm|Init ActionTree 2014-12-17 22:32:38,940|DEBUG|SCJMapper_V2.MainForm|InitActionTree - Entry 2014-12-17 22:32:38,947|DEBUG|SCJMapper_V2.ActionTree|LoadTree - Entry 2014-12-17 22:32:38,950|DEBUG|SCJMapper_V2.SCDefaultProfile|DefaultProfile - Entry 2014-12-17 22:32:38,950|DEBUG|SCJMapper_V2.SCPath|DefaultProfileName - Entry 2014-12-17 22:32:38,952|DEBUG|SCJMapper_V2.SCDefaultProfile|ExtractDefaultProfile - Entry .. 2014-12-17 22:32:39,190|DEBUG|SCJMapper_V2.MainForm|Start XInput polling 2014-12-17 22:32:46,885|DEBUG|SCJMapper_V2.MainForm|MainForm_FormClosing - Entry 2014-12-17 22:32:46,908|DEBUG|SCJMapper_V2.JoystickCls|Release DirectInput device: 4-axis,4button joystick w/view finder 2014-12-17 22:32:46,908|DEBUG|SCJMapper_V2.JoystickCls|Release DirectInput device: CH PRO THROTTLE USB 2014-12-17 22:32:46,948|INFO |SCJMapper_V2.Program|SCJMapper_V2 - Ended

Zyadox commented 9 years ago

Hmm, does anyone here have experience with vJoy? I've taken a look and it seems way over my head. I can keep tinkering and share if anything works, but I'm not sure I trust myself here..

I'd hate for it to be an issue never addressed by CIG or one we're unable to solve. Worst case scenario, I'll need to straight-out buy a new joystick. :/

bm98 commented 9 years ago

I was trying to make a 'brigde' for this purpose - but it got delayed by AC1.0 update needs. I may find a way to get DirectInput gamepads to be translated into the vJoy device which is recognized by AC but it may take some time to get there (if it works at all) I can confirm that also in AC1.0 DirectInput gamepads are not detected

Zyadox commented 9 years ago

You're the best, bm98 - godspeed. I went ahead and made a forum post over at CIG here: https://forums.robertsspaceindustries.com/discussion/95606/dogfighting-module-programming/p11

I borrowed some of your language to communicate the point across to the devs, we'll see if they respond.

I think I speak for a lot of players when I say what you're doing is of genuine help and benefit to the community - thank you so very much. Keep it up!

bm98 commented 9 years ago

Well it worked better than I expected... https://github.com/SCToolsfactory/GPadJSBridge/releases/tag/v0.50beta If you go and see the link above you may get a try to solve your problem. Read the PDF to see what it does and what is needed.. Let me know if it works - or not - I could use my test gamepad in AC which was not possible before as it is not recognized by AC. (pls follow-up in the Bridge repository - I close this one here)