--- old/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m 2016-07-04 00:29:37.000000000 +0530 +++ new/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m 2016-07-04 00:29:37.000000000 +0530 @@ -349,7 +349,7 @@ {0, 0, 0} }; -unichar NsCharToJavaChar(unichar nsChar, NSUInteger modifiers) +unichar NsCharToJavaChar(unichar nsChar, NSUInteger modifiers, BOOL spaceKeyTyped) { const struct _char *cur; // Mask off just the keyboard modifiers from the event modifier mask. @@ -382,6 +382,11 @@ return java_awt_event_KeyEvent_CHAR_UNDEFINED; } + // nsChar receives value 0 when SPACE key is typed. + if (nsChar == 0 && spaceKeyTyped == YES) { + return java_awt_event_KeyEvent_VK_SPACE; + } + // otherwise return character unchanged return nsChar; } @@ -757,13 +762,13 @@ */ JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_NSEvent_nsToJavaChar -(JNIEnv *env, jclass cls, jchar nsChar, jint modifierFlags) +(JNIEnv *env, jclass cls, jchar nsChar, jint modifierFlags, jboolean spaceKeyTyped) { jchar javaChar = 0; JNF_COCOA_ENTER(env); - javaChar = NsCharToJavaChar(nsChar, modifierFlags); + javaChar = NsCharToJavaChar(nsChar, modifierFlags, spaceKeyTyped); JNF_COCOA_EXIT(env); --- old/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java 2016-07-04 00:29:38.000000000 +0530 +++ new/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java 2016-07-04 00:29:38.000000000 +0530 @@ -134,6 +134,7 @@ int jkeyCode = KeyEvent.VK_UNDEFINED; int jkeyLocation = KeyEvent.KEY_LOCATION_UNKNOWN; boolean postsTyped = false; + boolean spaceKeyTyped = false; char testChar = KeyEvent.CHAR_UNDEFINED; boolean isDeadChar = (chars!= null && chars.length() == 0); @@ -150,6 +151,11 @@ } else { if (chars != null && chars.length() > 0) { testChar = chars.charAt(0); + + //Check if String chars contains SPACE character. + if (chars.trim().isEmpty()) { + spaceKeyTyped = true; + } } char testCharIgnoringModifiers = charsIgnoringModifiers != null && charsIgnoringModifiers.length() > 0 ? @@ -176,7 +182,7 @@ NSEvent.nsToJavaEventType(eventType); } - char javaChar = NSEvent.nsToJavaChar(testChar, modifierFlags); + char javaChar = NSEvent.nsToJavaChar(testChar, modifierFlags, spaceKeyTyped); // Some keys may generate a KEY_TYPED, but we can't determine // what that character is. That's likely a bug, but for now we // just check for CHAR_UNDEFINED. --- old/src/java.desktop/macosx/classes/sun/lwawt/macosx/NSEvent.java 2016-07-04 00:29:39.000000000 +0530 +++ new/src/java.desktop/macosx/classes/sun/lwawt/macosx/NSEvent.java 2016-07-04 00:29:39.000000000 +0530 @@ -254,7 +254,7 @@ * There is a small number of NS characters that need to be converted * into other characters before we pass them to AWT. */ - static native char nsToJavaChar(char nsChar, int modifierFlags); + static native char nsToJavaChar(char nsChar, int modifierFlags, boolean spaceKeyTyped); static boolean isPopupTrigger(int jmodifiers) { final boolean isRightButtonDown = ((jmodifiers & InputEvent.BUTTON3_DOWN_MASK) != 0);