2
* Copyright 2010-2011, Sikuli.org
3
* Released under the MIT License.
6
package org.sikuli.script;
8
import java.awt.event.KeyEvent;
11
public static final String SPACE = " ";
12
public static final String ENTER = "\n";
13
public static final String BACKSPACE = "\b";
14
public static final String TAB = "\t";
15
public static final String ESC = "\u001b";
16
public static final char C_ESC = '\u001b';
17
public static final String UP = "\ue000";
18
public static final char C_UP = '\ue000';
19
public static final String RIGHT = "\ue001";
20
public static final char C_RIGHT = '\ue001';
21
public static final String DOWN = "\ue002";
22
public static final char C_DOWN = '\ue002';
23
public static final String LEFT = "\ue003";
24
public static final char C_LEFT = '\ue003';
25
public static final String PAGE_UP = "\ue004";
26
public static final char C_PAGE_UP = '\ue004';
27
public static final String PAGE_DOWN = "\ue005";
28
public static final char C_PAGE_DOWN = '\ue005';
29
public static final String DELETE = "\ue006";
30
public static final char C_DELETE = '\ue006';
31
public static final String END = "\ue007";
32
public static final char C_END = '\ue007';
33
public static final String HOME = "\ue008";
34
public static final char C_HOME = '\ue008';
35
public static final String INSERT = "\ue009";
36
public static final char C_INSERT = '\ue009';
37
public static final String F1 = "\ue011";
38
public static final char C_F1 = '\ue011';
39
public static final String F2 = "\ue012";
40
public static final char C_F2 = '\ue012';
41
public static final String F3 = "\ue013";
42
public static final char C_F3 = '\ue013';
43
public static final String F4 = "\ue014";
44
public static final char C_F4 = '\ue014';
45
public static final String F5 = "\ue015";
46
public static final char C_F5 = '\ue015';
47
public static final String F6 = "\ue016";
48
public static final char C_F6 = '\ue016';
49
public static final String F7 = "\ue017";
50
public static final char C_F7 = '\ue017';
51
public static final String F8 = "\ue018";
52
public static final char C_F8 = '\ue018';
53
public static final String F9 = "\ue019";
54
public static final char C_F9 = '\ue019';
55
public static final String F10 = "\ue01A";
56
public static final char C_F10 = '\ue01A';
57
public static final String F11 = "\ue01B";
58
public static final char C_F11 = '\ue01B';
59
public static final String F12 = "\ue01C";
60
public static final char C_F12 = '\ue01C';
61
public static final String F13 = "\ue01D";
62
public static final char C_F13 = '\ue01D';
63
public static final String F14 = "\ue01E";
64
public static final char C_F14 = '\ue01E';
65
public static final String F15 = "\ue01F";
66
public static final char C_F15 = '\ue01F';
67
public static final String SHIFT = "\ue020";
68
public static final char C_SHIFT = '\ue020';
69
public static final String CTRL = "\ue021";
70
public static final char C_CTRL = '\ue021';
71
public static final String ALT = "\ue022";
72
public static final char C_ALT = '\ue022';
73
public static final String META = "\ue023";
74
public static final char C_META = '\ue023';
75
public static final String CMD = "\ue023";
76
public static final char C_CMD = '\ue023';
77
public static final String WIN = "\ue023";
78
public static final char C_WIN = '\ue023';
79
public static final String PRINTSCREEN = "\ue024";
80
public static final char C_PRINTSCREEN = '\ue024';
81
public static final String SCROLL_LOCK = "\ue025";
82
public static final char C_SCROLL_LOCK = '\ue025';
83
public static final String PAUSE = "\ue026";
84
public static final char C_PAUSE = '\ue026';
85
public static final String CAPS_LOCK = "\ue027";
86
public static final char C_CAPS_LOCK = '\ue027';
87
public static final String NUM0 = "\ue030";
88
public static final char C_NUM0 = '\ue030';
89
public static final String NUM1 = "\ue031";
90
public static final char C_NUM1 = '\ue031';
91
public static final String NUM2 = "\ue032";
92
public static final char C_NUM2 = '\ue032';
93
public static final String NUM3 = "\ue033";
94
public static final char C_NUM3 = '\ue033';
95
public static final String NUM4 = "\ue034";
96
public static final char C_NUM4 = '\ue034';
97
public static final String NUM5 = "\ue035";
98
public static final char C_NUM5 = '\ue035';
99
public static final String NUM6 = "\ue036";
100
public static final char C_NUM6 = '\ue036';
101
public static final String NUM7 = "\ue037";
102
public static final char C_NUM7 = '\ue037';
103
public static final String NUM8 = "\ue038";
104
public static final char C_NUM8 = '\ue038';
105
public static final String NUM9 = "\ue039";
106
public static final char C_NUM9 = '\ue039';
107
public static final String SEPARATOR = "\ue03A";
108
public static final char C_SEPARATOR = '\ue03A';
109
public static final String NUM_LOCK = "\ue03B";
110
public static final char C_NUM_LOCK = '\ue03B';
111
public static final String ADD = "\ue03C";
112
public static final char C_ADD = '\ue03C';
113
public static final String MINUS = "\ue03D";
114
public static final char C_MINUS = '\ue03D';
115
public static final String MULTIPLY = "\ue03E";
116
public static final char C_MULTIPLY = '\ue03E';
117
public static final String DIVIDE = "\ue03F";
118
public static final char C_DIVIDE = '\ue03F';
121
* Convert Sikuli Key to Java virtual key code
123
public static int[] toJavaKeyCode(String key){
125
return toJavaKeyCode(key.charAt(0));
130
* Convert Sikuli Key to Java virtual key code
132
public static int[] toJavaKeyCode(char key){
134
case 'a': return new int[] {KeyEvent.VK_A};
135
case 'b': return new int[] {KeyEvent.VK_B};
136
case 'c': return new int[] {KeyEvent.VK_C};
137
case 'd': return new int[] {KeyEvent.VK_D};
138
case 'e': return new int[] {KeyEvent.VK_E};
139
case 'f': return new int[] {KeyEvent.VK_F};
140
case 'g': return new int[] {KeyEvent.VK_G};
141
case 'h': return new int[] {KeyEvent.VK_H};
142
case 'i': return new int[] {KeyEvent.VK_I};
143
case 'j': return new int[] {KeyEvent.VK_J};
144
case 'k': return new int[] {KeyEvent.VK_K};
145
case 'l': return new int[] {KeyEvent.VK_L};
146
case 'm': return new int[] {KeyEvent.VK_M};
147
case 'n': return new int[] {KeyEvent.VK_N};
148
case 'o': return new int[] {KeyEvent.VK_O};
149
case 'p': return new int[] {KeyEvent.VK_P};
150
case 'q': return new int[] {KeyEvent.VK_Q};
151
case 'r': return new int[] {KeyEvent.VK_R};
152
case 's': return new int[] {KeyEvent.VK_S};
153
case 't': return new int[] {KeyEvent.VK_T};
154
case 'u': return new int[] {KeyEvent.VK_U};
155
case 'v': return new int[] {KeyEvent.VK_V};
156
case 'w': return new int[] {KeyEvent.VK_W};
157
case 'x': return new int[] {KeyEvent.VK_X};
158
case 'y': return new int[] {KeyEvent.VK_Y};
159
case 'z': return new int[] {KeyEvent.VK_Z};
160
case 'A': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_A};
161
case 'B': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_B};
162
case 'C': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_C};
163
case 'D': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_D};
164
case 'E': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_E};
165
case 'F': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_F};
166
case 'G': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_G};
167
case 'H': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_H};
168
case 'I': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_I};
169
case 'J': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_J};
170
case 'K': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_K};
171
case 'L': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_L};
172
case 'M': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_M};
173
case 'N': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_N};
174
case 'O': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_O};
175
case 'P': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_P};
176
case 'Q': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_Q};
177
case 'R': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_R};
178
case 'S': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_S};
179
case 'T': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_T};
180
case 'U': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_U};
181
case 'V': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_V};
182
case 'W': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_W};
183
case 'X': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_X};
184
case 'Y': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_Y};
185
case 'Z': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_Z};
186
case '`': return new int[] {KeyEvent.VK_BACK_QUOTE};
187
case '0': return new int[] {KeyEvent.VK_0};
188
case '1': return new int[] {KeyEvent.VK_1};
189
case '2': return new int[] {KeyEvent.VK_2};
190
case '3': return new int[] {KeyEvent.VK_3};
191
case '4': return new int[] {KeyEvent.VK_4};
192
case '5': return new int[] {KeyEvent.VK_5};
193
case '6': return new int[] {KeyEvent.VK_6};
194
case '7': return new int[] {KeyEvent.VK_7};
195
case '8': return new int[] {KeyEvent.VK_8};
196
case '9': return new int[] {KeyEvent.VK_9};
197
case '-': return new int[] {KeyEvent.VK_MINUS};
198
case '=': return new int[] {KeyEvent.VK_EQUALS};
199
case '~': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_BACK_QUOTE};
200
case '!': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_1};
201
case '@': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_2};
202
case '#': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_3};
203
case '$': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_4};
204
case '%': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_5};
205
case '^': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_6};
206
case '&': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_7};
207
case '*': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_8};
208
case '(': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_9};
209
case ')': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_0};
210
case '_': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_MINUS};
211
case '+': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_EQUALS};
212
case '\b':return new int[] {KeyEvent.VK_BACK_SPACE};
213
case '\t':return new int[] {KeyEvent.VK_TAB};
214
case '\r':return new int[] {KeyEvent.VK_ENTER};
215
case '\n':return new int[] {KeyEvent.VK_ENTER};
216
case '[': return new int[] {KeyEvent.VK_OPEN_BRACKET};
217
case ']': return new int[] {KeyEvent.VK_CLOSE_BRACKET};
218
case '\\':return new int[] {KeyEvent.VK_BACK_SLASH};
219
case '{': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_OPEN_BRACKET};
220
case '}': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_CLOSE_BRACKET};
221
case '|': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_BACK_SLASH};
222
case ';': return new int[] {KeyEvent.VK_SEMICOLON};
223
case ':': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_SEMICOLON};
224
case '\'':return new int[] {KeyEvent.VK_QUOTE};
225
case '"': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_QUOTE};
226
case ',': return new int[] {KeyEvent.VK_COMMA};
227
case '<': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_COMMA};
228
case '.': return new int[] {KeyEvent.VK_PERIOD};
229
case '>': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_PERIOD};
230
case '/': return new int[] {KeyEvent.VK_SLASH};
231
case '?': return new int[] {KeyEvent.VK_SHIFT, KeyEvent.VK_SLASH};
232
case ' ': return new int[] {KeyEvent.VK_SPACE};
233
case Key.C_ESC : return new int[] {KeyEvent.VK_ESCAPE};
234
case Key.C_UP : return new int[] {KeyEvent.VK_UP};
235
case Key.C_RIGHT : return new int[] {KeyEvent.VK_RIGHT};
236
case Key.C_DOWN : return new int[] {KeyEvent.VK_DOWN};
237
case Key.C_LEFT : return new int[] {KeyEvent.VK_LEFT};
238
case Key.C_PAGE_UP : return new int[] {KeyEvent.VK_PAGE_UP};
239
case Key.C_PAGE_DOWN : return new int[] {KeyEvent.VK_PAGE_DOWN};
240
case Key.C_DELETE : return new int[] {KeyEvent.VK_DELETE};
241
case Key.C_END : return new int[] {KeyEvent.VK_END};
242
case Key.C_HOME : return new int[] {KeyEvent.VK_HOME};
243
case Key.C_INSERT : return new int[] {KeyEvent.VK_INSERT};
244
case Key.C_F1 : return new int[] {KeyEvent.VK_F1};
245
case Key.C_F2 : return new int[] {KeyEvent.VK_F2};
246
case Key.C_F3 : return new int[] {KeyEvent.VK_F3};
247
case Key.C_F4 : return new int[] {KeyEvent.VK_F4};
248
case Key.C_F5 : return new int[] {KeyEvent.VK_F5};
249
case Key.C_F6 : return new int[] {KeyEvent.VK_F6};
250
case Key.C_F7 : return new int[] {KeyEvent.VK_F7};
251
case Key.C_F8 : return new int[] {KeyEvent.VK_F8};
252
case Key.C_F9 : return new int[] {KeyEvent.VK_F9};
253
case Key.C_F10 : return new int[] {KeyEvent.VK_F10};
254
case Key.C_F11 : return new int[] {KeyEvent.VK_F11};
255
case Key.C_F12 : return new int[] {KeyEvent.VK_F12};
256
case Key.C_F13 : return new int[] {KeyEvent.VK_F13};
257
case Key.C_F14 : return new int[] {KeyEvent.VK_F14};
258
case Key.C_F15 : return new int[] {KeyEvent.VK_F15};
259
case Key.C_SHIFT : return new int[] {KeyEvent.VK_SHIFT};
260
case Key.C_CTRL : return new int[] {KeyEvent.VK_CONTROL};
261
case Key.C_ALT : return new int[] {KeyEvent.VK_ALT};
262
case Key.C_META : return new int[] {KeyEvent.VK_META};
263
case Key.C_PRINTSCREEN: return new int[] {KeyEvent.VK_PRINTSCREEN};
264
case Key.C_SCROLL_LOCK: return new int[] {KeyEvent.VK_SCROLL_LOCK};
265
case Key.C_PAUSE : return new int[] {KeyEvent.VK_PAUSE};
266
case Key.C_CAPS_LOCK : return new int[] {KeyEvent.VK_CAPS_LOCK};
267
case Key.C_NUM0 : return new int[] {KeyEvent.VK_NUMPAD0};
268
case Key.C_NUM1 : return new int[] {KeyEvent.VK_NUMPAD1};
269
case Key.C_NUM2 : return new int[] {KeyEvent.VK_NUMPAD2};
270
case Key.C_NUM3 : return new int[] {KeyEvent.VK_NUMPAD3};
271
case Key.C_NUM4 : return new int[] {KeyEvent.VK_NUMPAD4};
272
case Key.C_NUM5 : return new int[] {KeyEvent.VK_NUMPAD5};
273
case Key.C_NUM6 : return new int[] {KeyEvent.VK_NUMPAD6};
274
case Key.C_NUM7 : return new int[] {KeyEvent.VK_NUMPAD7};
275
case Key.C_NUM8 : return new int[] {KeyEvent.VK_NUMPAD8};
276
case Key.C_NUM9 : return new int[] {KeyEvent.VK_NUMPAD9};
277
case Key.C_SEPARATOR : return new int[] {KeyEvent.VK_SEPARATOR};
278
case Key.C_NUM_LOCK : return new int[] {KeyEvent.VK_NUM_LOCK};
279
case Key.C_ADD : return new int[] {KeyEvent.VK_ADD};
280
case Key.C_MINUS : return new int[] {KeyEvent.VK_MINUS};
281
case Key.C_MULTIPLY : return new int[] {KeyEvent.VK_MULTIPLY};
282
case Key.C_DIVIDE : return new int[] {KeyEvent.VK_DIVIDE};
284
throw new IllegalArgumentException("Cannot convert character " + key);