*/
/*
+ * Modified by Jinrong Xie (stonexjr@gmail.com) 12/24/2014
+ * for Space Navigator support on Windows.
* This code is enhanced by at least supporting 3Dconnexion's
* six degree of freedom navigator.
*/
__fgSpaceball.hwndTarget = NULL;
sball_initialized = 0;
}
-
- return;
}
void fgPlatformSpaceballClose(void)
int fgIsSpaceballWinEvent(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
+ return 0;
}
void fgSpaceballHandleWinEvent(HWND hwnd, WPARAM wParam, LPARAM lParam)
#define LOGITECH_VENDOR_ID 0x46d
HRAWINPUT hRawInput = (HRAWINPUT)lParam;
UINT inputCode = (UINT)wParam;
- RAWINPUTHEADER hdr;
UINT size;
BYTE *rawInputBuffer;
PRAWINPUT pRawInput;
// X goes right, Y goes up and Z goes towards viewer, e.g.
// the one used in OpenGL
if (pRawInput->data.hid.bRawData[0] ==
- SPNAV_EVENT_MOTION_TRANSLATION)//0x01)
+ SPNAV_EVENT_MOTION_TRANSLATION)
{ // Translation vector
short* pnData = (short*)(&pRawInput->data.hid.bRawData[1]);
short X = pnData[0];
INVOKE_WCB(*window, SpaceMotion, (X, Y, Z));
}
else if (pRawInput->data.hid.bRawData[0] ==
- SPNAV_EVENT_MOTION_ROTATION)//0x02)
+ SPNAV_EVENT_MOTION_ROTATION)
{ // Axis aligned rotation vector
short* pnData = (short*)(&pRawInput->data.hid.bRawData[1]);
short rX = pnData[0];
INVOKE_WCB(*window, SpaceRotation, (rX, rY, rZ));
}
else if (pRawInput->data.hid.bRawData[0] ==
- SPNAV_EVENT_BUTTON)//0x03)
+ SPNAV_EVENT_BUTTON)
{ // State of the keys
unsigned long dwKeystate = *(unsigned long*)(&pRawInput->data.hid.bRawData[1]);
unsigned int state = GLUT_UP;