/* check if specified modifier key type is pressed */ static int query_qual(modifierKeyType qual) { GHOST_TModifierKeyMask left, right; int val = 0; switch (qual) { case SHIFT: left = GHOST_kModifierKeyLeftShift; right = GHOST_kModifierKeyRightShift; break; case CONTROL: left = GHOST_kModifierKeyLeftControl; right = GHOST_kModifierKeyRightControl; break; case OS: left = right = GHOST_kModifierKeyOS; break; case ALT: default: left = GHOST_kModifierKeyLeftAlt; right = GHOST_kModifierKeyRightAlt; break; } GHOST_GetModifierKeyState(g_system, left, &val); if (!val) GHOST_GetModifierKeyState(g_system, right, &val); return val; }
/* implementation */ static void playanim_event_qual_update(void) { int val; /* Shift */ GHOST_GetModifierKeyState(g_WS.ghost_system, GHOST_kModifierKeyLeftShift, &val); if (val) g_WS.qual |= WS_QUAL_LSHIFT; else g_WS.qual &= ~WS_QUAL_LSHIFT; GHOST_GetModifierKeyState(g_WS.ghost_system, GHOST_kModifierKeyRightShift, &val); if (val) g_WS.qual |= WS_QUAL_RSHIFT; else g_WS.qual &= ~WS_QUAL_RSHIFT; /* Control */ GHOST_GetModifierKeyState(g_WS.ghost_system, GHOST_kModifierKeyLeftControl, &val); if (val) g_WS.qual |= WS_QUAL_LCTRL; else g_WS.qual &= ~WS_QUAL_LCTRL; GHOST_GetModifierKeyState(g_WS.ghost_system, GHOST_kModifierKeyRightControl, &val); if (val) g_WS.qual |= WS_QUAL_RCTRL; else g_WS.qual &= ~WS_QUAL_RCTRL; /* Alt */ GHOST_GetModifierKeyState(g_WS.ghost_system, GHOST_kModifierKeyLeftAlt, &val); if (val) g_WS.qual |= WS_QUAL_LALT; else g_WS.qual &= ~WS_QUAL_LALT; GHOST_GetModifierKeyState(g_WS.ghost_system, GHOST_kModifierKeyRightAlt, &val); if (val) g_WS.qual |= WS_QUAL_RALT; else g_WS.qual &= ~WS_QUAL_RALT; }