import javax.swing.*;
import java.awt.event.*;
import javax.swing.text.*;
import java.awt.*;

public class InputMapComponents{
	JFrame frame;
	JPanel panel;
	JLabel label;
	JTextArea area;
	JScrollPane pane;
	InputMap map;
	public static void main(String[] args) {
		InputMapComponents m = new InputMapComponents();
	}
	public InputMapComponents(){
		frame = new JFrame(" Adding an InputMap to a Component");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		panel = new JPanel();	
		area = new JTextArea(7,10);
		pane = new JScrollPane(area);
		map = area.getInputMap();
		KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK);
        map.put(key, DefaultEditorKit.cutAction);
		key = KeyStroke.getKeyStroke(KeyEvent.VK_Y, Event.CTRL_MASK);
		map.put(key, DefaultEditorKit.copyAction);
		key = KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK);
		map.put(key, DefaultEditorKit.pasteAction);
		key = KeyStroke.getKeyStroke(KeyEvent.VK_L, Event.CTRL_MASK);
		map.put(key, DefaultEditorKit.backwardAction);
		key = KeyStroke.getKeyStroke(KeyEvent.VK_R, Event.CTRL_MASK);
		map.put(key, DefaultEditorKit.forwardAction);
		key = KeyStroke.getKeyStroke(KeyEvent.VK_U, Event.CTRL_MASK);
		map.put(key, DefaultEditorKit.upAction);
		key = KeyStroke.getKeyStroke(KeyEvent.VK_D, Event.CTRL_MASK);
		map.put(key, DefaultEditorKit.downAction);
		String lbl = "<html><b>" + "Ctrl+p = paste" + "<br>" + "Ctrl+y = copy" + "<br>" + "Ctrl+c = cut" + "<br>" + "Ctrl+l = cursor shift left one character" + "<br>" + "Ctrl+r = cursor shift right one character" + "<br>" + "Ctrl+u = cursor shift up one line" + "<br>" + "Ctrl+d = cursor shift down one line" + "</b></html>";
		JLabel label = new JLabel(lbl);
		panel.add(pane);
		panel.add(label);
		frame.add(panel);
		frame.setSize(400,200);
		frame.setVisible(true);
	}
}
