/* * UserGetMouseButtonsState * * Returns bitfield of MK_* flags used in mouse messages */ WORD FASTCALL UserGetMouseButtonsState(VOID) { WORD wRet = 0; wRet = IntGetSysCursorInfo()->ButtonsDown; if (IS_KEY_DOWN(gafAsyncKeyState, VK_SHIFT)) wRet |= MK_SHIFT; if (IS_KEY_DOWN(gafAsyncKeyState, VK_CONTROL)) wRet |= MK_CONTROL; return wRet; }
filter_result MouseButtonCommandActuator::KeyEvent(const BMessage* keyMessage, BList* outList, void** setAsyncData, BMessage* mouseMessage) { if (IS_KEY_DOWN(keyMessage) != fKeyDown) { _GenerateMouseButtonEvent(IS_KEY_DOWN(keyMessage), keyMessage, outList, mouseMessage); fKeyDown = IS_KEY_DOWN(keyMessage); return B_DISPATCH_MESSAGE; } else { // This will handle key-repeats, which we don't want turned into lots // of B_MOUSE_DOWN messages. return B_SKIP_MESSAGE; } }
filter_result MouseUpCommandActuator::KeyEvent(const BMessage* keyMessage, BList* outList, void** setAsyncData, BMessage* mouseMessage) { if (IS_KEY_DOWN(keyMessage)) _GenerateMouseButtonEvent(false, keyMessage, outList, mouseMessage); return B_DISPATCH_MESSAGE; }
filter_result LaunchCommandActuator::KeyEvent(const BMessage* keyMessage, BList* outList, void** setAsyncData, BMessage* mouseMessage) { if (IS_KEY_DOWN(keyMessage)) { // cause KeyEventAsync() to be called asynchronously *setAsyncData = (void*) true; } return B_SKIP_MESSAGE; }
/* * IntGetModifiers * * Returns a value that indicates if the key is a modifier key, and * which one. */ static UINT FASTCALL IntGetModifiers(PBYTE pKeyState) { UINT fModifiers = 0; if (IS_KEY_DOWN(pKeyState, VK_SHIFT)) fModifiers |= MOD_SHIFT; if (IS_KEY_DOWN(pKeyState, VK_CONTROL)) fModifiers |= MOD_CONTROL; if (IS_KEY_DOWN(pKeyState, VK_MENU)) fModifiers |= MOD_ALT; if (IS_KEY_DOWN(pKeyState, VK_LWIN) || IS_KEY_DOWN(pKeyState, VK_RWIN)) fModifiers |= MOD_WIN; return fModifiers; }
void idle() { calcFPS(); glCheckError("idle"); static Timer t; double dt = t.elapsed_time(); if(IS_KEY_DOWN('w') || IS_KEY_DOWN('W')) g_CameraPos += g_CameraForward*g_Speed*dt; if(IS_KEY_DOWN('s') || IS_KEY_DOWN('S')) g_CameraPos -= g_CameraForward*g_Speed*dt; if(IS_KEY_DOWN('q') || IS_KEY_DOWN('Q')) g_CameraPos +=NxVec3(0.0f,1.0f,0.0f)*g_Speed*dt; if(IS_KEY_DOWN('e') || IS_KEY_DOWN('E')) g_CameraPos -=NxVec3(0.0f,1.0f,0.0f)*g_Speed*dt; if(IS_KEY_DOWN('a') || IS_KEY_DOWN('A')) g_CameraPos -= g_CameraRight*g_Speed*dt; if(IS_KEY_DOWN('d') || IS_KEY_DOWN('D')) g_CameraPos += g_CameraRight*g_Speed*dt; t.reset(); glutPostRedisplay(); }
void idle() { calcFPS(); glCheckError("idle"); static Timer t; double dt = t.elapsed_time(); NxSphere person; person.center = g_CameraPos; person.radius = 2.0f; if(IS_KEY_DOWN('w') || IS_KEY_DOWN('W')) { g_CameraPos += g_CameraForward*g_Speed*dt; if(gMyPhysX.getScene()->checkOverlapSphere(person,NX_ALL_SHAPES)) g_CameraPos -= g_CameraForward*g_Speed*dt; } if(IS_KEY_DOWN('s') || IS_KEY_DOWN('S')) { g_CameraPos -= g_CameraForward*g_Speed*dt; } if(IS_KEY_DOWN('q') || IS_KEY_DOWN('Q')) g_CameraPos +=NxVec3(0.0f,1.0f,0.0f)*g_Speed*dt; if(IS_KEY_DOWN('e') || IS_KEY_DOWN('E')) g_CameraPos -=NxVec3(0.0f,1.0f,0.0f)*g_Speed*dt; if(IS_KEY_DOWN('a') || IS_KEY_DOWN('A')) g_CameraPos -= g_CameraRight*g_Speed*dt; if(IS_KEY_DOWN('d') || IS_KEY_DOWN('D')) g_CameraPos += g_CameraRight*g_Speed*dt; t.reset(); glutPostRedisplay(); }