< prev index next >

src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m

Print this page

        

@@ -276,10 +276,20 @@
         java_awt_event_InputEvent_CTRL_DOWN_MASK,
         java_awt_event_InputEvent_CTRL_MASK,
         java_awt_event_KeyEvent_VK_CONTROL
     },
     {
+        NSCommandKeyMask,
+        //kCGSFlagsMaskAppleLeftCommandKey,
+        //kCGSFlagsMaskAppleRightCommandKey,
+        55,
+        54,
+        java_awt_event_InputEvent_META_DOWN_MASK,
+        java_awt_event_InputEvent_META_MASK,
+        java_awt_event_KeyEvent_VK_META
+    },
+    {
         NSAlternateKeyMask,
         //kCGSFlagsMaskAppleLeftAlternateKey,
         //kCGSFlagsMaskAppleRightAlternateKey,
         58,
         0,

@@ -293,20 +303,10 @@
         61,
         java_awt_event_InputEvent_ALT_DOWN_MASK | java_awt_event_InputEvent_ALT_GRAPH_DOWN_MASK,
         java_awt_event_InputEvent_ALT_MASK | java_awt_event_InputEvent_ALT_GRAPH_MASK,
         java_awt_event_KeyEvent_VK_ALT | java_awt_event_KeyEvent_VK_ALT_GRAPH
     },
-        {
-                NSCommandKeyMask,
-                //kCGSFlagsMaskAppleLeftCommandKey,
-                //kCGSFlagsMaskAppleRightCommandKey,
-                55,
-                54,
-                java_awt_event_InputEvent_META_DOWN_MASK,
-                java_awt_event_InputEvent_META_MASK,
-                java_awt_event_KeyEvent_VK_META
-        },
     // NSNumericPadKeyMask
     {
         NSHelpKeyMask,
         0,
         0,

@@ -317,10 +317,11 @@
     // NSFunctionKeyMask
     {0, 0, 0, 0, 0, 0}
 };
 
 static BOOL leftAltKeyPressed;
+static BOOL altGRPressed = NO;
 
 /*
  * Almost all unicode characters just go from NS to Java with no translation.
  *  For the few exceptions, we handle it here with this small table.
  */

@@ -557,15 +558,23 @@
         jint javaModifiers = 0;
         const struct _nsKeyToJavaModifier* cur;
         
         for (cur = nsKeyToJavaModifierTable; cur->nsMask != 0; ++cur) {
                 if ((cur->nsMask & nsFlags) != 0) {
-                                javaModifiers |= isExtMods ? cur->javaExtMask : cur->javaMask;
-                                if (cur->nsMask == NSAlternateKeyMask && leftAltKeyPressed == NO) {
+                        
+            if (cur->nsMask == NSAlternateKeyMask) {
+                if (leftAltKeyPressed == YES) {
+                    javaModifiers |= isExtMods? cur->javaExtMask : cur->javaMask;
+                    if (altGRPressed == NO)
+                        break;
+                    } else {
+                        leftAltKeyPressed = YES;
+                        altGRPressed = YES;
                                         continue;
                         }
-                        break;
+                }
+            javaModifiers |= isExtMods ? cur->javaExtMask : cur->javaMask;
                 }
         }
 
         return javaModifiers;
 }
< prev index next >