< prev index next >
src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m
Print this page
@@ -280,16 +280,24 @@
{
NSAlternateKeyMask,
//kCGSFlagsMaskAppleLeftAlternateKey,
//kCGSFlagsMaskAppleRightAlternateKey,
58,
- 61,
+ 0,
java_awt_event_InputEvent_ALT_DOWN_MASK,
java_awt_event_InputEvent_ALT_MASK,
java_awt_event_KeyEvent_VK_ALT
},
{
+ NSAlternateKeyMask,
+ 0,
+ 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
+ },
+ {
NSCommandKeyMask,
//kCGSFlagsMaskAppleLeftCommandKey,
//kCGSFlagsMaskAppleRightCommandKey,
55,
54,
@@ -308,10 +316,12 @@
},
// NSFunctionKeyMask
{0, 0, 0, 0, 0, 0}
};
+static BOOL leftAltKeyPressed;
+
/*
* 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.
*/
#define ALL_NS_KEY_MODIFIERS_MASK \
@@ -520,18 +530,24 @@
//if (changedNSFlags & cur->cgsLeftMask) {
// *javaKeyLocation = java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
//} else if (changedNSFlags & cur->cgsRightMask) {
// *javaKeyLocation = java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
//}
+
if (eventKeyCode == cur->leftKeyCode) {
+ leftAltKeyPressed = YES;
*javaKeyLocation = java_awt_event_KeyEvent_KEY_LOCATION_LEFT;
} else if (eventKeyCode == cur->rightKeyCode) {
*javaKeyLocation = java_awt_event_KeyEvent_KEY_LOCATION_RIGHT;
+ } else if (cur->nsMask == NSAlternateKeyMask) {
+ leftAltKeyPressed = NO;
+ continue;
}
*javaKeyType = (cur->nsMask & nsFlags) ?
java_awt_event_KeyEvent_KEY_PRESSED :
java_awt_event_KeyEvent_KEY_RELEASED;
+
break;
}
}
}
@@ -543,11 +559,15 @@
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;
+ javaModifiers |= isExtMods ? cur->javaExtMask : cur->javaMask;
+ if (cur->nsMask == NSAlternateKeyMask && leftAltKeyPressed == NO) {
+ continue;
+ }
+ break;
}
}
return javaModifiers;
}
< prev index next >