|| keyCode == KeyEvent.VK_TAB)
|| keyCode == KeyEvent.VK_TAB || keyCode == KeyEvent.VK_ESCAPE)
	public void keyPressed(KeyEvent evt)	{		int keyCode = evt.getKeyCode();		int modifiers = evt.getModifiers();		if((modifiers & ~KeyEvent.SHIFT_MASK) != 0			|| evt.isActionKey()			|| keyCode == KeyEvent.VK_BACK_SPACE			|| keyCode == KeyEvent.VK_DELETE			|| keyCode == KeyEvent.VK_ENTER			|| keyCode == KeyEvent.VK_TAB)		{			if(grabAction != null)			{				handleGrabAction(evt,'\0');				return;			}			KeyStroke keyStroke = KeyStroke.getKeyStroke(keyCode,				modifiers);			Object o = currentBindings.get(keyStroke);			if(o == null)			{				// Don't beep if the user presses some				// key we don't know about unless a				// prefix is active. Otherwise it will				// beep when caps lock is pressed, etc.				if(currentBindings != bindings)				{					Toolkit.getDefaultToolkit().beep();					// F10 should be passed on, but C+e F10					// shouldn't					repeatCount = 0;					repeat = false;					evt.consume();				}				currentBindings = bindings;				return;			}			else if(o instanceof ActionListener)			{				currentBindings = bindings;				ActionEvent actionEvent = new ActionEvent(					evt.getSource(),					ActionEvent.ACTION_PERFORMED,					null,modifiers);				ActionListener listener = ((ActionListener)o);				// Remember old repeat				boolean oldRepeat = repeat;								if(listener instanceof InputHandler.NonRepeatable)					listener.actionPerformed(actionEvent);				else				{					for(int i = 0; i < Math.max(1,repeatCount); i++)						listener.actionPerformed(actionEvent);				}				// Don't clear repeat to false if it changed				// from false to true				if(oldRepeat == true)				{					repeat = false;					repeatCount = 0;				}				evt.consume();				return;			}			else if(o instanceof Hashtable)			{				currentBindings = (Hashtable)o;				evt.consume();				return;			}			else if(keyCode != KeyEvent.VK_ALT				&& keyCode != KeyEvent.VK_CONTROL				&& keyCode != KeyEvent.VK_SHIFT				&& keyCode != KeyEvent.VK_META)			{				return;			}		}	}