--- old/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java 2013-04-01 15:34:14.000000000 +0400 +++ new/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java 2013-04-01 15:34:14.000000000 +0400 @@ -41,6 +41,7 @@ private final LWWindowPeer peer; private final boolean isNpapiCallback; + private int lastKeyPressCode = KeyEvent.VK_UNDEFINED; CPlatformResponder(final LWWindowPeer peer, final boolean isNpapiCallback) { this.peer = peer; @@ -183,6 +184,9 @@ int jmodifiers = NSEvent.nsToJavaKeyModifiers(modifierFlags); long when = System.currentTimeMillis(); + if (jeventType == KeyEvent.KEY_PRESSED) { + lastKeyPressCode = jkeyCode; + } peer.dispatchKeyEvent(jeventType, when, jmodifiers, jkeyCode, javaChar, jkeyLocation); @@ -210,9 +214,13 @@ while (index < length) { c = text.charAt(index); peer.dispatchKeyEvent(KeyEvent.KEY_TYPED, - System.currentTimeMillis(), - 0, KeyEvent.VK_UNDEFINED, c, - KeyEvent.KEY_LOCATION_UNKNOWN); + System.currentTimeMillis(), + 0, KeyEvent.VK_UNDEFINED, c, + KeyEvent.KEY_LOCATION_UNKNOWN); + peer.dispatchKeyEvent(KeyEvent.KEY_RELEASED, + System.currentTimeMillis(), + 0, lastKeyPressCode, c, + KeyEvent.KEY_LOCATION_UNKNOWN); index++; } }