App no longer controllable with 3dconnexion property dialog

Post questions, comments and feedback to our 3Dconnexion Windows Development Team.

Moderator: Moderators

Post Reply
daveapman
Posts: 8
Joined: Fri Feb 07, 2014 5:01 pm

App no longer controllable with 3dconnexion property dialog

Post by daveapman » Mon Oct 31, 2016 3:47 pm

My companies application is coded to use the RawInput Transport mechanism to communicate with the 3d mouse.
This has worked well and has allowed user control of the device speed using the slider in the 3dconnexion properties dialog.

But, my computer was recently re-imaged by my IT department and was surprised to find that my Space Navigator WORKED with my application, even with no 3dConnexion driver installed.
So I installed the latest driver, and then copied my application 3dconnexion configuration XML file into the 3Dconnexion\3DxWare\3DxWinCore64\Cfg folder.
I restarted computer, but find that my application is no longer controllable from the 3dconnexion properties dialog.

The application does receive events from my SpaceNavigator device, but any changes in the properties dialog have no affect.

It is almost like there is a different driver feeding data from the SpaceNavigator to my application.
Indeed, i can STOP the 3dconnexion driver from the link on the start menu, and the LED goes out on the SpaceNavigator, but my application still responds to rotation/translation input from the device.

Does anyone have any idea what might be going wrong and/or how to resolve?

I'd like to get it working as before where the 3dconnexion properties dialog controlled (thru the driver?) the data driving my application.

Thanks, Dave

jwick
Moderator
Moderator
Posts: 2481
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: App no longer controllable with 3dconnexion property dia

Post by jwick » Tue Nov 01, 2016 11:51 am

With RawInput you don't need the driver running. You are getting data from the system. Of course then you don't get the benefits of the 3DxWare driver.

To tell the driver that you are going to use Raw Input, you need to create a cfg for your app that specifies <Transport>RawInput</Transport>.

It seems like you probably already have one, albeit maybe old. It could be that the format is wrong. Take a look at our S3DM_Viewer.xml file for the latest format. The driver's log file (3DxService.log) should have a message if it rejected your file.

There is also the possibility that the kernel driver (3DxHID.sys) is not installed correctly. If it isn't installed, again, there will be a message in the log file. But more easily your device will not be listed with the correct name (SpaceNavigator) in the device manager. Check that first. If the kernel driver is not installed, then any changes in the GUI will not work. They will do nothing.

daveapman
Posts: 8
Joined: Fri Feb 07, 2014 5:01 pm

Re: App no longer controllable with 3dconnexion property dia

Post by daveapman » Wed Nov 02, 2016 12:38 pm

You da man!

I checked the 3DxService.log and found i had an ADDITIONAL config xml file in <user>\AppData\Roaming\3Dconnexion\3DxWare\Cfg that was being read in addition to the one i plunked down in your install directory c:\Program Files\3Dconnexion\3DxWare\3DxWinCore64\Cfg

For still unknown reasons the file in AppData\Roaming specified KMJ Transport (which does not work with our app)

I deleted the bad (KJM) config file and replaced it with the good one, plus i deleted the files i had added to "Program Files" and everything works great again!

One final question, What directory should our Application installer place the configuration file?

Unless you can give any guess as to why i might have a config file for may app in AppData\Roaming with the wrong Transport, we should be good to go...

Thanks again!
(I'll write down this info about checking the log file for clues).

jwick
Moderator
Moderator
Posts: 2481
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: App no longer controllable with 3dconnexion property dia

Post by jwick » Mon Nov 07, 2016 2:55 am

You probably had a KMJ cfg in AppData because the driver saw your app running at one time and didn't know what to do with it. It had no better information, so it made a KMJ (Keyboard, Mouse, Joystick) emulating cfg.

Install your cfg into %PROGRAMDATA%/3Dconnexion/3DxWare/Cfg and the driver will use it just like if it were in %PROGRAMFILES% (you don't/shouldn't have write access to PF).

Make sure your cfg is marked as Default="true" at the top.

Post Reply