bool COSXScreen::leave() { if (m_isPrimary) { // warp to center warpCursor(m_xCenter, m_yCenter); // capture events HideWindow(m_hiddenWindow); ShowWindow(m_userInputWindow); RepositionWindow(m_userInputWindow, m_userInputWindow, kWindowCenterOnMainScreen); SetUserFocusWindow(m_userInputWindow); // The OS will coalesce some events if they are similar enough in a // short period of time this is bad for us since we need every event // to send it over to other machines. So disable it. SetMouseCoalescingEnabled(false, NULL); CGSetLocalEventsSuppressionInterval(0.0001); // disable global hotkeys //setGlobalHotKeysEnabled(false); } else { // hide cursor if (!m_cursorHidden) { // CGDisplayHideCursor(m_displayID); m_cursorHidden = true; } // warp the mouse to the cursor center fakeMouseMove(m_xCenter, m_yCenter); // FIXME -- prepare to show cursor if it moves // take keyboard focus // FIXME } // now off screen m_isOnScreen = false; return true; }
void COSXScreen::enter() { if (m_isPrimary) { // stop capturing input, watch jump zones HideWindow( m_userInputWindow ); ShowWindow( m_hiddenWindow ); SetMouseCoalescingEnabled(true, NULL); CGSetLocalEventsSuppressionInterval(0.0); // enable global hotkeys //setGlobalHotKeysEnabled(true); } else { // show cursor if (m_cursorHidden) { // CGDisplayShowCursor(m_displayID); m_cursorHidden = false; } // reset buttons for (UInt32 i = 0; i < sizeof(m_buttons) / sizeof(m_buttons[0]); ++i) { m_buttons[i] = false; } // avoid suppression of local hardware events // [email protected] CGSetLocalEventsFilterDuringSupressionState( kCGEventFilterMaskPermitAllEvents, kCGEventSupressionStateSupressionInterval); CGSetLocalEventsFilterDuringSupressionState( (kCGEventFilterMaskPermitLocalKeyboardEvents | kCGEventFilterMaskPermitSystemDefinedEvents), kCGEventSupressionStateRemoteMouseDrag); } // now on screen m_isOnScreen = true; }
OSStatus SetMouseCoalescingEnabled_wrap(bool newState) { return SetMouseCoalescingEnabled(newState, NULL); }
void enableCoalescing() { SetMouseCoalescingEnabled(true, NULL); }
void disableCoalescing() { SetMouseCoalescingEnabled(false, NULL); }