Browse Source

Mac: Translate Ctrl-Left click to right click.

Sam Lantinga 11 years ago
parent
commit
67c02a282a
2 changed files with 15 additions and 2 deletions
  1. 1 0
      src/video/cocoa/SDL_cocoawindow.h
  2. 14 2
      src/video/cocoa/SDL_cocoawindow.m

+ 1 - 0
src/video/cocoa/SDL_cocoawindow.h

@@ -30,6 +30,7 @@ typedef struct SDL_WindowData SDL_WindowData;
 @interface Cocoa_WindowListener : NSResponder <NSWindowDelegate> {
     SDL_WindowData *_data;
     BOOL observingVisible;
+    BOOL wasCtrlLeft;
     BOOL wasVisible;
 }
 

+ 14 - 2
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;