1   package com.atlassian.selenium;
2   
3   import com.atlassian.selenium.keyboard.KeyEvent;
4   import com.atlassian.selenium.keyboard.KeyEventSequence;
5   import com.atlassian.webtest.ui.keys.KeyEventType;
6   import com.google.gson.Gson;
7   import com.google.gson.GsonBuilder;
8   import com.google.gson.reflect.TypeToken;
9   import junit.framework.TestCase;
10  
11  import java.io.BufferedReader;
12  import java.io.IOException;
13  import java.io.InputStreamReader;
14  import java.lang.reflect.Type;
15  import java.util.ArrayList;
16  import java.util.HashMap;
17  import java.util.HashSet;
18  import java.util.List;
19  import java.util.Map;
20  import java.util.Set;
21  import java.util.TreeMap;
22  
23  /**
24   * This test will generate to stdout the json for the character to keyevent mapping.
25   *
26   */
27  public class TestGenerateJSonKeyEventsForCharacters extends TestCase
28  {
29  
30      Set<Browser> allBrowsers = new HashSet<Browser>();
31      Set<Browser> firefoxOpera = new HashSet<Browser>();
32      Set<Browser> chromeIESafari = new HashSet<Browser>();
33      Set<Browser> fireFoxOnly = new HashSet<Browser>();
34  
35      final KeyEvent shiftKeyDown = new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_SHIFT,allBrowsers,true,false,false,false,true,false);
36      final KeyEvent shiftKeyUp = new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_SHIFT,allBrowsers,false,false,false,false,true,false);
37  
38      public void testCreateObjectsAndJSONify() throws Exception {
39          Map<String, KeyEventSequence> cksl = new TreeMap<String, KeyEventSequence>();
40          allBrowsers.add(Browser.CHROME);
41          allBrowsers.add(Browser.FIREFOX);
42          allBrowsers.add(Browser.IE);
43          allBrowsers.add(Browser.OPERA);
44          allBrowsers.add(Browser.SAFARI);
45          allBrowsers.add(Browser.UNKNOWN);
46          firefoxOpera.add(Browser.FIREFOX);
47          firefoxOpera.add(Browser.OPERA);
48          chromeIESafari.add(Browser.CHROME);
49          chromeIESafari.add(Browser.IE);
50          chromeIESafari.add(Browser.SAFARI);
51          fireFoxOnly.add(Browser.FIREFOX);
52          for (Character c = 'a'; c <= 'z'; c++ )
53          {
54              List<KeyEvent> ke = new ArrayList<KeyEvent>();
55              ke.add(new KeyEvent(KeyEventType.KEYDOWN,c.toString().toUpperCase().charAt(0),allBrowsers,false,false,false,false,true,false));
56              ke.add(new KeyEvent(KeyEventType.KEYPRESS,c,allBrowsers,false,false,false,false,false,true));
57              ke.add(new KeyEvent(KeyEventType.KEYUP,c.toString().toUpperCase().charAt(0),allBrowsers,false,false,false,false,true,false));
58              KeyEventSequence cks = new KeyEventSequence(c.toString(),ke);
59              cksl.put(cks.getIdentifier(),cks);
60          }
61          for (Character c = 'A'; c <= 'Z'; c++ )
62          {
63              List<KeyEvent> ke = new ArrayList<KeyEvent>();
64              ke.add(shiftKeyDown);
65              ke.add(new KeyEvent(KeyEventType.KEYDOWN,c.toString().toUpperCase().charAt(0),allBrowsers,true,false,false,false,true,false));
66              ke.add(new KeyEvent(KeyEventType.KEYPRESS,c,allBrowsers,true,false,false,false,false,true));
67              ke.add(new KeyEvent(KeyEventType.KEYUP,c.toString().toUpperCase().charAt(0),allBrowsers,true,false,false,false,true,false));
68              ke.add(shiftKeyUp);
69              KeyEventSequence cks = new KeyEventSequence(c.toString(),ke);
70              cksl.put(cks.getIdentifier(),cks);
71          }
72          for (Character c = '0'; c <= '9'; c++ )
73          {
74              List<KeyEvent> ke = new ArrayList<KeyEvent>();
75              ke.add(new KeyEvent(KeyEventType.KEYDOWN,c,allBrowsers,false,false,false,false,true,false));
76              ke.add(new KeyEvent(KeyEventType.KEYPRESS,c,allBrowsers,false,false,false,false,false,true));
77              ke.add(new KeyEvent(KeyEventType.KEYUP,c,allBrowsers,false,false,false,false,true,false));
78              KeyEventSequence cks = new KeyEventSequence(c.toString(),ke);
79              cksl.put(cks.getIdentifier(),cks);
80          }
81          //Now do the shifted versions of above
82          List<KeyEvent> ke = new ArrayList<KeyEvent>();
83          ke.add(shiftKeyDown);
84          ke.add(new KeyEvent(KeyEventType.KEYDOWN,'1',allBrowsers,true,false,false,false,true,false));
85          ke.add(new KeyEvent(KeyEventType.KEYPRESS,'!',allBrowsers,true,false,false,false,false,true));
86          ke.add(new KeyEvent(KeyEventType.KEYUP,'1',allBrowsers,true,false,false,false,true,false));
87          ke.add(shiftKeyUp);
88          KeyEventSequence cks = new KeyEventSequence("!",ke);
89          cksl.put(cks.getIdentifier(),cks);
90  
91          ke = new ArrayList<KeyEvent>();
92          ke.add(shiftKeyDown);
93          ke.add(new KeyEvent(KeyEventType.KEYDOWN,'2',allBrowsers,true,false,false,false,true,false));
94          ke.add(new KeyEvent(KeyEventType.KEYPRESS,'@',allBrowsers,true,false,false,false,false,true));
95          ke.add(new KeyEvent(KeyEventType.KEYUP,'2',allBrowsers,true,false,false,false,true,false));
96          ke.add(shiftKeyUp);
97          cks = new KeyEventSequence("@",ke);
98          cksl.put(cks.getIdentifier(),cks);
99  
100         ke = new ArrayList<KeyEvent>();
101         ke.add(shiftKeyDown);
102         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'3',allBrowsers,true,false,false,false,true,false));
103         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'#',allBrowsers,true,false,false,false,false,true));
104         ke.add(new KeyEvent(KeyEventType.KEYUP,'3',allBrowsers,true,false,false,false,true,false));
105         ke.add(shiftKeyUp);
106         cks = new KeyEventSequence("#",ke);
107         cksl.put(cks.getIdentifier(),cks);
108 
109         ke = new ArrayList<KeyEvent>();
110         ke.add(shiftKeyDown);
111         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'4',allBrowsers,true,false,false,false,true,false));
112         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'$',allBrowsers,true,false,false,false,false,true));
113         ke.add(new KeyEvent(KeyEventType.KEYUP,'4',allBrowsers,true,false,false,false,true,false));
114         ke.add(shiftKeyUp);
115         cks = new KeyEventSequence("$",ke);
116         cksl.put(cks.getIdentifier(),cks);
117 
118         ke = new ArrayList<KeyEvent>();
119         ke.add(shiftKeyDown);
120         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'5',allBrowsers,true,false,false,false,true,false));
121         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'%',allBrowsers,true,false,false,false,false,true));
122         ke.add(new KeyEvent(KeyEventType.KEYUP,'5',allBrowsers,true,false,false,false,true,false));
123         ke.add(shiftKeyUp);
124         cks = new KeyEventSequence("%",ke);
125         cksl.put(cks.getIdentifier(),cks);
126 
127         ke = new ArrayList<KeyEvent>();
128         ke.add(shiftKeyDown);
129         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'6',allBrowsers,true,false,false,false,true,false));
130         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'^',allBrowsers,true,false,false,false,false,true));
131         ke.add(new KeyEvent(KeyEventType.KEYUP,'6',allBrowsers,true,false,false,false,true,false));
132         ke.add(shiftKeyUp);
133         cks = new KeyEventSequence("^",ke);
134         cksl.put(cks.getIdentifier(),cks);
135 
136         ke = new ArrayList<KeyEvent>();
137         ke.add(shiftKeyDown);
138         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'7',allBrowsers,true,false,false,false,true,false));
139         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'&',allBrowsers,true,false,false,false,false,true));
140         ke.add(new KeyEvent(KeyEventType.KEYUP,'7',allBrowsers,true,false,false,false,true,false));
141         ke.add(shiftKeyUp);
142         cks = new KeyEventSequence("&",ke);
143         cksl.put(cks.getIdentifier(),cks);
144 
145         ke = new ArrayList<KeyEvent>();
146         ke.add(shiftKeyDown);
147         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'8',allBrowsers,true,false,false,false,true,false));
148         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'*',allBrowsers,true,false,false,false,false,true));
149         ke.add(new KeyEvent(KeyEventType.KEYUP,'8',allBrowsers,true,false,false,false,true,false));
150         ke.add(shiftKeyUp);
151         cks = new KeyEventSequence("*",ke);
152         cksl.put(cks.getIdentifier(),cks);
153 
154         ke = new ArrayList<KeyEvent>();
155         ke.add(shiftKeyDown);
156         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'9',allBrowsers,true,false,false,false,true,false));
157         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'(',allBrowsers,true,false,false,false,false,true));
158         ke.add(new KeyEvent(KeyEventType.KEYUP,'9',allBrowsers,true,false,false,false,true,false));
159         ke.add(shiftKeyUp);
160         cks = new KeyEventSequence("(",ke);
161         cksl.put(cks.getIdentifier(),cks);
162 
163         ke = new ArrayList<KeyEvent>();
164         ke.add(shiftKeyDown);
165         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'0',allBrowsers,true,false,false,false,true,false));
166         ke.add(new KeyEvent(KeyEventType.KEYPRESS,')',allBrowsers,true,false,false,false,false,true));
167         ke.add(new KeyEvent(KeyEventType.KEYUP,'0',allBrowsers,true,false,false,false,true,false));
168         ke.add(shiftKeyUp);
169         cks = new KeyEventSequence(")",ke);
170         cksl.put(cks.getIdentifier(),cks);
171 
172         ke = new ArrayList<KeyEvent>();
173         ke.add(new KeyEvent(KeyEventType.KEYDOWN,' ',allBrowsers,false,false,false,false,true,false));
174         ke.add(new KeyEvent(KeyEventType.KEYPRESS,' ',allBrowsers,false,false,false,false,false,true));
175         ke.add(new KeyEvent(KeyEventType.KEYUP,' ',allBrowsers,false,false,false,false,true,false));
176         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_SPACE),ke);
177         cksl.put(cks.getIdentifier(),cks);
178 
179         ke = new ArrayList<KeyEvent>();
180         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_ENTER,allBrowsers,false,false,false,false,true,false));
181         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_ENTER,allBrowsers,false,false,false,false,true,false));
182         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_ENTER,allBrowsers,false,false,false,false,true,false));
183         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_ENTER),ke);
184         cksl.put(cks.getIdentifier(),cks);
185 
186         // Javascripts REAL return character
187         ke = new ArrayList<KeyEvent>();
188         ke.add(new KeyEvent(KeyEventType.KEYDOWN,13,allBrowsers,false,false,false,false,true,false));
189         ke.add(new KeyEvent(KeyEventType.KEYPRESS,13,allBrowsers,false,false,false,false,true,false));
190         ke.add(new KeyEvent(KeyEventType.KEYUP,13,allBrowsers,false,false,false,false,true,false));
191         cks = new KeyEventSequence(String.format("0x%x",13),ke);
192         cksl.put(cks.getIdentifier(),cks);
193 
194 
195         ke = new ArrayList<KeyEvent>();
196         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_TAB,allBrowsers,false,false,false,false,true,false));
197         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_TAB,allBrowsers,false,false,false,false,true,false));
198         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_TAB),ke);
199         cksl.put(cks.getIdentifier(),cks);
200 
201         ke = new ArrayList<KeyEvent>();
202         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_ESCAPE,allBrowsers,false,false,false,false,true,false));
203         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_ESCAPE,fireFoxOnly,false,false,false,false,true,false));
204         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_ESCAPE,allBrowsers,false,false,false,false,true,false));
205         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_ESCAPE),ke);
206         cksl.put(cks.getIdentifier(),cks);
207 
208         ke = new ArrayList<KeyEvent>();
209         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_BACK_SPACE,allBrowsers,false,false,false,false,true,false));
210         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_BACK_SPACE,fireFoxOnly,false,false,false,false,true,false));
211         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_BACK_SPACE,allBrowsers,false,false,false,false,true,false));
212         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_BACK_SPACE),ke);
213         cksl.put(cks.getIdentifier(),cks);
214 
215         createSymbols(cksl);
216         createSpecialKeys(cksl);
217         createFNKeys(cksl);
218         createModifierKeys(cksl);
219 
220 
221         Gson gson = new GsonBuilder().setPrettyPrinting().create();
222         // Uncomment to spit the json out.
223         // Copy to charactersKeySequences.json
224         // Need to fix 2 errrors gson makes """ isn't escaped and either is "\"
225 
226 //        System.out.println(gson.toJson(cksl));
227 
228         // Test if the json can be read back in
229         String characterArrayJSON = readFile("charactersKeySequences.json");
230         Type collectionType = new TypeToken<HashMap<String, KeyEventSequence>>(){}.getType();
231         Map cksMap = gson.fromJson(characterArrayJSON,collectionType);
232 //        System.out.println(cksMap.toString());
233 
234 
235     }
236 
237     private void createModifierKeys(Map<String, KeyEventSequence> cksl)
238     {
239         List<KeyEvent> ke = new ArrayList<KeyEvent>();
240         ke.add(shiftKeyDown);
241         ke.add(shiftKeyUp);
242         KeyEventSequence cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_SHIFT),ke);
243         cksl.put(cks.getIdentifier(),cks);
244 
245         ke = new ArrayList<KeyEvent>();
246         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_ALT,allBrowsers,false,true,false,false,true,false));
247         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_ALT,allBrowsers,false,false,false,false,true,false));
248         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_ALT),ke);
249         cksl.put(cks.getIdentifier(),cks);
250 
251         ke = new ArrayList<KeyEvent>();
252         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_CONTROL,allBrowsers,false,false,true,false,true,false));
253         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_CONTROL,allBrowsers,false,false,false,false,true,false));
254         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_CONTROL),ke);
255         cksl.put(cks.getIdentifier(),cks);
256 
257         ke = new ArrayList<KeyEvent>();
258         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_META,allBrowsers,false,false,false,true,true,false));
259         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_META,allBrowsers,false,false,false,false,true,false));
260         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_META),ke);
261         cksl.put(cks.getIdentifier(),cks);
262 
263     }
264 
265     private void createFNKeys(Map<String, KeyEventSequence> cksl)
266     {
267         Set<Browser> chromeOnly = new HashSet<Browser>();
268         chromeOnly.add(Browser.CHROME);
269 
270         List<KeyEvent> ke = new ArrayList<KeyEvent>();
271         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F1,allBrowsers,false,false,false,false,true,false));
272         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F1,fireFoxOnly,false,false,false,false,true,false));
273         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63236,chromeOnly,false,false,false,false,true,true));
274         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F1,allBrowsers,false,false,false,false,true,false));
275         KeyEventSequence cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F1),ke);
276         cksl.put(cks.getIdentifier(),cks);
277 
278         ke = new ArrayList<KeyEvent>();
279         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F2,allBrowsers,false,false,false,false,true,false));
280         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F2,fireFoxOnly,false,false,false,false,true,false));
281         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63237,chromeOnly,false,false,false,false,true,true));
282         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F2,allBrowsers,false,false,false,false,true,false));
283         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F2),ke);
284         cksl.put(cks.getIdentifier(),cks);
285 
286         ke = new ArrayList<KeyEvent>();
287         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F3,allBrowsers,false,false,false,false,true,false));
288         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F3,fireFoxOnly,false,false,false,false,true,false));
289         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63238,chromeOnly,false,false,false,false,true,true));
290         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F3,allBrowsers,false,false,false,false,true,false));
291         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F3),ke);
292         cksl.put(cks.getIdentifier(),cks);
293 
294         ke = new ArrayList<KeyEvent>();
295         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F4,allBrowsers,false,false,false,false,true,false));
296         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F4,fireFoxOnly,false,false,false,false,true,false));
297         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63239,chromeOnly,false,false,false,false,true,true));
298         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F4,allBrowsers,false,false,false,false,true,false));
299         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F4),ke);
300         cksl.put(cks.getIdentifier(),cks);
301 
302         ke = new ArrayList<KeyEvent>();
303         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F5,allBrowsers,false,false,false,false,true,false));
304         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F5,fireFoxOnly,false,false,false,false,true,false));
305         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63240,chromeOnly,false,false,false,false,true,true));
306         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F5,allBrowsers,false,false,false,false,true,false));
307         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F5),ke);
308         cksl.put(cks.getIdentifier(),cks);
309 
310         ke = new ArrayList<KeyEvent>();
311         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F6,allBrowsers,false,false,false,false,true,false));
312         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F6,fireFoxOnly,false,false,false,false,true,false));
313         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63241,chromeOnly,false,false,false,false,true,true));
314         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F6,allBrowsers,false,false,false,false,true,false));
315         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F6),ke);
316         cksl.put(cks.getIdentifier(),cks);
317 
318         ke = new ArrayList<KeyEvent>();
319         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F7,allBrowsers,false,false,false,false,true,false));
320         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F7,fireFoxOnly,false,false,false,false,true,false));
321         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63242,chromeOnly,false,false,false,false,true,true));
322         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F7,allBrowsers,false,false,false,false,true,false));
323         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F7),ke);
324         cksl.put(cks.getIdentifier(),cks);
325 
326         ke = new ArrayList<KeyEvent>();
327         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F8,allBrowsers,false,false,false,false,true,false));
328         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F8,fireFoxOnly,false,false,false,false,true,false));
329         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63243,chromeOnly,false,false,false,false,true,true));
330         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F8,allBrowsers,false,false,false,false,true,false));
331         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F8),ke);
332         cksl.put(cks.getIdentifier(),cks);
333 
334         ke = new ArrayList<KeyEvent>();
335         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F9,allBrowsers,false,false,false,false,true,false));
336         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F9,fireFoxOnly,false,false,false,false,true,false));
337         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63244,chromeOnly,false,false,false,false,true,true));
338         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F9,allBrowsers,false,false,false,false,true,false));
339         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F9),ke);
340         cksl.put(cks.getIdentifier(),cks);
341 
342         ke = new ArrayList<KeyEvent>();
343         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F10,allBrowsers,false,false,false,false,true,false));
344         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F10,fireFoxOnly,false,false,false,false,true,false));
345         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63245,chromeOnly,false,false,false,false,true,true));
346         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F10,allBrowsers,false,false,false,false,true,false));
347         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F10),ke);
348         cksl.put(cks.getIdentifier(),cks);
349 
350         ke = new ArrayList<KeyEvent>();
351         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F11,allBrowsers,false,false,false,false,true,false));
352         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F11,fireFoxOnly,false,false,false,false,true,false));
353         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63246,chromeOnly,false,false,false,false,true,true));
354         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F11,allBrowsers,false,false,false,false,true,false));
355         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F11),ke);
356         cksl.put(cks.getIdentifier(),cks);
357 
358         ke = new ArrayList<KeyEvent>();
359         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F12,allBrowsers,false,false,false,false,true,false));
360         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F12,fireFoxOnly,false,false,false,false,true,false));
361         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63247,chromeOnly,false,false,false,false,true,true));
362         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F12,allBrowsers,false,false,false,false,true,false));
363         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F12),ke);
364         cksl.put(cks.getIdentifier(),cks);
365 
366         ke = new ArrayList<KeyEvent>();
367         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F13,allBrowsers,false,false,false,false,true,false));
368         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F13,fireFoxOnly,false,false,false,false,true,false));
369         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63248,chromeOnly,false,false,false,false,true,true));
370         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F13,allBrowsers,false,false,false,false,true,false));
371         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F13),ke);
372         cksl.put(cks.getIdentifier(),cks);
373 
374         ke = new ArrayList<KeyEvent>();
375         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F14,allBrowsers,false,false,false,false,true,false));
376         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F14,fireFoxOnly,false,false,false,false,true,false));
377         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63249,chromeOnly,false,false,false,false,true,true));
378         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F14,allBrowsers,false,false,false,false,true,false));
379         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F14),ke);
380         cksl.put(cks.getIdentifier(),cks);
381 
382         ke = new ArrayList<KeyEvent>();
383         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F15,allBrowsers,false,false,false,false,true,false));
384         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F15,fireFoxOnly,false,false,false,false,true,false));
385         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63250,chromeOnly,false,false,false,false,true,true));
386         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F15,allBrowsers,false,false,false,false,true,false));
387         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F15),ke);
388         cksl.put(cks.getIdentifier(),cks);
389 
390         ke = new ArrayList<KeyEvent>();
391         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F16,allBrowsers,false,false,false,false,true,false));
392         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F16,fireFoxOnly,false,false,false,false,true,false));
393         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63251,chromeOnly,false,false,false,false,true,true));
394         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F16,allBrowsers,false,false,false,false,true,false));
395         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F16),ke);
396         cksl.put(cks.getIdentifier(),cks);
397 
398         ke = new ArrayList<KeyEvent>();
399         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F17,allBrowsers,false,false,false,false,true,false));
400         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F17,fireFoxOnly,false,false,false,false,true,false));
401         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63252,chromeOnly,false,false,false,false,true,true));
402         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F17,allBrowsers,false,false,false,false,true,false));
403         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F17),ke);
404         cksl.put(cks.getIdentifier(),cks);
405 
406         ke = new ArrayList<KeyEvent>();
407         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F18,allBrowsers,false,false,false,false,true,false));
408         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F18,fireFoxOnly,false,false,false,false,true,false));
409         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63253,chromeOnly,false,false,false,false,true,true));
410         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F18,allBrowsers,false,false,false,false,true,false));
411         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F18),ke);
412         cksl.put(cks.getIdentifier(),cks);
413 
414         ke = new ArrayList<KeyEvent>();
415         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_F19,allBrowsers,false,false,false,false,true,false));
416         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_F19,fireFoxOnly,false,false,false,false,true,false));
417         ke.add(new KeyEvent(KeyEventType.KEYPRESS,63254,chromeOnly,false,false,false,false,true,true));
418         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_F19,allBrowsers,false,false,false,false,true,false));
419         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_F19),ke);
420         cksl.put(cks.getIdentifier(),cks);
421 
422     }
423 
424     private void createSpecialKeys(Map<String, KeyEventSequence> cksl)
425     {
426         List<KeyEvent> ke = new ArrayList<KeyEvent>();
427         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_LEFT,allBrowsers,false,false,false,false,true,false));
428         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_LEFT,fireFoxOnly,false,false,false,false,true,false));
429         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_LEFT,allBrowsers,false,false,false,false,true,false));
430         KeyEventSequence cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_LEFT),ke);
431         cksl.put(cks.getIdentifier(),cks);
432 
433         ke = new ArrayList<KeyEvent>();
434         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_RIGHT,allBrowsers,false,false,false,false,true,false));
435         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_RIGHT,fireFoxOnly,false,false,false,false,true,false));
436         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_RIGHT,allBrowsers,false,false,false,false,true,false));
437         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_RIGHT),ke);
438         cksl.put(cks.getIdentifier(),cks);
439 
440         ke = new ArrayList<KeyEvent>();
441         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_UP,allBrowsers,false,false,false,false,true,false));
442         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_UP,fireFoxOnly,false,false,false,false,true,false));
443         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_UP,allBrowsers,false,false,false,false,true,false));
444         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_UP),ke);
445         cksl.put(cks.getIdentifier(),cks);
446 
447         ke = new ArrayList<KeyEvent>();
448         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_DOWN,allBrowsers,false,false,false,false,true,false));
449         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_DOWN,fireFoxOnly,false,false,false,false,true,false));
450         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_DOWN,allBrowsers,false,false,false,false,true,false));
451         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_DOWN),ke);
452         cksl.put(cks.getIdentifier(),cks);
453 
454 
455         ke = new ArrayList<KeyEvent>();
456         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_INSERT,allBrowsers,false,false,false,false,true,false));
457         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_INSERT,fireFoxOnly,false,false,false,false,true,false));
458         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_INSERT,allBrowsers,false,false,false,false,true,false));
459         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_INSERT),ke);
460         cksl.put(cks.getIdentifier(),cks);
461 
462         ke = new ArrayList<KeyEvent>();
463         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_DELETE,allBrowsers,false,false,false,false,true,false));
464         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_DELETE,fireFoxOnly,false,false,false,false,true,false));
465         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_DELETE,allBrowsers,false,false,false,false,true,false));
466         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_DELETE),ke);
467         cksl.put(cks.getIdentifier(),cks);
468 
469         ke = new ArrayList<KeyEvent>();
470         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_HOME,allBrowsers,false,false,false,false,true,false));
471         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_HOME,fireFoxOnly,false,false,false,false,true,false));
472         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_HOME,allBrowsers,false,false,false,false,true,false));
473         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_HOME),ke);
474         cksl.put(cks.getIdentifier(),cks);
475 
476         ke = new ArrayList<KeyEvent>();
477         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_END,allBrowsers,false,false,false,false,true,false));
478         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_END,fireFoxOnly,false,false,false,false,true,false));
479         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_END,allBrowsers,false,false,false,false,true,false));
480         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_END),ke);
481         cksl.put(cks.getIdentifier(),cks);
482 
483         ke = new ArrayList<KeyEvent>();
484         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_PAGE_UP,allBrowsers,false,false,false,false,true,false));
485         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_PAGE_UP,fireFoxOnly,false,false,false,false,true,false));
486         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_PAGE_UP,allBrowsers,false,false,false,false,true,false));
487         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_PAGE_UP),ke);
488         cksl.put(cks.getIdentifier(),cks);
489 
490         ke = new ArrayList<KeyEvent>();
491         ke.add(new KeyEvent(KeyEventType.KEYDOWN,java.awt.event.KeyEvent.VK_PAGE_DOWN,allBrowsers,false,false,false,false,true,false));
492         ke.add(new KeyEvent(KeyEventType.KEYPRESS,java.awt.event.KeyEvent.VK_PAGE_DOWN,fireFoxOnly,false,false,false,false,true,false));
493         ke.add(new KeyEvent(KeyEventType.KEYUP,java.awt.event.KeyEvent.VK_PAGE_DOWN,allBrowsers,false,false,false,false,true,false));
494         cks = new KeyEventSequence(String.format("0x%x",java.awt.event.KeyEvent.VK_PAGE_DOWN),ke);
495         cksl.put(cks.getIdentifier(),cks);
496 
497     }
498 
499     private void createSymbols(Map<String, KeyEventSequence> cksl)
500     {
501         List<KeyEvent> ke = new ArrayList<KeyEvent>();
502         ke.add(new KeyEvent(KeyEventType.KEYDOWN,';',firefoxOpera,false,false,false,false,true,false));
503         ke.add(new KeyEvent(KeyEventType.KEYDOWN,186,chromeIESafari,false,false,false,false,true,false));
504         ke.add(new KeyEvent(KeyEventType.KEYPRESS,';',allBrowsers,false,false,false,false,false,true));
505         ke.add(new KeyEvent(KeyEventType.KEYUP,';',firefoxOpera,false,false,false,false,true,false));
506         ke.add(new KeyEvent(KeyEventType.KEYUP,186,chromeIESafari,false,false,false,false,true,false));
507         KeyEventSequence cks = new KeyEventSequence(";",ke);
508         cksl.put(cks.getIdentifier(),cks);
509 
510 
511         ke = new ArrayList<KeyEvent>();
512         ke.add(shiftKeyDown);
513         ke.add(new KeyEvent(KeyEventType.KEYDOWN,';',firefoxOpera,true,false,false,false,true,false));
514         ke.add(new KeyEvent(KeyEventType.KEYDOWN,186,chromeIESafari,true,false,false,false,true,false));
515         ke.add(new KeyEvent(KeyEventType.KEYPRESS,':',allBrowsers,true,false,false,false,false,true));
516         ke.add(new KeyEvent(KeyEventType.KEYUP,';',firefoxOpera,true,false,false,false,true,false));
517         ke.add(new KeyEvent(KeyEventType.KEYUP,186,chromeIESafari,true,false,false,false,true,false));
518         ke.add(shiftKeyUp);
519         cks = new KeyEventSequence(":",ke);
520         cksl.put(cks.getIdentifier(),cks);
521 
522         ke = new ArrayList<KeyEvent>();
523         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'=',firefoxOpera,false,false,false,false,true,false));
524         ke.add(new KeyEvent(KeyEventType.KEYDOWN,187,chromeIESafari,false,false,false,false,true,false));
525         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'=',allBrowsers,false,false,false,false,false,true));
526         ke.add(new KeyEvent(KeyEventType.KEYUP,'=',firefoxOpera,false,false,false,false,true,false));
527         ke.add(new KeyEvent(KeyEventType.KEYUP,187,chromeIESafari,false,false,false,false,true,false));
528         cks = new KeyEventSequence("=",ke);
529         cksl.put(cks.getIdentifier(),cks);
530 
531 
532         ke = new ArrayList<KeyEvent>();
533         ke.add(shiftKeyDown);
534         ke.add(new KeyEvent(KeyEventType.KEYDOWN,'=',firefoxOpera,true,false,false,false,true,false));
535         ke.add(new KeyEvent(KeyEventType.KEYDOWN,187,chromeIESafari,true,false,false,false,true,false));
536         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'+',allBrowsers,true,false,false,false,false,true));
537         ke.add(new KeyEvent(KeyEventType.KEYUP,'=',firefoxOpera,true,false,false,false,true,false));
538         ke.add(new KeyEvent(KeyEventType.KEYUP,187,chromeIESafari,true,false,false,false,true,false));
539         ke.add(shiftKeyUp);
540         cks = new KeyEventSequence("+",ke);
541         cksl.put(cks.getIdentifier(),cks);
542 
543         ke = new ArrayList<KeyEvent>();
544         ke.add(new KeyEvent(KeyEventType.KEYDOWN,188,firefoxOpera,false,false,false,false,true,false));
545         ke.add(new KeyEvent(KeyEventType.KEYDOWN,188,chromeIESafari,false,false,false,false,true,false));
546         ke.add(new KeyEvent(KeyEventType.KEYPRESS,',',allBrowsers,false,false,false,false,false,true));
547         ke.add(new KeyEvent(KeyEventType.KEYUP,188,firefoxOpera,false,false,false,false,true,false));
548         ke.add(new KeyEvent(KeyEventType.KEYUP,188,chromeIESafari,false,false,false,false,true,false));
549         cks = new KeyEventSequence(",",ke);
550         cksl.put(cks.getIdentifier(),cks);
551 
552 
553         ke = new ArrayList<KeyEvent>();
554         ke.add(shiftKeyDown);
555         ke.add(new KeyEvent(KeyEventType.KEYDOWN,188,firefoxOpera,true,false,false,false,true,false));
556         ke.add(new KeyEvent(KeyEventType.KEYDOWN,188,chromeIESafari,true,false,false,false,true,false));
557         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'<',allBrowsers,true,false,false,false,false,true));
558         ke.add(new KeyEvent(KeyEventType.KEYUP,188,firefoxOpera,true,false,false,false,true,false));
559         ke.add(new KeyEvent(KeyEventType.KEYUP,188,chromeIESafari,true,false,false,false,true,false));
560         ke.add(shiftKeyUp);
561         cks = new KeyEventSequence("<",ke);
562         cksl.put(cks.getIdentifier(),cks);
563 
564         ke = new ArrayList<KeyEvent>();
565         ke.add(new KeyEvent(KeyEventType.KEYDOWN,109,firefoxOpera,false,false,false,false,true,false));
566         ke.add(new KeyEvent(KeyEventType.KEYDOWN,189,chromeIESafari,false,false,false,false,true,false));
567         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'-',allBrowsers,false,false,false,false,false,true));
568         ke.add(new KeyEvent(KeyEventType.KEYUP,109,firefoxOpera,false,false,false,false,true,false));
569         ke.add(new KeyEvent(KeyEventType.KEYUP,189,chromeIESafari,false,false,false,false,true,false));
570         cks = new KeyEventSequence("-",ke);
571         cksl.put(cks.getIdentifier(),cks);
572 
573 
574         ke = new ArrayList<KeyEvent>();
575         ke.add(shiftKeyDown);
576         ke.add(new KeyEvent(KeyEventType.KEYDOWN,109,firefoxOpera,true,false,false,false,true,false));
577         ke.add(new KeyEvent(KeyEventType.KEYDOWN,189,chromeIESafari,true,false,false,false,true,false));
578         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'_',allBrowsers,true,false,false,false,false,true));
579         ke.add(new KeyEvent(KeyEventType.KEYUP,109,firefoxOpera,true,false,false,false,true,false));
580         ke.add(new KeyEvent(KeyEventType.KEYUP,189,chromeIESafari,true,false,false,false,true,false));
581         ke.add(shiftKeyUp);
582         cks = new KeyEventSequence("_",ke);
583         cksl.put(cks.getIdentifier(),cks);
584 
585         ke = new ArrayList<KeyEvent>();
586         ke.add(new KeyEvent(KeyEventType.KEYDOWN,190,firefoxOpera,false,false,false,false,true,false));
587         ke.add(new KeyEvent(KeyEventType.KEYDOWN,190,chromeIESafari,false,false,false,false,true,false));
588         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'.',allBrowsers,false,false,false,false,false,true));
589         ke.add(new KeyEvent(KeyEventType.KEYUP,190,firefoxOpera,false,false,false,false,true,false));
590         ke.add(new KeyEvent(KeyEventType.KEYUP,190,chromeIESafari,false,false,false,false,true,false));
591         cks = new KeyEventSequence(".",ke);
592         cksl.put(cks.getIdentifier(),cks);
593 
594 
595         ke = new ArrayList<KeyEvent>();
596         ke.add(shiftKeyDown);
597         ke.add(new KeyEvent(KeyEventType.KEYDOWN,190,firefoxOpera,true,false,false,false,true,false));
598         ke.add(new KeyEvent(KeyEventType.KEYDOWN,190,chromeIESafari,true,false,false,false,true,false));
599         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'>',allBrowsers,true,false,false,false,false,true));
600         ke.add(new KeyEvent(KeyEventType.KEYUP,190,firefoxOpera,true,false,false,false,true,false));
601         ke.add(new KeyEvent(KeyEventType.KEYUP,190,chromeIESafari,true,false,false,false,true,false));
602         ke.add(shiftKeyUp);
603         cks = new KeyEventSequence(">",ke);
604         cksl.put(cks.getIdentifier(),cks);
605 
606         ke = new ArrayList<KeyEvent>();
607         ke.add(new KeyEvent(KeyEventType.KEYDOWN,191,firefoxOpera,false,false,false,false,true,false));
608         ke.add(new KeyEvent(KeyEventType.KEYDOWN,191,chromeIESafari,false,false,false,false,true,false));
609         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'/',allBrowsers,false,false,false,false,false,true));
610         ke.add(new KeyEvent(KeyEventType.KEYUP,191,firefoxOpera,false,false,false,false,true,false));
611         ke.add(new KeyEvent(KeyEventType.KEYUP,191,chromeIESafari,false,false,false,false,true,false));
612         cks = new KeyEventSequence("/",ke);
613         cksl.put(cks.getIdentifier(),cks);
614 
615 
616         ke = new ArrayList<KeyEvent>();
617         ke.add(shiftKeyDown);
618         ke.add(new KeyEvent(KeyEventType.KEYDOWN,191,firefoxOpera,true,false,false,false,true,false));
619         ke.add(new KeyEvent(KeyEventType.KEYDOWN,191,chromeIESafari,true,false,false,false,true,false));
620         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'?',allBrowsers,true,false,false,false,false,true));
621         ke.add(new KeyEvent(KeyEventType.KEYUP,191,firefoxOpera,true,false,false,false,true,false));
622         ke.add(new KeyEvent(KeyEventType.KEYUP,191,chromeIESafari,true,false,false,false,true,false));
623         ke.add(shiftKeyUp);
624         cks = new KeyEventSequence("?",ke);
625         cksl.put(cks.getIdentifier(),cks);
626 
627         ke = new ArrayList<KeyEvent>();
628         ke.add(new KeyEvent(KeyEventType.KEYDOWN,192,firefoxOpera,false,false,false,false,true,false));
629         ke.add(new KeyEvent(KeyEventType.KEYDOWN,192,chromeIESafari,false,false,false,false,true,false));
630         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'`',allBrowsers,false,false,false,false,false,true));
631         ke.add(new KeyEvent(KeyEventType.KEYUP,192,firefoxOpera,false,false,false,false,true,false));
632         ke.add(new KeyEvent(KeyEventType.KEYUP,192,chromeIESafari,false,false,false,false,true,false));
633         cks = new KeyEventSequence("`",ke);
634         cksl.put(cks.getIdentifier(),cks);
635 
636 
637         ke = new ArrayList<KeyEvent>();
638         ke.add(shiftKeyDown);
639         ke.add(new KeyEvent(KeyEventType.KEYDOWN,192,firefoxOpera,true,false,false,false,true,false));
640         ke.add(new KeyEvent(KeyEventType.KEYDOWN,192,chromeIESafari,true,false,false,false,true,false));
641         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'~',allBrowsers,true,false,false,false,false,true));
642         ke.add(new KeyEvent(KeyEventType.KEYUP,192,firefoxOpera,true,false,false,false,true,false));
643         ke.add(new KeyEvent(KeyEventType.KEYUP,192,chromeIESafari,true,false,false,false,true,false));
644         ke.add(shiftKeyUp);
645         cks = new KeyEventSequence("~",ke);
646         cksl.put(cks.getIdentifier(),cks);
647 
648         ke = new ArrayList<KeyEvent>();
649         ke.add(new KeyEvent(KeyEventType.KEYDOWN,219,allBrowsers,false,false,false,false,true,false));
650         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'[',allBrowsers,false,false,false,false,false,true));
651         ke.add(new KeyEvent(KeyEventType.KEYUP,219,allBrowsers,false,false,false,false,true,false));
652         cks = new KeyEventSequence("[",ke);
653         cksl.put(cks.getIdentifier(),cks);
654 
655 
656         ke = new ArrayList<KeyEvent>();
657         ke.add(shiftKeyDown);
658         ke.add(new KeyEvent(KeyEventType.KEYDOWN,219,allBrowsers,true,false,false,false,true,false));
659         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'{',allBrowsers,true,false,false,false,false,true));
660         ke.add(new KeyEvent(KeyEventType.KEYUP,219,allBrowsers,true,false,false,false,true,false));
661         ke.add(shiftKeyUp);
662         cks = new KeyEventSequence("{",ke);
663         cksl.put(cks.getIdentifier(),cks);
664 
665         ke = new ArrayList<KeyEvent>();
666         ke.add(new KeyEvent(KeyEventType.KEYDOWN,220,allBrowsers,false,false,false,false,true,false));
667         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'\\',allBrowsers,false,false,false,false,false,true));
668         ke.add(new KeyEvent(KeyEventType.KEYUP,220,allBrowsers,false,false,false,false,true,false));
669         cks = new KeyEventSequence("\\",ke);
670         cksl.put(cks.getIdentifier(),cks);
671 
672 
673         ke = new ArrayList<KeyEvent>();
674         ke.add(shiftKeyDown);
675         ke.add(new KeyEvent(KeyEventType.KEYDOWN,220,allBrowsers,true,false,false,false,true,false));
676         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'|',allBrowsers,true,false,false,false,false,true));
677         ke.add(new KeyEvent(KeyEventType.KEYUP,220,allBrowsers,true,false,false,false,true,false));
678         ke.add(shiftKeyUp);
679         cks = new KeyEventSequence("|",ke);
680         cksl.put(cks.getIdentifier(),cks);
681 
682         ke = new ArrayList<KeyEvent>();
683         ke.add(new KeyEvent(KeyEventType.KEYDOWN,221,allBrowsers,false,false,false,false,true,false));
684         ke.add(new KeyEvent(KeyEventType.KEYPRESS,']',allBrowsers,false,false,false,false,false,true));
685         ke.add(new KeyEvent(KeyEventType.KEYUP,221,allBrowsers,false,false,false,false,true,false));
686         cks = new KeyEventSequence("]",ke);
687         cksl.put(cks.getIdentifier(),cks);
688 
689 
690         ke = new ArrayList<KeyEvent>();
691         ke.add(shiftKeyDown);
692         ke.add(new KeyEvent(KeyEventType.KEYDOWN,221,allBrowsers,true,false,false,false,true,false));
693         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'}',allBrowsers,true,false,false,false,false,true));
694         ke.add(new KeyEvent(KeyEventType.KEYUP,221,allBrowsers,true,false,false,false,true,false));
695         ke.add(shiftKeyUp);
696         cks = new KeyEventSequence("}",ke);
697         cksl.put(cks.getIdentifier(),cks);
698 
699         ke = new ArrayList<KeyEvent>();
700         ke.add(new KeyEvent(KeyEventType.KEYDOWN,222,allBrowsers,false,false,false,false,true,false));
701         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'\'',allBrowsers,false,false,false,false,false,true));
702         ke.add(new KeyEvent(KeyEventType.KEYUP,219,allBrowsers,false,false,false,false,true,false));
703         cks = new KeyEventSequence("'",ke);
704         cksl.put(cks.getIdentifier(),cks);
705 
706 
707         ke = new ArrayList<KeyEvent>();
708         ke.add(shiftKeyDown);
709         ke.add(new KeyEvent(KeyEventType.KEYDOWN,219,allBrowsers,true,false,false,false,true,false));
710         ke.add(new KeyEvent(KeyEventType.KEYPRESS,'"',allBrowsers,true,false,false,false,false,true));
711         ke.add(new KeyEvent(KeyEventType.KEYUP,219,allBrowsers,true,false,false,false,true,false));
712         ke.add(shiftKeyUp);
713         cks = new KeyEventSequence("\"",ke);
714         cksl.put(cks.getIdentifier(),cks);
715 
716     }
717 
718     private static String readFile(String file) throws IOException
719     {
720         BufferedReader reader =  new BufferedReader(new InputStreamReader(ClassLoader.getSystemClassLoader().getResourceAsStream(file)));
721 
722         String line = reader.readLine();
723         StringBuffer contents = new StringBuffer();
724 
725         while(line != null)
726         {
727             contents.append(line).append("\n");
728             line = reader.readLine();
729         }
730 
731         return contents.toString();
732     }
733 
734 }