@@ -578,7 +578,7 @@ protected synchronized void doHandleKeyPress(KeyEvent e) {
578578 }
579579
580580 // Press other keys, if they are pressed together with a modifier key.
581- else if (e .isControlDown () || e .isAltDown () || e . isMetaDown () || windowsKeyDown ) {
581+ else if (e .isControlDown () || e .isMetaDown () || windowsKeyDown || (! SystemUtils . IS_OS_MAC && e . isAltDown ()) ) {
582582 //LOGGER.debug("press key \"{}\" ({})", keyCode, KeyEvent.getKeyText(keyCode));
583583 handler .sendKeyPress (keyCode );
584584 if (!pressedKeys .contains (keyCode ))
@@ -653,7 +653,7 @@ protected synchronized void doHandleKeyRelease(KeyEvent e) {
653653 }
654654
655655 // Release other keys, if they are pressed together with a modifier key.
656- else if (e .isControlDown () || e .isAltDown () || e . isMetaDown () || windowsKeyDown || pressedKeys .contains (keyCode )) {
656+ else if (e .isControlDown () || e .isMetaDown () || windowsKeyDown || (! SystemUtils . IS_OS_MAC && e . isAltDown ()) || pressedKeys .contains (keyCode )) {
657657 //LOGGER.debug("release key \"{}\" ({})", keyCode, KeyEvent.getKeyText(keyCode));
658658 handler .sendKeyRelease (keyCode );
659659 pressedKeys .remove ((Integer ) keyCode );
@@ -673,18 +673,20 @@ protected synchronized void doHandleKeyTyped(KeyEvent e) {
673673 if (handler == null ) return ;
674674 //LOGGER.debug("key typed: " + e.paramString());
675675 final char keyChar = e .getKeyChar ();
676- final int keyValue = (int ) keyChar ;
677676
678677 // Don't type non printable characters.
679- // if (keyValue < 33 || keyValue == 127 || keyChar == KeyEvent.CHAR_UNDEFINED)
680- if ( keyChar == KeyEvent . CHAR_UNDEFINED || Character .isWhitespace (keyChar ) || Character .isISOControl (keyChar ) || Character . isIdentifierIgnorable ( keyChar ))
678+ if (keyChar == KeyEvent . CHAR_UNDEFINED || Character . isWhitespace ( keyChar ) || Character . isISOControl ( keyChar ) || Character . isIdentifierIgnorable ( keyChar )) {
679+ //LOGGER.debug("non printable {} / {}", Character.isWhitespace(keyChar), Character.isISOControl(keyChar));
681680 return ;
681+ }
682682
683683 // Don't type a character, if a modifier key is pressed at the same time.
684- if (e .isControlDown () || e .isAltDown () || e .isMetaDown () || windowsKeyDown )
684+ if (e .isControlDown () || e .isMetaDown () || windowsKeyDown || (!SystemUtils .IS_OS_MAC && e .isAltDown ())) {
685+ //LOGGER.debug("modifier {} / {} / {} / {}", e.isControlDown(), e.isAltDown(), e.isMetaDown(), windowsKeyDown);
685686 return ;
687+ }
686688
687- //LOGGER.debug("type character \"{}\" ({})", keyChar, keyValue );
689+ //LOGGER.debug("type character \"{}\" ({})", keyChar, e.getKeyCode() );
688690 handler .sendKeyType (keyChar );
689691 e .consume ();
690692 }
0 commit comments