I have used my SpaceNavigator for a number of private projects throughout the years, and I'm very happy with the control it provides. I'm now trying to put together a Windows 8 Metro App that - if all goes well - I'm hoping to eventually publish on the Windows 8 app store. I would very much like to support the SpaceNavigator device.
The thing is, as far as I can tell, none of the old interface methods seem applicable. As the reader may know, apps must pass certification, and that includes using only the following APIs:
One can observe that:
* GetRawInputData is not supported. (Nor have I found a way to intercept WndProc (WindowInteropHelper and HwndSource from WPF seem to have vanished without replacement))
* DirectInput is not supported.
* (TDxInput presumably uses one of the above, so it would also fail certification)
There does not appear to be a predefined input device type (OrientationSensor, Inclinometer etc.) that suits the SpaceNavigator, so I'm assuming it would belong to the 'Specialized Device' category.
There is a function (CreateDeviceAccessInstance) and a couple of interfaces (IDeviceIoControl etc.) for communicating with 'specialized devices'. See:
It appears to me, however, that this API is intended for Apps that are automatically installed with the device. In the Device Metadata Package, one can specify a DeviceCompanionApplications and a PrivilegedApplication. Naively trying to use the API anyway will get you an E_ACCESSDENIED. See for example:
It really sounds too stupid to be true, and I'm hoping that I've missed or misunderstood something. Has anyone looked at getting SpaceNav support in Metro Apps?
Thanks in advance,