X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmswin%2Ffg_spaceball_mswin.c;h=ba2ccf08caeeac5b6f048fe564c28794686c62dc;hb=f008a928eaa4b6f595b987d2f86f82a5cc3224e7;hp=4d96c31a0b4265fe025a5d2bba38afa6db1ca837;hpb=cae6701c343e3a42bc9504f14e6d83e4ca9d8119;p=freeglut diff --git a/src/mswin/fg_spaceball_mswin.c b/src/mswin/fg_spaceball_mswin.c index 4d96c31..ba2ccf0 100644 --- a/src/mswin/fg_spaceball_mswin.c +++ b/src/mswin/fg_spaceball_mswin.c @@ -30,6 +30,8 @@ */ /* + * 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. */ @@ -68,8 +70,6 @@ void fgPlatformInitializeSpaceball(void) __fgSpaceball.hwndTarget = NULL; sball_initialized = 0; } - - return; } void fgPlatformSpaceballClose(void) @@ -94,6 +94,7 @@ void fgPlatformSpaceballSetWindow(SFG_Window *window) int fgIsSpaceballWinEvent(HWND hwnd, WPARAM wParam, LPARAM lParam) { + return 0; } void fgSpaceballHandleWinEvent(HWND hwnd, WPARAM wParam, LPARAM lParam) @@ -101,7 +102,6 @@ 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; @@ -148,7 +148,7 @@ void fgSpaceballHandleWinEvent(HWND hwnd, WPARAM wParam, LPARAM lParam) // 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]; @@ -157,7 +157,7 @@ void fgSpaceballHandleWinEvent(HWND hwnd, WPARAM wParam, LPARAM lParam) 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]; @@ -166,7 +166,7 @@ void fgSpaceballHandleWinEvent(HWND hwnd, WPARAM wParam, LPARAM lParam) 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;