--- old/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java 2012-03-26 17:16:21.000000000 +0400 +++ new/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java 2012-03-26 17:16:20.000000000 +0400 @@ -123,7 +123,7 @@ * Handles key events. */ void handleKeyEvent(int eventType, int modifierFlags, String chars, - short keyCode) { + short keyCode, boolean needsKeyTyped) { boolean isFlagsChangedEvent = isNpapiCallback ? (eventType == CocoaConstants.NPCocoaEventFlagsChanged) : (eventType == CocoaConstants.NSFlagsChanged); @@ -179,6 +179,10 @@ peer.dispatchKeyEvent(jeventType, when, jmodifiers, jkeyCode, javaChar, jkeyLocation); + // Current browser may be sending input events, so don't + // post the KEY_TYPED here. + postsTyped &= needsKeyTyped; + // That's the reaction on the PRESSED (not RELEASED) event as it comes to // appear in MacOSX. // Modifier keys (shift, etc) don't want to send TYPED events. @@ -191,4 +195,19 @@ KeyEvent.KEY_LOCATION_UNKNOWN); } } + + void handleInputEvent(String text) { + if (text != null) { + int index = 0, length = text.length(); + char c; + while (index < length) { + c = text.charAt(index); + peer.dispatchKeyEvent(KeyEvent.KEY_TYPED, + System.currentTimeMillis(), + 0, KeyEvent.VK_UNDEFINED, c, + KeyEvent.KEY_LOCATION_UNKNOWN); + index++; + } + } + } }