Skip to content

Commit b3e9b1e

Browse files
committed
fix processing of keytype events in combination with the option key on macOS
fixes #31 (cherry picked from commit 3ebee8c)
1 parent c0412f2 commit b3e9b1e

1 file changed

Lines changed: 9 additions & 7 deletions

File tree

Staff/src/main/java/de/openindex/support/staff/StaffApplication.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)