blob: 3ef419cec467572213ca4f2d12468495208b3398 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 IBM Corporation and Others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Daisuke SATO - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.ai.screenreader.jaws.script;
import java.awt.event.KeyEvent;
import java.util.HashMap;
import java.util.Iterator;
public class KeyConverter {
private static HashMap<Integer, String> k2s = new HashMap<Integer, String>();
private static HashMap<String, Integer> s2k = new HashMap<String, Integer>();
static {
k2s.put(KeyEvent.VK_0, "0");
k2s.put(KeyEvent.VK_1, "1");
k2s.put(KeyEvent.VK_2, "2");
k2s.put(KeyEvent.VK_3, "3");
k2s.put(KeyEvent.VK_4, "4");
k2s.put(KeyEvent.VK_5, "5");
k2s.put(KeyEvent.VK_6, "6");
k2s.put(KeyEvent.VK_7, "7");
k2s.put(KeyEvent.VK_8, "8");
k2s.put(KeyEvent.VK_9, "9");
k2s.put(KeyEvent.VK_NUMPAD0, "NumPad0");
k2s.put(KeyEvent.VK_NUMPAD1, "NumPad1");
k2s.put(KeyEvent.VK_NUMPAD2, "NumPad2");
k2s.put(KeyEvent.VK_NUMPAD3, "NumPad3");
k2s.put(KeyEvent.VK_NUMPAD4, "NumPad4");
k2s.put(KeyEvent.VK_NUMPAD5, "NumPad5");
k2s.put(KeyEvent.VK_NUMPAD6, "NumPad6");
k2s.put(KeyEvent.VK_NUMPAD7, "NumPad7");
k2s.put(KeyEvent.VK_NUMPAD8, "NumPad8");
k2s.put(KeyEvent.VK_NUMPAD9, "NumPad9");
k2s.put(KeyEvent.VK_A, "A");
k2s.put(KeyEvent.VK_B, "B");
k2s.put(KeyEvent.VK_C, "C");
k2s.put(KeyEvent.VK_D, "D");
k2s.put(KeyEvent.VK_E, "E");
k2s.put(KeyEvent.VK_F, "F");
k2s.put(KeyEvent.VK_G, "G");
k2s.put(KeyEvent.VK_H, "H");
k2s.put(KeyEvent.VK_I, "I");
k2s.put(KeyEvent.VK_J, "J");
k2s.put(KeyEvent.VK_K, "K");
k2s.put(KeyEvent.VK_L, "L");
k2s.put(KeyEvent.VK_M, "M");
k2s.put(KeyEvent.VK_N, "N");
k2s.put(KeyEvent.VK_O, "O");
k2s.put(KeyEvent.VK_P, "P");
k2s.put(KeyEvent.VK_Q, "Q");
k2s.put(KeyEvent.VK_R, "R");
k2s.put(KeyEvent.VK_S, "S");
k2s.put(KeyEvent.VK_T, "T");
k2s.put(KeyEvent.VK_U, "U");
k2s.put(KeyEvent.VK_V, "V");
k2s.put(KeyEvent.VK_W, "W");
k2s.put(KeyEvent.VK_X, "X");
k2s.put(KeyEvent.VK_Y, "Y");
k2s.put(KeyEvent.VK_Z, "Z");
k2s.put(KeyEvent.VK_F1, "F1");
k2s.put(KeyEvent.VK_F2, "F2");
k2s.put(KeyEvent.VK_F3, "F3");
k2s.put(KeyEvent.VK_F4, "F4");
k2s.put(KeyEvent.VK_F5, "F5");
k2s.put(KeyEvent.VK_F6, "F6");
k2s.put(KeyEvent.VK_F7, "F7");
k2s.put(KeyEvent.VK_F8, "F8");
k2s.put(KeyEvent.VK_F9, "F9");
k2s.put(KeyEvent.VK_F10, "F10");
k2s.put(KeyEvent.VK_F11, "F11");
k2s.put(KeyEvent.VK_F12, "F12");
k2s.put(KeyEvent.VK_F13, "F13");
k2s.put(KeyEvent.VK_F14, "F14");
k2s.put(KeyEvent.VK_F15, "F15");
k2s.put(KeyEvent.VK_F16, "F16");
k2s.put(KeyEvent.VK_F17, "F17");
k2s.put(KeyEvent.VK_F18, "F18");
k2s.put(KeyEvent.VK_F19, "F19");
k2s.put(KeyEvent.VK_F20, "F20");
k2s.put(KeyEvent.VK_F21, "F21");
k2s.put(KeyEvent.VK_F22, "F22");
k2s.put(KeyEvent.VK_F23, "F23");
k2s.put(KeyEvent.VK_F24, "F24");
k2s.put(KeyEvent.VK_BACK_SPACE, "Backspace");
k2s.put(KeyEvent.VK_BACK_QUOTE, "`");
k2s.put(KeyEvent.VK_CLEAR, "Clear");
k2s.put(KeyEvent.VK_COLON, "Colon");
k2s.put(KeyEvent.VK_CLOSE_BRACKET, "]");
k2s.put(KeyEvent.VK_COMMA, ",");
k2s.put(KeyEvent.VK_DELETE, "Delete");
k2s.put(KeyEvent.VK_DOLLAR, "$");
k2s.put(KeyEvent.VK_DOWN, "DownArrow");
k2s.put(KeyEvent.VK_EQUALS, "Equals");
k2s.put(KeyEvent.VK_ESCAPE, "Escape");
k2s.put(KeyEvent.VK_ALT, "Alt");
k2s.put(13, "Enter");
k2s.put(KeyEvent.VK_END, "End");
k2s.put(KeyEvent.VK_HOME, "Home");
k2s.put(KeyEvent.VK_INSERT, "Insert");
k2s.put(KeyEvent.VK_LEFT, "LeftArrow");
k2s.put(KeyEvent.VK_MINUS, "-");
k2s.put(KeyEvent.VK_OPEN_BRACKET, "[");
k2s.put(KeyEvent.VK_PAUSE, "Pause");
k2s.put(KeyEvent.VK_PAGE_DOWN, "PageDown");
k2s.put(KeyEvent.VK_PAGE_UP, "PageUp");
k2s.put(KeyEvent.VK_PERIOD, ".");
k2s.put(KeyEvent.VK_PLUS, "+");
k2s.put(KeyEvent.VK_RIGHT, "RightArrow");
k2s.put(KeyEvent.VK_SEMICOLON, ";");
k2s.put(KeyEvent.VK_SEPARATER, "|");
k2s.put(KeyEvent.VK_SLASH, "/");
k2s.put(KeyEvent.VK_SPACE, "Space");
k2s.put(KeyEvent.VK_TAB, "Tab");
k2s.put(KeyEvent.VK_UNDERSCORE, "_");
k2s.put(KeyEvent.VK_UP, "UpArrow");
k2s.put(KeyEvent.VK_CONTROL, "Control");
k2s.put(KeyEvent.VK_SHIFT, "Shift");
for (Iterator<Integer> i = k2s.keySet().iterator(); i.hasNext();) {
int key = i.next();
s2k.put(k2s.get(key).toLowerCase(), key);
}
s2k.put("numpadplus", KeyEvent.VK_PLUS);
s2k.put("numpadminus", KeyEvent.VK_MINUS);
s2k.put("numpadslash", KeyEvent.VK_SLASH);
s2k.put("numpadstar", KeyEvent.VK_ASTERISK);
s2k.put("homerow", KeyEvent.VK_HOME);
s2k.put("extendedleftarrow", KeyEvent.VK_LEFT);
s2k.put("extendedrightarrow", KeyEvent.VK_RIGHT);
s2k.put("extendeduparrow", KeyEvent.VK_UP);
s2k.put("extendeddownarrow", KeyEvent.VK_DOWN);
s2k.put("comma", KeyEvent.VK_COMMA);
s2k.put("period", KeyEvent.VK_PERIOD);
s2k.put("apostrophe", KeyEvent.VK_QUOTE);
s2k.put("leftbracket", KeyEvent.VK_OPEN_BRACKET);
s2k.put("rightbracket", KeyEvent.VK_CLOSE_BRACKET);
s2k.put("semicolon", KeyEvent.VK_SEMICOLON);
}
public static boolean isIt(int value, int mask) {
return (value & mask) == mask;
}
public static int convert(String key) {
Integer i = s2k.get(key.toLowerCase());
if (i == null) {
return 0;
}
return i.intValue();
}
public static String convert(int key, int modifier) {
StringBuffer sb = new StringBuffer();
if (isIt(modifier, KeyEvent.ALT_MASK)) {
sb.append("Alt+");
}
if (isIt(modifier, KeyEvent.CTRL_MASK)) {
sb.append("Control+");
}
if (isIt(modifier, KeyEvent.SHIFT_MASK)) {
sb.append("Shift+");
}
String s = k2s.get(new Integer(key));
if (s == null) {
System.err.println("ERROR convert "+key);
System.exit(0);
}
sb.append(s);
return sb.toString();
}
}