void (KeyEvent e) { int keyCode = e.getKeyCode(); if (getFocusTraversalKeysEnabled() && e.getModifiers() == 0 && e.getModifiersEx() == 0) { if (keyCode == KeyEvent.VK_ESCAPE || (keyCode == KeyEvent.VK_ENTER && myKeyStroke != null)) { super.processKeyEvent(e); return; } } final boolean isNotModifierKey = keyCode != KeyEvent.VK_SHIFT && keyCode != KeyEvent.VK_ALT && keyCode != KeyEvent.VK_CONTROL && keyCode != KeyEvent.VK_ALT_GRAPH && keyCode != KeyEvent.VK_META && !absolutelyUnknownKey(e); if (isNotModifierKey) { // NOTE: when user presses 'Alt + Right' at Linux the IDE can receive next sequence KeyEvents: ALT_PRESSED -> RIGHT_RELEASED -> ALT_RELEASED // RIGHT_PRESSED can be skipped, it depends on WM if ( e.getID() == KeyEvent.KEY_PRESSED || (e.getID() == KeyEvent.KEY_RELEASED && SystemInfo.isLinux && (e.isAltDown() || e.isAltGraphDown()) && myLastPressedKeyCode != keyCode) // press-event was skipped ) { setKeyStroke(KeyStrokeAdapter.getDefaultKeyStroke(e)); } if (e.getID() == KeyEvent.KEY_PRESSED) myLastPressedKeyCode = keyCode; } // Ensure TAB/Shift-TAB work as focus traversal keys, otherwise // there is no proper way to move the focus outside the text field. if (!getFocusTraversalKeysEnabled() && ScreenReader.isActive()) { setFocusTraversalKeysEnabled(true); try { KeyboardFocusManager.getCurrentKeyboardFocusManager().processKeyEvent(this, e); } finally { setFocusTraversalKeysEnabled(false); } } }