3DConnexion Sensor Driver for Windows 7


3DConnexion has created a set of nice 3d navigation tools, which provide a COM api for applications to use. This however would require recompilation of an application to support the 3D mouse navigation.

Here is a user-level driver (UMDF) that can map a 3DConnexion to a Windows 7 Sensor. This allows you to use the 3D Mouse based on the Sensor API Abstraction.

Notes

The driver does work if the mouse is connected but the 3D SDK is not installed. That means that you do not need to use the SDK if your application is sensor-aware.

The application stores the device name configuration in HKLM\SOFTWARE\_3dcsensor. After the driver is installed and the sensor is enabled in Control Panel, any application can access the sensor.

To uninstall the driver, select the "Uninstall" button. Although the Sensor API model allows driver uninstallation when a driver is in use, it is recommended to uninstall the driver only if no other apps are using the sensor.

To learn how you can develop sensor-enabled and location-aware applications, see my article on CodeProject.

Sensor CLSID

{908B09B1-286C-483e-809F-D9E4D965C703}.

Driver Category

SENSOR_CATEGORY_3DCONNEXION
// {721F1F75-ADE4-4393-8705-09AC07FA288D}

Returned Values
// {ABAAE94A-5B5A-4145-8593-618C99B03058}


X DEFINE_PROPERTYKEY(SENSOR_PROPERTY_3DCONNEXION_X,
0xabaae94a, 0x5b5a, 0x4145, 0x85, 0x93, 0x61, 0x8c, 0x99, 0xb0, 0x30, 0x58, 1);
Y DEFINE_PROPERTYKEY(SENSOR_PROPERTY_3DCONNEXION_Y,
0xabaae94a, 0x5b5a, 0x4145, 0x85, 0x93, 0x61, 0x8c, 0x99, 0xb0, 0x30, 0x58, 2);
Z DEFINE_PROPERTYKEY(SENSOR_PROPERTY_3DCONNEXION_Z,
0xabaae94a, 0x5b5a, 0x4145, 0x85, 0x93, 0x61, 0x8c, 0x99, 0xb0, 0x30, 0x58, 3);
RX DEFINE_PROPERTYKEY(SENSOR_PROPERTY_3DCONNEXION_RX,
0xabaae94a, 0x5b5a, 0x4145, 0x85, 0x93, 0x61, 0x8c, 0x99, 0xb0, 0x30, 0x58, 4);
RY DEFINE_PROPERTYKEY(SENSOR_PROPERTY_3DCONNEXION_RY,
0xabaae94a, 0x5b5a, 0x4145, 0x85, 0x93, 0x61, 0x8c, 0x99, 0xb0, 0x30, 0x58, 5);
RZ DEFINE_PROPERTYKEY(SENSOR_PROPERTY_3DCONNEXION_RZ,
0xabaae94a, 0x5b5a, 0x4145, 0x85, 0x93, 0x61, 0x8c, 0x99, 0xb0, 0x30, 0x58, 6);
ButtonMask DEFINE_PROPERTYKEY(SENSOR_PROPERTY_3DCONNEXION_BUTTONS,
0xabaae94a, 0x5b5a, 0x4145, 0x85, 0x93, 0x61, 0x8c, 0x99, 0xb0, 0x30, 0x58, 7);

The ranges for the translation/rotation are in [-5,5]. The button mask contains the buttons that are down.

 

Change Log