package br.com.etyllica.core.event;
public class KeyEvent {
private int id = 0;
private int key;
private KeyState state;
private int amount = Character.getNumericValue('\0');
private long timestamp = -1;
private boolean consumed = false;
public KeyEvent(int key, KeyState state) {
super();
this.key = key;
this.state = state;
}
public KeyEvent(int key, int amount, KeyState state) {
super();
this.key = key;
this.amount = amount;
this.state = state;
}
public KeyEvent(int id, int key, int amount, KeyState state) {
super();
this.id = id;
this.key = key;
this.amount = amount;
this.state = state;
}
public KeyEvent(int id, int key, int amount, KeyState state, long timestamp) {
super();
this.id = id;
this.key = key;
this.amount = amount;
this.state = state;
this.timestamp = timestamp;
}
public boolean isKeyDown(int keyCode) {
if(consumed) {
return false;
}
return this.key == keyCode && state == KeyState.PRESSED;
}
public boolean isAnyKeyDown(int ... keyCodes) {
if(consumed)
return false;
for(int keyCode : keyCodes) {
if(isKeyDown(keyCode)) {
return true;
}
}
return false;
}
public boolean isKeyUp(int keyCode) {
if(consumed) {
return false;
}
return this.key == keyCode && state == KeyState.RELEASED;
}
public boolean isAnyKeyUp(int ... keyCodes) {
if(consumed) {
return false;
}
for(int keyCode : keyCodes) {
if(isKeyUp(keyCode)) {
return true;
}
}
return false;
}
public char getChar() {
if(amount > Character.MIN_VALUE && amount < Character.MAX_VALUE) {
return (char) amount;
}
return CHAR_UNDEFINED;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getKey() {
return key;
}
public void setKey(int key) {
this.key = key;
}
public KeyState getState() {
return state;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public long getTimestamp() {
if(timestamp < 0) {
return System.currentTimeMillis();
}
return timestamp;
}
public void consume() {
consumed = true;
}
public void setConsumed(boolean consumed) {
this.consumed = consumed;
}
public static final char CHAR_UNDEFINED = 65535; //Locations
public static final int KEY_LOCATION_LEFT = 2;
public static final int KEY_LOCATION_NUMPAD = 4;
public static final int KEY_LOCATION_RIGHT = 3;
public static final int KEY_LOCATION_STANDARD = 1;
public static final int KEY_LOCATION_UNKNOWN = 0; //Keys
//Virtual Keys
public static final int VK_0 = 48;
public static final int VK_1 = 49;
public static final int VK_2 = 50;
public static final int VK_3 = 51;
public static final int VK_4 = 52;
public static final int VK_5 = 53;
public static final int VK_6 = 54;
public static final int VK_7 = 55;
public static final int VK_8 = 56;
public static final int VK_9 = 57;
public static final int VK_A = 65;
public static final int VK_ACCEPT = 30;
public static final int VK_ADD = 107;
public static final int VK_AGAIN = 65481;
public static final int VK_ALL_CANDIDATES = 256;
public static final int VK_ALPHANUMERIC = 240;
public static final int VK_ALT = 18;
public static final int VK_ALT_GRAPH = 65406;
public static final int VK_AMPERSAND = 150;
public static final int VK_ASTERISK = 151;
public static final int VK_AT = 512;
public static final int VK_B = 66;
public static final int VK_BACK_QUOTE = 192;
public static final int VK_BACK_SLASH = 92;
public static final int VK_BACK_SPACE = 8;
public static final int VK_BEGIN = 65368;
public static final int VK_BRACELEFT = 161;
public static final int VK_BRACERIGHT = 162;
public static final int VK_C = 67;
public static final int VK_CANCEL = 3;
public static final int VK_CAPS_LOCK = 20;
public static final int VK_CIRCUMFLEX = 514;
public static final int VK_CLEAR = 12;
public static final int VK_CLOSE_BRACKET = 93;
public static final int VK_CODE_INPUT = 258;
public static final int VK_COLON = 513;
public static final int VK_COMMA = 44;
public static final int VK_COMPOSE = 65312;
public static final int VK_CONTEXT_MENU = 525;
public static final int VK_CONTROL = 17;
public static final int VK_CONVERT = 28;
public static final int VK_COPY = 65485;
public static final int VK_CUT = 65489;
public static final int VK_D = 68;
public static final int VK_DEAD_ABOVEDOT = 134;
public static final int VK_DEAD_ABOVERING = 136;
public static final int VK_DEAD_ACUTE = 129;
public static final int VK_DEAD_BREVE = 133;
public static final int VK_DEAD_CARON = 138;
public static final int VK_DEAD_CEDILLA = 139;
public static final int VK_DEAD_CIRCUMFLEX = 130;
public static final int VK_DEAD_DIAERESIS = 135;
public static final int VK_DEAD_DOUBLEACUTE = 137;
public static final int VK_DEAD_GRAVE = 128;
public static final int VK_DEAD_IOTA = 141;
public static final int VK_DEAD_MACRON = 132;
public static final int VK_DEAD_OGONEK = 140;
public static final int VK_DEAD_SEMIVOICED_SOUND = 143;
public static final int VK_DEAD_TILDE = 131;
public static final int VK_DEAD_VOICED_SOUND = 142;
public static final int VK_DECIMAL = 110;
public static final int VK_DELETE = 127;
public static final int VK_DIVIDE = 111;
public static final int VK_DOLLAR = 515;
public static final int VK_DOWN = 40;
public static final int VK_E = 69;
public static final int VK_END = 35;
public static final int VK_ENTER = 10;
public static final int VK_EQUALS = 61;
public static final int VK_ESCAPE = 27;
public static final int VK_EURO_SIGN = 516;
public static final int VK_EXCLAMATION_MARK = 517;
public static final int VK_F = 70;
public static final int VK_F1 = 112;
public static final int VK_F10 = 121;
public static final int VK_F11 = 122;
public static final int VK_F12 = 123;
public static final int VK_F13 = 61440;
public static final int VK_F14 = 61441;
public static final int VK_F15 = 61442;
public static final int VK_F16 = 61443;
public static final int VK_F17 = 61444;
public static final int VK_F18 = 61445;
public static final int VK_F19 = 61446;
public static final int VK_F2 = 113;
public static final int VK_F20 = 61447;
public static final int VK_F21 = 61448;
public static final int VK_F22 = 61449;
public static final int VK_F23 = 61450;
public static final int VK_F24 = 61451;
public static final int VK_F3 = 114;
public static final int VK_F4 = 115;
public static final int VK_F5 = 116;
public static final int VK_F6 = 117;
public static final int VK_F7 = 118;
public static final int VK_F8 = 119;
public static final int VK_F9 = 120;
public static final int VK_FINAL = 24;
public static final int VK_FIND = 65488;
public static final int VK_FULL_WIDTH = 243;
public static final int VK_G = 71;
public static final int VK_GREATER = 160;
public static final int VK_H = 72;
public static final int VK_HALF_WIDTH = 244;
public static final int VK_HELP = 156;
public static final int VK_HIRAGANA = 242;
public static final int VK_HOME = 36;
public static final int VK_I = 73;
public static final int VK_INPUT_METHOD_ON_OFF = 263;
public static final int VK_INSERT = 155;
public static final int VK_INVERTED_EXCLAMATION_MARK = 518;
public static final int VK_J = 74;
public static final int VK_JAPANESE_HIRAGANA = 260;
public static final int VK_JAPANESE_KATAKANA = 259;
public static final int VK_JAPANESE_ROMAN = 261;
public static final int VK_K = 75;
public static final int VK_KANA = 21;
public static final int VK_KANA_LOCK = 262;
public static final int VK_KANJI = 25;
public static final int VK_KATAKANA = 241;
public static final int VK_KP_DOWN = 225;
public static final int VK_KP_LEFT = 226;
public static final int VK_KP_RIGHT = 227;
public static final int VK_KP_UP = 224;
public static final int VK_L = 76;
public static final int VK_LEFT = 37;
public static final int VK_LEFT_PARENTHESIS = 519;
public static final int VK_LESS = 153;
public static final int VK_M = 77;
public static final int VK_META = 157;
public static final int VK_MINUS = 45;
public static final int VK_MODECHANGE = 31;
public static final int VK_MULTIPLY = 106;
public static final int VK_N = 78;
public static final int VK_NONCONVERT = 29;
public static final int VK_NUM_LOCK = 144;
public static final int VK_NUMBER_SIGN = 520;
public static final int VK_NUMPAD0 = 96;
public static final int VK_NUMPAD1 = 97;
public static final int VK_NUMPAD2 = 98;
public static final int VK_NUMPAD3 = 99;
public static final int VK_NUMPAD4 = 100;
public static final int VK_NUMPAD5 = 101;
public static final int VK_NUMPAD6 = 102;
public static final int VK_NUMPAD7 = 103;
public static final int VK_NUMPAD8 = 104;
public static final int VK_NUMPAD9 = 105;
public static final int VK_O = 79;
public static final int VK_OPEN_BRACKET = 91;
public static final int VK_P = 80;
public static final int VK_PAGE_DOWN = 34;
public static final int VK_PAGE_UP = 33;
public static final int VK_PASTE = 65487;
public static final int VK_PAUSE = 19;
public static final int VK_PERIOD = 46;
public static final int VK_PLUS = 521;
public static final int VK_PREVIOUS_CANDIDATE = 257;
public static final int VK_PRINTSCREEN = 154;
public static final int VK_PROPS = 65482;
public static final int VK_Q = 81;
public static final int VK_QUOTE = 222;
public static final int VK_QUOTEDBL = 152;
public static final int VK_DOUBLE_QUOTE = VK_QUOTEDBL;
public static final int VK_R = 82;
public static final int VK_RIGHT = 39;
public static final int VK_RIGHT_PARENTHESIS = 522;
public static final int VK_ROMAN_CHARACTERS = 245;
public static final int VK_S = 83;
public static final int VK_SCROLL_LOCK = 145;
public static final int VK_SEMICOLON = 59;
public static final int VK_SEPARATER = 108;
public static final int VK_SEPARATOR = 108;
public static final int VK_SHIFT = 16;
public static final int VK_SLASH = 47;
public static final int VK_SPACE = 32;
public static final int VK_STOP = 65480;
public static final int VK_SUBTRACT = 109;
public static final int VK_T = 84;
public static final int VK_TAB = 9;
public static final int VK_U = 85;
public static final int VK_UNDEFINED = 0;
public static final int VK_UNDERSCORE = 523;
public static final int VK_UNDO = 65483;
public static final int VK_UP = 38;
public static final int VK_V = 86;
public static final int VK_W = 87;
public static final int VK_WINDOWS = 524;
public static final int VK_X = 88;
public static final int VK_Y = 89;
public static final int VK_Z = 90;
public static final int VK_ALT_RIGHT = KEY_LOCATION_RIGHT*100+VK_ALT;
public static final int VK_ALT_LEFT = KEY_LOCATION_LEFT*100+VK_ALT;
public static final int VK_CTRL = VK_CONTROL;
public static final int VK_CTRL_RIGHT = KEY_LOCATION_RIGHT*100+VK_CTRL;
public static final int VK_CTRL_LEFT = KEY_LOCATION_LEFT*100+VK_CTRL;
public static final int VK_SHIFT_RIGHT = KEY_LOCATION_RIGHT*100+VK_SHIFT;
public static final int VK_SHIFT_LEFT = KEY_LOCATION_LEFT*100+VK_SHIFT;
public static final int VK_NUMPAD_0 = KEY_LOCATION_NUMPAD*100+VK_0+48;
public static final int VK_NUMPAD_1 = KEY_LOCATION_NUMPAD*100+VK_1+48;
public static final int VK_NUMPAD_2 = KEY_LOCATION_NUMPAD*100+VK_2+48;
public static final int VK_NUMPAD_3 = KEY_LOCATION_NUMPAD*100+VK_3+48;
public static final int VK_NUMPAD_4 = KEY_LOCATION_NUMPAD*100+VK_4+48;
public static final int VK_NUMPAD_5 = KEY_LOCATION_NUMPAD*100+VK_5+48;
public static final int VK_NUMPAD_6 = KEY_LOCATION_NUMPAD*100+VK_6+48;
public static final int VK_NUMPAD_7 = KEY_LOCATION_NUMPAD*100+VK_7+48;
public static final int VK_NUMPAD_8 = KEY_LOCATION_NUMPAD*100+VK_8+48;
public static final int VK_NUMPAD_9 = KEY_LOCATION_NUMPAD*100+VK_9+48;
public static final int VK_NUMPAD_DEL = KEY_LOCATION_NUMPAD*100+VK_DELETE-19;
public static final int VK_NUMPAD_INS = KEY_LOCATION_NUMPAD*100+VK_INSERT;
public static final int VK_NUMPAD_ENTER = KEY_LOCATION_NUMPAD*100+VK_ENTER;
public static final int VK_NUMPAD_DOWN_ARROW = KEY_LOCATION_NUMPAD*100+VK_DOWN+185;
public static final int VK_NUMPAD_UP_ARROW = KEY_LOCATION_NUMPAD*100+VK_UP+186;
public static final int VK_NUMPAD_RIGHT_ARROW = KEY_LOCATION_NUMPAD*100+VK_RIGHT+188;
public static final int VK_NUMPAD_LEFT_ARROW = KEY_LOCATION_NUMPAD*100+VK_LEFT+189;
public static final int VK_ABRE_COLCHETES = VK_OPEN_BRACKET;
public static final int VK_FECHA_COLCHETES = VK_CLOSE_BRACKET;
public static final int VK_ABRE_CHAVES = VK_BRACELEFT;
public static final int VK_FECHA_CHAVES = VK_BRACERIGHT;
public static final int VK_ARROBA = VK_AT;
public static final int VK_PONTO = VK_PERIOD;
public static final int VK_VIRGULA = VK_COMMA;
public static final int VK_DOIS_PONTOS = VK_COLON;
//Japanese Keys
public static final int VK_ROMAJI = VK_JAPANESE_ROMAN;
//Custom Keys
//Shortcuts
public static final int VK_UP_ARROW = VK_UP;
public static final int VK_DOWN_ARROW = VK_DOWN;
public static final int VK_LEFT_ARROW = VK_LEFT;
public static final int VK_RIGHT_ARROW = VK_RIGHT;
public static final int VK_DEL = VK_DELETE;
public static final int VK_ESC = VK_ESCAPE;
public static final int VK_SUPER = VK_WINDOWS;
//Mobile Keys
public static final int VK_BACK = VK_ESC;
public static final int VK_HOME_SCREEN = VK_HOME;
public static final int VK_RECENT_APPS = 599;
//Joystick Keys
public static final int VK_JOYSTICK_UP = JoystickEvent.UP;
public static final int VK_JOYSTICK_DOWN = JoystickEvent.DOWN;
public static final int VK_JOYSTICK_CENTER_Y = JoystickEvent.CENTER_Y;
public static final int VK_JOYSTICK_LEFT = JoystickEvent.LEFT;
public static final int VK_JOYSTICK_RIGHT = JoystickEvent.RIGHT;
public static final int VK_JOYSTICK_CENTER_X = JoystickEvent.CENTER_X;
public static final int VK_JOYSTICK_BUTTON_1 = JoystickEvent.BUTTON_1;
public static final int VK_JOYSTICK_BUTTON_2 = JoystickEvent.BUTTON_2;
public static final int VK_JOYSTICK_BUTTON_3 = JoystickEvent.BUTTON_3;
public static final int VK_JOYSTICK_BUTTON_4 = JoystickEvent.BUTTON_4;
public static final int VK_JOYSTICK_BUTTON_5 = JoystickEvent.BUTTON_5;
public static final int VK_JOYSTICK_BUTTON_6 = JoystickEvent.BUTTON_6;
public static final int VK_JOYSTICK_BUTTON_7 = JoystickEvent.BUTTON_7;
public static final int VK_JOYSTICK_BUTTON_8 = JoystickEvent.BUTTON_8;
public static final int VK_JOYSTICK_BUTTON_9 = JoystickEvent.BUTTON_9;
public static final int VK_JOYSTICK_BUTTON_10 = JoystickEvent.BUTTON_10;
public static final int VK_JOYSTICK_BUTTON_11 = JoystickEvent.BUTTON_11;
public static final int VK_JOYSTICK_BUTTON_12 = JoystickEvent.BUTTON_12;
public static final int VK_NONE = 0;
}