diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index 022694f52..c08c55c11 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -30,6 +30,7 @@ typedef struct SDL_WindowData SDL_WindowData; @interface Cocoa_WindowListener : NSResponder { SDL_WindowData *_data; BOOL observingVisible; + BOOL wasCtrlLeft; BOOL wasVisible; } diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index cd4771d44..ecfab8204 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -62,6 +62,7 @@ static void ScheduleContextUpdates(SDL_WindowData *data) _data = data; observingVisible = YES; + wasCtrlLeft = NO; wasVisible = [window isVisible]; center = [NSNotificationCenter defaultCenter]; @@ -333,7 +334,13 @@ static void ScheduleContextUpdates(SDL_WindowData *data) switch ([theEvent buttonNumber]) { case 0: - button = SDL_BUTTON_LEFT; + if ([theEvent modifierFlags] & NSControlKeyMask) { + wasCtrlLeft = YES; + button = SDL_BUTTON_RIGHT; + } else { + wasCtrlLeft = NO; + button = SDL_BUTTON_LEFT; + } break; case 1: button = SDL_BUTTON_RIGHT; @@ -364,7 +371,12 @@ static void ScheduleContextUpdates(SDL_WindowData *data) switch ([theEvent buttonNumber]) { case 0: - button = SDL_BUTTON_LEFT; + if (wasCtrlLeft) { + button = SDL_BUTTON_RIGHT; + wasCtrlLeft = NO; + } else { + button = SDL_BUTTON_LEFT; + } break; case 1: button = SDL_BUTTON_RIGHT;