From 67c02a282ac3a865fb673a15b3d6b9ca6a8996c9 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 13 Sep 2013 17:42:31 -0700 Subject: [PATCH] Mac: Translate Ctrl-Left click to right click. --- src/video/cocoa/SDL_cocoawindow.h | 1 + src/video/cocoa/SDL_cocoawindow.m | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) 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;