Added modifier flags to mouse events as a fix for sticky keys.

This commit is contained in:
jpmcmu
2015-04-22 19:33:25 -04:00
parent 1a05bed6da
commit 9978a85a4f
3 changed files with 42 additions and 1 deletions

View File

@@ -528,6 +528,10 @@ OSXScreen::postMouseEvent(CGPoint& pos) const
// Dragging events also need the click state
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
// Fix for sticky keys
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
CGEventSetFlags(event, modifiers);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
@@ -595,6 +599,10 @@ OSXScreen::fakeMouseButton(ButtonID id, bool press)
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
// Fix for sticky keys
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
CGEventSetFlags(event, modifiers);
m_buttonState.set(index, state);
CGEventPost(kCGHIDEventTap, event);
@@ -705,6 +713,10 @@ OSXScreen::fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const
mapScrollWheelFromSynergy(yDelta),
-mapScrollWheelFromSynergy(xDelta));
// Fix for sticky keys
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
CGEventSetFlags(scrollEvent, modifiers);
CGEventPost(kCGHIDEventTap, scrollEvent);
CFRelease(scrollEvent);
#else