// TestKeyCode.java  note differences  pressed  vs  released,
//                                     letters numbers vs up down shift
//                                     auto repeat

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;

public class TestKeyCode
{
  public static void main(String args[])throws Exception
  {
    JFrame frame=new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextField nameTextField=new JTextField();
    frame.add(nameTextField,BorderLayout.NORTH);
    System.out.println("TestKeyCode.java running");
    System.out.println("KeyEvent : keyText / getKeyChar  keyCode");    

    KeyListener keyListener=new KeyListener() // gets Pressed, Released and Typed events
	{
      public void keyPressed(KeyEvent keyEvent)
	  {
        printIt("Pressed",keyEvent);
      }

      public void keyReleased(KeyEvent keyEvent)
      {
        printIt("Released",keyEvent);
      }

      public void keyTyped(KeyEvent keyEvent)
      {
        printIt("Typed",keyEvent);
      }

      private void printIt(String title, KeyEvent keyEvent)
      {
        int keyCode=keyEvent.getKeyCode();
        String keyText=KeyEvent.getKeyText(keyCode);
        System.out.println(title+" : "+keyText+" / "+keyEvent.getKeyChar());
        switch(keyCode)
		{
		  case KeyEvent.VK_LEFT:
		    System.out.println("                                VK_LEFT");
			break;
		  case KeyEvent.VK_RIGHT:
		    System.out.println("                                VK_RIGHT");
			break;
		  case KeyEvent.VK_UP:
		    System.out.println("                                VK_UP");
			break;
		  case KeyEvent.VK_DOWN:
		    System.out.println("                                VK_DOWN");
			break;
		  case KeyEvent.VK_SHIFT:
		    System.out.println("                                VK_SHIFT");
			break;
		  case KeyEvent.VK_SPACE:
			System.out.println("                                VK_SPACE");
			break;
		  case KeyEvent.VK_ENTER:
			System.out.println("                                VK_ENTER");
			break;
		  case KeyEvent.VK_CONTROL:
			System.out.println("                                VK_CONTROL");
			break;
	      case KeyEvent.VK_A:
		    System.out.println("                                VK_A");
			break;
		  case KeyEvent.VK_0:
		    System.out.println("                                VK_0");
			break;
		  default:
		    System.out.println(" ");
		}
      }
    }; // end KeyListener
	
    nameTextField.addKeyListener(keyListener);
    frame.setTitle("TestKeyCode");
    frame.setSize(250,100);
    frame.setVisible(true);
  } // end main
} // end class TestKeyCode

