* Copyright (c) 2014 Jinrong Xie. All Rights Reserved.
* Written by Jinrong Xie <stonexjr at gmail.com>
* Modification date: Wed Dec 24, 2014
-
+ *
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
*/
/*
+ * 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.
*/
void fgPlatformInitializeSpaceball(void)
{
HWND hwnd;
- sball_initialized = 1;
+ sball_initialized = 1;
if (!fgStructure.CurrentWindow)
{
sball_initialized = 0;
__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;
__fgSpaceKeystate = dwKeystate;
}
}
-}
\ No newline at end of file
+}