Correctly translate mouse events to the right and middle buttons #2975

This commit is contained in:
Asbjorn Kjaer 2015-10-28 19:48:54 -07:00 committed by Jerry (Xinyu Hou)
parent aa178a356f
commit 5901fa8aed
3 changed files with 24 additions and 3 deletions

View File

@ -466,9 +466,9 @@ OSXScreen::constructMouseButtonEventMap()
{
const CGEventType source[NumButtonIDs][3] = {
{kCGEventLeftMouseUp, kCGEventLeftMouseDragged, kCGEventLeftMouseDown},
{kCGEventOtherMouseUp, kCGEventOtherMouseDragged, kCGEventOtherMouseDown},
{kCGEventRightMouseUp, kCGEventRightMouseDragged, kCGEventRightMouseDown},
{kCGEventOtherMouseUp, kCGEventOtherMouseDragged, kCGEventOtherMouseDown},
{kCGEventOtherMouseUp, kCGEventOtherMouseDragged, kCGEventOtherMouseDown},
{kCGEventOtherMouseUp, kCGEventOtherMouseDragged, kCGEventOtherMouseDown}
};
@ -541,7 +541,7 @@ void
OSXScreen::fakeMouseButton(ButtonID id, bool press)
{
// Buttons are indexed from one, but the button down array is indexed from zero
UInt32 index = id - kButtonLeft;
UInt32 index = mapSynergyButtonToMac(id) - kButtonLeft;
if (index >= NumButtonIDs) {
return;
}
@ -594,7 +594,7 @@ OSXScreen::fakeMouseButton(ButtonID id, bool press)
MouseButtonEventMapType thisButtonMap = MouseButtonEventMap[index];
CGEventType type = thisButtonMap[state];
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, index);
CGEventSetIntegerValueField(event, kCGMouseEventClickState, m_clickState);
@ -1444,6 +1444,21 @@ OSXScreen::onHotKey(EventRef event) const
return true;
}
ButtonID
OSXScreen::mapSynergyButtonToMac(UInt16 button) const
{
switch (button) {
case 1:
return kButtonLeft;
case 2:
return kMacButtonMiddle;
case 3:
return kMacButtonRight;
}
return static_cast<ButtonID>(button);
}
ButtonID
OSXScreen::mapMacButtonToSynergy(UInt16 macButton) const
{

View File

@ -138,6 +138,9 @@ private:
void showCursor();
void hideCursor();
// map mac mouse button to synergy buttons
ButtonID mapSynergyButtonToMac(UInt16) const;
// map mac mouse button to synergy buttons
ButtonID mapMacButtonToSynergy(UInt16) const;

View File

@ -33,6 +33,9 @@ static const ButtonID kButtonLeft = 1;
static const ButtonID kButtonMiddle = 2;
static const ButtonID kButtonRight = 3;
static const ButtonID kButtonExtra0 = 4;
static const ButtonID kMacButtonRight = 2;
static const ButtonID kMacButtonMiddle = 3;
//@}
static const UInt8 NumButtonIDs = 5;