001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: /**
018: * @author Dmitry A. Durnev
019: * @version $Revision$
020: */package org.apache.harmony.awt.wtk.linux;
021:
022: import java.awt.event.KeyEvent;
023: import java.util.HashMap;
024: import java.util.Map;
025:
026: import org.apache.harmony.awt.nativebridge.CLongPointer;
027: import org.apache.harmony.awt.nativebridge.Int8Pointer;
028: import org.apache.harmony.awt.nativebridge.NativeBridge;
029: import org.apache.harmony.awt.nativebridge.linux.X11;
030: import org.apache.harmony.awt.nativebridge.linux.X11Defs;
031: import org.apache.harmony.awt.wtk.KeyInfo;
032:
033: final class KeyCodeTranslator {
034:
035: private static final NativeBridge bridge = NativeBridge
036: .getInstance();
037:
038: private static final X11 x11 = X11.getInstance();
039:
040: private static final Map tableXK2VK;
041:
042: private static final Map tableVK2XK;
043:
044: static {
045: tableXK2VK = new HashMap();
046: tableXK2VK.put(new Integer(X11Defs.XK_Tab), new Integer(
047: KeyEvent.VK_TAB));
048: tableXK2VK.put(new Integer(X11Defs.XK_KP_Tab), new Integer(
049: KeyEvent.VK_TAB));
050: tableXK2VK.put(new Integer(X11Defs.XK_ISO_Left_Tab),
051: new Integer(KeyEvent.VK_TAB));
052: tableXK2VK.put(new Integer(X11Defs.XK_Clear), new Integer(
053: KeyEvent.VK_CLEAR));
054: tableXK2VK.put(new Integer(X11Defs.XK_Pause), new Integer(
055: KeyEvent.VK_PAUSE));
056: tableXK2VK.put(new Integer(X11Defs.XK_Scroll_Lock),
057: new Integer(KeyEvent.VK_SCROLL_LOCK));
058: tableXK2VK.put(new Integer(X11Defs.XK_Escape), new Integer(
059: KeyEvent.VK_ESCAPE));
060: tableXK2VK.put(new Integer(X11Defs.XK_Delete), new Integer(
061: KeyEvent.VK_DELETE));
062: tableXK2VK.put(new Integer(X11Defs.XK_KP_Delete), new Integer(
063: KeyEvent.VK_DELETE));
064: tableXK2VK.put(new Integer(X11Defs.XK_Kanji), new Integer(
065: KeyEvent.VK_KANJI));
066: tableXK2VK.put(new Integer(X11Defs.XK_Hiragana), new Integer(
067: KeyEvent.VK_HIRAGANA));
068: tableXK2VK.put(new Integer(X11Defs.XK_Katakana), new Integer(
069: KeyEvent.VK_KATAKANA));
070: tableXK2VK.put(new Integer(X11Defs.XK_Kana_Lock), new Integer(
071: KeyEvent.VK_KANA_LOCK));
072: tableXK2VK.put(new Integer(X11Defs.XK_Home), new Integer(
073: KeyEvent.VK_HOME));
074: tableXK2VK.put(new Integer(X11Defs.XK_KP_Home), new Integer(
075: KeyEvent.VK_HOME));
076: tableXK2VK.put(new Integer(X11Defs.XK_Left), new Integer(
077: KeyEvent.VK_LEFT));
078: tableXK2VK.put(new Integer(X11Defs.XK_KP_Left), new Integer(
079: KeyEvent.VK_LEFT));
080: tableXK2VK.put(new Integer(X11Defs.XK_Up), new Integer(
081: KeyEvent.VK_UP));
082: tableXK2VK.put(new Integer(X11Defs.XK_KP_Up), new Integer(
083: KeyEvent.VK_UP));
084: tableXK2VK.put(new Integer(X11Defs.XK_Right), new Integer(
085: KeyEvent.VK_RIGHT));
086: tableXK2VK.put(new Integer(X11Defs.XK_KP_Right), new Integer(
087: KeyEvent.VK_RIGHT));
088: tableXK2VK.put(new Integer(X11Defs.XK_Down), new Integer(
089: KeyEvent.VK_DOWN));
090: tableXK2VK.put(new Integer(X11Defs.XK_KP_Down), new Integer(
091: KeyEvent.VK_DOWN));
092: tableXK2VK.put(new Integer(X11Defs.XK_Page_Up), new Integer(
093: KeyEvent.VK_PAGE_UP));
094: tableXK2VK.put(new Integer(X11Defs.XK_KP_Page_Up), new Integer(
095: KeyEvent.VK_PAGE_UP));
096: tableXK2VK.put(new Integer(X11Defs.XK_Page_Down), new Integer(
097: KeyEvent.VK_PAGE_DOWN));
098: tableXK2VK.put(new Integer(X11Defs.XK_KP_Page_Down),
099: new Integer(KeyEvent.VK_PAGE_DOWN));
100: tableXK2VK.put(new Integer(X11Defs.XK_End), new Integer(
101: KeyEvent.VK_END));
102: tableXK2VK.put(new Integer(X11Defs.XK_KP_End), new Integer(
103: KeyEvent.VK_END));
104: tableXK2VK.put(new Integer(X11Defs.XK_Insert), new Integer(
105: KeyEvent.VK_INSERT));
106: tableXK2VK.put(new Integer(X11Defs.XK_KP_Insert), new Integer(
107: KeyEvent.VK_INSERT));
108: tableXK2VK.put(new Integer(X11Defs.XK_Undo), new Integer(
109: KeyEvent.VK_UNDO));
110: tableXK2VK.put(new Integer(X11Defs.XK_Find), new Integer(
111: KeyEvent.VK_FIND));
112: tableXK2VK.put(new Integer(X11Defs.XK_Cancel), new Integer(
113: KeyEvent.VK_CANCEL));
114: tableXK2VK.put(new Integer(X11Defs.XK_Help), new Integer(
115: KeyEvent.VK_HELP));
116: tableXK2VK.put(new Integer(X11Defs.XK_Num_Lock), new Integer(
117: KeyEvent.VK_NUM_LOCK));
118: tableXK2VK.put(new Integer(X11Defs.XK_KP_Left), new Integer(
119: KeyEvent.VK_KP_LEFT));
120: tableXK2VK.put(new Integer(X11Defs.XK_KP_Up), new Integer(
121: KeyEvent.VK_KP_UP));
122: tableXK2VK.put(new Integer(X11Defs.XK_KP_Right), new Integer(
123: KeyEvent.VK_KP_RIGHT));
124: tableXK2VK.put(new Integer(X11Defs.XK_KP_Down), new Integer(
125: KeyEvent.VK_KP_DOWN));
126: tableXK2VK.put(new Integer(X11Defs.XK_KP_0), new Integer(
127: KeyEvent.VK_NUMPAD0));
128: tableXK2VK.put(new Integer(X11Defs.XK_KP_1), new Integer(
129: KeyEvent.VK_NUMPAD1));
130: tableXK2VK.put(new Integer(X11Defs.XK_KP_2), new Integer(
131: KeyEvent.VK_NUMPAD2));
132: tableXK2VK.put(new Integer(X11Defs.XK_KP_3), new Integer(
133: KeyEvent.VK_NUMPAD3));
134: tableXK2VK.put(new Integer(X11Defs.XK_KP_4), new Integer(
135: KeyEvent.VK_NUMPAD4));
136: tableXK2VK.put(new Integer(X11Defs.XK_KP_5), new Integer(
137: KeyEvent.VK_NUMPAD5));
138: tableXK2VK.put(new Integer(X11Defs.XK_KP_6), new Integer(
139: KeyEvent.VK_NUMPAD6));
140: tableXK2VK.put(new Integer(X11Defs.XK_KP_7), new Integer(
141: KeyEvent.VK_NUMPAD7));
142: tableXK2VK.put(new Integer(X11Defs.XK_KP_8), new Integer(
143: KeyEvent.VK_NUMPAD8));
144: tableXK2VK.put(new Integer(X11Defs.XK_KP_9), new Integer(
145: KeyEvent.VK_NUMPAD9));
146: tableXK2VK.put(new Integer(X11Defs.XK_F1), new Integer(
147: KeyEvent.VK_F1));
148: tableXK2VK.put(new Integer(X11Defs.XK_KP_F1), new Integer(
149: KeyEvent.VK_F1));
150: tableXK2VK.put(new Integer(X11Defs.XK_F2), new Integer(
151: KeyEvent.VK_F2));
152: tableXK2VK.put(new Integer(X11Defs.XK_KP_F2), new Integer(
153: KeyEvent.VK_F2));
154: tableXK2VK.put(new Integer(X11Defs.XK_F3), new Integer(
155: KeyEvent.VK_F3));
156: tableXK2VK.put(new Integer(X11Defs.XK_KP_F3), new Integer(
157: KeyEvent.VK_F3));
158: tableXK2VK.put(new Integer(X11Defs.XK_F4), new Integer(
159: KeyEvent.VK_F4));
160: tableXK2VK.put(new Integer(X11Defs.XK_KP_F4), new Integer(
161: KeyEvent.VK_F4));
162: tableXK2VK.put(new Integer(X11Defs.XK_F5), new Integer(
163: KeyEvent.VK_F5));
164: tableXK2VK.put(new Integer(X11Defs.XK_F6), new Integer(
165: KeyEvent.VK_F6));
166: tableXK2VK.put(new Integer(X11Defs.XK_F7), new Integer(
167: KeyEvent.VK_F7));
168: tableXK2VK.put(new Integer(X11Defs.XK_F8), new Integer(
169: KeyEvent.VK_F8));
170: tableXK2VK.put(new Integer(X11Defs.XK_F9), new Integer(
171: KeyEvent.VK_F9));
172: tableXK2VK.put(new Integer(X11Defs.XK_F10), new Integer(
173: KeyEvent.VK_F10));
174: tableXK2VK.put(new Integer(X11Defs.XK_F11), new Integer(
175: KeyEvent.VK_F11));
176: tableXK2VK.put(new Integer(X11Defs.XK_F12), new Integer(
177: KeyEvent.VK_F12));
178: tableXK2VK.put(new Integer(X11Defs.XK_F13), new Integer(
179: KeyEvent.VK_F13));
180: tableXK2VK.put(new Integer(X11Defs.XK_F14), new Integer(
181: KeyEvent.VK_F14));
182: tableXK2VK.put(new Integer(X11Defs.XK_F15), new Integer(
183: KeyEvent.VK_F15));
184: tableXK2VK.put(new Integer(X11Defs.XK_F16), new Integer(
185: KeyEvent.VK_F16));
186: tableXK2VK.put(new Integer(X11Defs.XK_F17), new Integer(
187: KeyEvent.VK_F17));
188: tableXK2VK.put(new Integer(X11Defs.XK_F18), new Integer(
189: KeyEvent.VK_F18));
190: tableXK2VK.put(new Integer(X11Defs.XK_F19), new Integer(
191: KeyEvent.VK_F19));
192: tableXK2VK.put(new Integer(X11Defs.XK_F20), new Integer(
193: KeyEvent.VK_F20));
194: tableXK2VK.put(new Integer(X11Defs.XK_F21), new Integer(
195: KeyEvent.VK_F21));
196: tableXK2VK.put(new Integer(X11Defs.XK_F22), new Integer(
197: KeyEvent.VK_F22));
198: tableXK2VK.put(new Integer(X11Defs.XK_F23), new Integer(
199: KeyEvent.VK_F23));
200: tableXK2VK.put(new Integer(X11Defs.XK_F24), new Integer(
201: KeyEvent.VK_F24));
202: tableXK2VK.put(new Integer(X11Defs.XK_Caps_Lock), new Integer(
203: KeyEvent.VK_CAPS_LOCK));
204: tableXK2VK.put(new Integer(X11Defs.XK_dead_grave), new Integer(
205: KeyEvent.VK_DEAD_GRAVE));
206: tableXK2VK.put(new Integer(X11Defs.XK_dead_acute), new Integer(
207: KeyEvent.VK_DEAD_ACUTE));
208: tableXK2VK.put(new Integer(X11Defs.XK_dead_circumflex),
209: new Integer(KeyEvent.VK_DEAD_CIRCUMFLEX));
210: tableXK2VK.put(new Integer(X11Defs.XK_dead_tilde), new Integer(
211: KeyEvent.VK_DEAD_TILDE));
212: tableXK2VK.put(new Integer(X11Defs.XK_dead_macron),
213: new Integer(KeyEvent.VK_DEAD_MACRON));
214: tableXK2VK.put(new Integer(X11Defs.XK_dead_breve), new Integer(
215: KeyEvent.VK_DEAD_BREVE));
216: tableXK2VK.put(new Integer(X11Defs.XK_dead_abovedot),
217: new Integer(KeyEvent.VK_DEAD_ABOVEDOT));
218: tableXK2VK.put(new Integer(X11Defs.XK_dead_diaeresis),
219: new Integer(KeyEvent.VK_DEAD_DIAERESIS));
220: tableXK2VK.put(new Integer(X11Defs.XK_dead_abovering),
221: new Integer(KeyEvent.VK_DEAD_ABOVERING));
222: tableXK2VK.put(new Integer(X11Defs.XK_dead_doubleacute),
223: new Integer(KeyEvent.VK_DEAD_DOUBLEACUTE));
224: tableXK2VK.put(new Integer(X11Defs.XK_dead_caron), new Integer(
225: KeyEvent.VK_DEAD_CARON));
226: tableXK2VK.put(new Integer(X11Defs.XK_dead_cedilla),
227: new Integer(KeyEvent.VK_DEAD_CEDILLA));
228: tableXK2VK.put(new Integer(X11Defs.XK_dead_ogonek),
229: new Integer(KeyEvent.VK_DEAD_OGONEK));
230: tableXK2VK.put(new Integer(X11Defs.XK_dead_iota), new Integer(
231: KeyEvent.VK_DEAD_IOTA));
232: tableXK2VK.put(new Integer(X11Defs.XK_dead_voiced_sound),
233: new Integer(KeyEvent.VK_DEAD_VOICED_SOUND));
234: tableXK2VK.put(new Integer(X11Defs.XK_dead_semivoiced_sound),
235: new Integer(KeyEvent.VK_DEAD_SEMIVOICED_SOUND));
236: tableXK2VK.put(new Integer(X11Defs.XK_space), new Integer(
237: KeyEvent.VK_SPACE));
238: tableXK2VK.put(new Integer(X11Defs.XK_KP_Space), new Integer(
239: KeyEvent.VK_SPACE));
240: tableXK2VK.put(new Integer(X11Defs.XK_quotedbl), new Integer(
241: KeyEvent.VK_QUOTEDBL));
242: tableXK2VK.put(new Integer(X11Defs.XK_dollar), new Integer(
243: KeyEvent.VK_DOLLAR));
244: tableXK2VK.put(new Integer(X11Defs.XK_ampersand), new Integer(
245: KeyEvent.VK_AMPERSAND));
246: tableXK2VK.put(new Integer(X11Defs.XK_asterisk), new Integer(
247: KeyEvent.VK_ASTERISK));
248: tableXK2VK.put(new Integer(X11Defs.XK_plus), new Integer(
249: KeyEvent.VK_PLUS));
250: tableXK2VK.put(new Integer(X11Defs.XK_comma), new Integer(
251: KeyEvent.VK_COMMA));
252: tableXK2VK.put(new Integer(X11Defs.XK_minus), new Integer(
253: KeyEvent.VK_MINUS));
254: tableXK2VK.put(new Integer(X11Defs.XK_period), new Integer(
255: KeyEvent.VK_PERIOD));
256: tableXK2VK.put(new Integer(X11Defs.XK_slash), new Integer(
257: KeyEvent.VK_SLASH));
258: tableXK2VK.put(new Integer(X11Defs.XK_0), new Integer(
259: KeyEvent.VK_0));
260: tableXK2VK.put(new Integer(X11Defs.XK_1), new Integer(
261: KeyEvent.VK_1));
262: tableXK2VK.put(new Integer(X11Defs.XK_2), new Integer(
263: KeyEvent.VK_2));
264: tableXK2VK.put(new Integer(X11Defs.XK_3), new Integer(
265: KeyEvent.VK_3));
266: tableXK2VK.put(new Integer(X11Defs.XK_4), new Integer(
267: KeyEvent.VK_4));
268: tableXK2VK.put(new Integer(X11Defs.XK_5), new Integer(
269: KeyEvent.VK_5));
270: tableXK2VK.put(new Integer(X11Defs.XK_6), new Integer(
271: KeyEvent.VK_6));
272: tableXK2VK.put(new Integer(X11Defs.XK_7), new Integer(
273: KeyEvent.VK_7));
274: tableXK2VK.put(new Integer(X11Defs.XK_8), new Integer(
275: KeyEvent.VK_8));
276: tableXK2VK.put(new Integer(X11Defs.XK_9), new Integer(
277: KeyEvent.VK_9));
278: tableXK2VK.put(new Integer(X11Defs.XK_colon), new Integer(
279: KeyEvent.VK_COLON));
280: tableXK2VK.put(new Integer(X11Defs.XK_semicolon), new Integer(
281: KeyEvent.VK_SEMICOLON));
282: tableXK2VK.put(new Integer(X11Defs.XK_less), new Integer(
283: KeyEvent.VK_LESS));
284: tableXK2VK.put(new Integer(X11Defs.XK_greater), new Integer(
285: KeyEvent.VK_GREATER));
286: tableXK2VK.put(new Integer(X11Defs.XK_at), new Integer(
287: KeyEvent.VK_AT));
288: tableXK2VK.put(new Integer(X11Defs.XK_A), new Integer(
289: KeyEvent.VK_A));
290: tableXK2VK.put(new Integer(X11Defs.XK_B), new Integer(
291: KeyEvent.VK_B));
292: tableXK2VK.put(new Integer(X11Defs.XK_C), new Integer(
293: KeyEvent.VK_C));
294: tableXK2VK.put(new Integer(X11Defs.XK_D), new Integer(
295: KeyEvent.VK_D));
296: tableXK2VK.put(new Integer(X11Defs.XK_E), new Integer(
297: KeyEvent.VK_E));
298: tableXK2VK.put(new Integer(X11Defs.XK_F), new Integer(
299: KeyEvent.VK_F));
300: tableXK2VK.put(new Integer(X11Defs.XK_G), new Integer(
301: KeyEvent.VK_G));
302: tableXK2VK.put(new Integer(X11Defs.XK_H), new Integer(
303: KeyEvent.VK_H));
304: tableXK2VK.put(new Integer(X11Defs.XK_I), new Integer(
305: KeyEvent.VK_I));
306: tableXK2VK.put(new Integer(X11Defs.XK_J), new Integer(
307: KeyEvent.VK_J));
308: tableXK2VK.put(new Integer(X11Defs.XK_K), new Integer(
309: KeyEvent.VK_K));
310: tableXK2VK.put(new Integer(X11Defs.XK_L), new Integer(
311: KeyEvent.VK_L));
312: tableXK2VK.put(new Integer(X11Defs.XK_M), new Integer(
313: KeyEvent.VK_M));
314: tableXK2VK.put(new Integer(X11Defs.XK_N), new Integer(
315: KeyEvent.VK_N));
316: tableXK2VK.put(new Integer(X11Defs.XK_O), new Integer(
317: KeyEvent.VK_O));
318: tableXK2VK.put(new Integer(X11Defs.XK_P), new Integer(
319: KeyEvent.VK_P));
320: tableXK2VK.put(new Integer(X11Defs.XK_Q), new Integer(
321: KeyEvent.VK_Q));
322: tableXK2VK.put(new Integer(X11Defs.XK_R), new Integer(
323: KeyEvent.VK_R));
324: tableXK2VK.put(new Integer(X11Defs.XK_S), new Integer(
325: KeyEvent.VK_S));
326: tableXK2VK.put(new Integer(X11Defs.XK_T), new Integer(
327: KeyEvent.VK_T));
328: tableXK2VK.put(new Integer(X11Defs.XK_U), new Integer(
329: KeyEvent.VK_U));
330: tableXK2VK.put(new Integer(X11Defs.XK_V), new Integer(
331: KeyEvent.VK_V));
332: tableXK2VK.put(new Integer(X11Defs.XK_W), new Integer(
333: KeyEvent.VK_W));
334: tableXK2VK.put(new Integer(X11Defs.XK_X), new Integer(
335: KeyEvent.VK_X));
336: tableXK2VK.put(new Integer(X11Defs.XK_Y), new Integer(
337: KeyEvent.VK_Y));
338: tableXK2VK.put(new Integer(X11Defs.XK_Z), new Integer(
339: KeyEvent.VK_Z));
340: tableXK2VK.put(new Integer(X11Defs.XK_underscore), new Integer(
341: KeyEvent.VK_UNDERSCORE));
342: tableXK2VK.put(new Integer(X11Defs.XK_a), new Integer(
343: KeyEvent.VK_A));
344: tableXK2VK.put(new Integer(X11Defs.XK_b), new Integer(
345: KeyEvent.VK_B));
346: tableXK2VK.put(new Integer(X11Defs.XK_c), new Integer(
347: KeyEvent.VK_C));
348: tableXK2VK.put(new Integer(X11Defs.XK_d), new Integer(
349: KeyEvent.VK_D));
350: tableXK2VK.put(new Integer(X11Defs.XK_e), new Integer(
351: KeyEvent.VK_E));
352: tableXK2VK.put(new Integer(X11Defs.XK_f), new Integer(
353: KeyEvent.VK_F));
354: tableXK2VK.put(new Integer(X11Defs.XK_g), new Integer(
355: KeyEvent.VK_G));
356: tableXK2VK.put(new Integer(X11Defs.XK_h), new Integer(
357: KeyEvent.VK_H));
358: tableXK2VK.put(new Integer(X11Defs.XK_i), new Integer(
359: KeyEvent.VK_I));
360: tableXK2VK.put(new Integer(X11Defs.XK_j), new Integer(
361: KeyEvent.VK_J));
362: tableXK2VK.put(new Integer(X11Defs.XK_k), new Integer(
363: KeyEvent.VK_K));
364: tableXK2VK.put(new Integer(X11Defs.XK_l), new Integer(
365: KeyEvent.VK_L));
366: tableXK2VK.put(new Integer(X11Defs.XK_m), new Integer(
367: KeyEvent.VK_M));
368: tableXK2VK.put(new Integer(X11Defs.XK_n), new Integer(
369: KeyEvent.VK_N));
370: tableXK2VK.put(new Integer(X11Defs.XK_o), new Integer(
371: KeyEvent.VK_O));
372: tableXK2VK.put(new Integer(X11Defs.XK_p), new Integer(
373: KeyEvent.VK_P));
374: tableXK2VK.put(new Integer(X11Defs.XK_q), new Integer(
375: KeyEvent.VK_Q));
376: tableXK2VK.put(new Integer(X11Defs.XK_r), new Integer(
377: KeyEvent.VK_R));
378: tableXK2VK.put(new Integer(X11Defs.XK_s), new Integer(
379: KeyEvent.VK_S));
380: tableXK2VK.put(new Integer(X11Defs.XK_t), new Integer(
381: KeyEvent.VK_T));
382: tableXK2VK.put(new Integer(X11Defs.XK_u), new Integer(
383: KeyEvent.VK_U));
384: tableXK2VK.put(new Integer(X11Defs.XK_v), new Integer(
385: KeyEvent.VK_V));
386: tableXK2VK.put(new Integer(X11Defs.XK_w), new Integer(
387: KeyEvent.VK_W));
388: tableXK2VK.put(new Integer(X11Defs.XK_x), new Integer(
389: KeyEvent.VK_X));
390: tableXK2VK.put(new Integer(X11Defs.XK_y), new Integer(
391: KeyEvent.VK_Y));
392: tableXK2VK.put(new Integer(X11Defs.XK_z), new Integer(
393: KeyEvent.VK_Z));
394: tableXK2VK.put(new Integer(X11Defs.XK_braceleft), new Integer(
395: KeyEvent.VK_BRACELEFT));
396: tableXK2VK.put(new Integer(X11Defs.XK_braceright), new Integer(
397: KeyEvent.VK_BRACERIGHT));
398: tableXK2VK.put(new Integer(X11Defs.XK_multiply), new Integer(
399: KeyEvent.VK_MULTIPLY));
400: tableXK2VK.put(new Integer(X11Defs.XK_KP_Multiply),
401: new Integer(KeyEvent.VK_MULTIPLY));
402: tableXK2VK.put(new Integer(X11Defs.XK_KP_Decimal), new Integer(
403: KeyEvent.VK_DECIMAL));
404: tableXK2VK.put(new Integer(X11Defs.XK_KP_Divide), new Integer(
405: KeyEvent.VK_DIVIDE));
406: tableXK2VK.put(new Integer(X11Defs.XK_KP_Subtract),
407: new Integer(KeyEvent.VK_SUBTRACT));
408: tableXK2VK.put(new Integer(X11Defs.XK_KP_Separator),
409: new Integer(KeyEvent.VK_SEPARATOR));
410: tableXK2VK.put(new Integer(X11Defs.XK_Meta_L), new Integer(
411: KeyEvent.VK_META));
412: tableXK2VK.put(new Integer(X11Defs.XK_Meta_R), new Integer(
413: KeyEvent.VK_META));
414: tableXK2VK.put(new Integer(X11Defs.XK_Alt_L), new Integer(
415: KeyEvent.VK_ALT));
416: tableXK2VK.put(new Integer(X11Defs.XK_Alt_R), new Integer(
417: KeyEvent.VK_ALT_GRAPH));
418: tableXK2VK.put(new Integer(X11Defs.XK_Shift_L), new Integer(
419: KeyEvent.VK_SHIFT));
420: tableXK2VK.put(new Integer(X11Defs.XK_Shift_R), new Integer(
421: KeyEvent.VK_SHIFT));
422: tableXK2VK.put(new Integer(X11Defs.XK_Control_L), new Integer(
423: KeyEvent.VK_CONTROL));
424: tableXK2VK.put(new Integer(X11Defs.XK_Control_R), new Integer(
425: KeyEvent.VK_CONTROL));
426: tableXK2VK.put(new Integer(X11Defs.XK_Return), new Integer(
427: KeyEvent.VK_ENTER));
428: tableXK2VK.put(new Integer(X11Defs.XK_KP_Enter), new Integer(
429: KeyEvent.VK_ENTER));
430: tableXK2VK.put(new Integer(X11Defs.XK_equal), new Integer(
431: KeyEvent.VK_EQUALS));
432: tableXK2VK.put(new Integer(X11Defs.XK_KP_Equal), new Integer(
433: KeyEvent.VK_EQUALS));
434: tableXK2VK.put(new Integer(X11Defs.XK_exclam), new Integer(
435: KeyEvent.VK_EXCLAMATION_MARK));
436: tableXK2VK.put(new Integer(X11Defs.XK_exclamdown), new Integer(
437: KeyEvent.VK_INVERTED_EXCLAMATION_MARK));
438: tableXK2VK.put(new Integer(X11Defs.XK_bracketright),
439: new Integer(KeyEvent.VK_CLOSE_BRACKET));
440: tableXK2VK.put(new Integer(X11Defs.XK_bracketleft),
441: new Integer(KeyEvent.VK_OPEN_BRACKET));
442: tableXK2VK.put(new Integer(X11Defs.XK_KP_Add), new Integer(
443: KeyEvent.VK_ADD));
444: tableXK2VK.put(new Integer(X11Defs.XK_quoteright), new Integer(
445: KeyEvent.VK_QUOTE));
446: tableXK2VK.put(new Integer(X11Defs.XK_quoteleft), new Integer(
447: KeyEvent.VK_BACK_QUOTE));
448: tableXK2VK.put(new Integer(X11Defs.XK_Kana_Shift), new Integer(
449: KeyEvent.VK_KANA));
450: tableXK2VK.put(new Integer(X11Defs.XK_MultipleCandidate),
451: new Integer(KeyEvent.VK_ALL_CANDIDATES));
452: tableXK2VK.put(new Integer(X11Defs.XK_PreviousCandidate),
453: new Integer(KeyEvent.VK_PREVIOUS_CANDIDATE));
454: tableXK2VK.put(new Integer(X11Defs.XK_backslash), new Integer(
455: KeyEvent.VK_BACK_SLASH));
456: tableXK2VK.put(new Integer(X11Defs.XK_BackSpace), new Integer(
457: KeyEvent.VK_BACK_SPACE));
458: tableXK2VK.put(new Integer(X11Defs.XK_asciicircum),
459: new Integer(KeyEvent.VK_CIRCUMFLEX));
460: tableXK2VK.put(new Integer(X11Defs.XK_Codeinput), new Integer(
461: KeyEvent.VK_CODE_INPUT));
462: tableXK2VK.put(new Integer(X11Defs.XK_EuroSign), new Integer(
463: KeyEvent.VK_EURO_SIGN));
464: tableXK2VK.put(new Integer(X11Defs.XK_Hiragana), new Integer(
465: KeyEvent.VK_JAPANESE_HIRAGANA));
466: tableXK2VK.put(new Integer(X11Defs.XK_Katakana), new Integer(
467: KeyEvent.VK_JAPANESE_KATAKANA));
468: tableXK2VK.put(new Integer(X11Defs.XK_parenleft), new Integer(
469: KeyEvent.VK_LEFT_PARENTHESIS));
470: tableXK2VK.put(new Integer(X11Defs.XK_parenright), new Integer(
471: KeyEvent.VK_RIGHT_PARENTHESIS));
472: tableXK2VK.put(new Integer(X11Defs.XK_Mode_switch),
473: new Integer(KeyEvent.VK_MODECHANGE));
474: tableXK2VK.put(new Integer(X11Defs.XK_numbersign), new Integer(
475: KeyEvent.VK_NUMBER_SIGN));
476: tableXK2VK.put(new Integer(X11Defs.XK_percent), new Integer(
477: KeyEvent.VK_5));
478: tableXK2VK.put(new Integer(X11Defs.XK_question), new Integer(
479: KeyEvent.VK_SLASH));
480: tableXK2VK.put(new Integer(X11Defs.XK_bar), new Integer(
481: KeyEvent.VK_BACK_SLASH));
482:
483: tableVK2XK = new HashMap();
484: tableVK2XK.put(new Integer(KeyEvent.VK_TAB), new Integer(
485: X11Defs.XK_Tab));
486: tableVK2XK.put(new Integer(KeyEvent.VK_CLEAR), new Integer(
487: X11Defs.XK_Clear));
488: tableVK2XK.put(new Integer(KeyEvent.VK_PAUSE), new Integer(
489: X11Defs.XK_Pause));
490: tableVK2XK.put(new Integer(KeyEvent.VK_SCROLL_LOCK),
491: new Integer(X11Defs.XK_Scroll_Lock));
492: tableVK2XK.put(new Integer(KeyEvent.VK_ESCAPE), new Integer(
493: X11Defs.XK_Escape));
494: tableVK2XK.put(new Integer(KeyEvent.VK_DELETE), new Integer(
495: X11Defs.XK_Delete));
496: tableVK2XK.put(new Integer(KeyEvent.VK_KANJI), new Integer(
497: X11Defs.XK_Kanji));
498: tableVK2XK.put(new Integer(KeyEvent.VK_HIRAGANA), new Integer(
499: X11Defs.XK_Hiragana));
500: tableVK2XK.put(new Integer(KeyEvent.VK_KATAKANA), new Integer(
501: X11Defs.XK_Katakana));
502: tableVK2XK.put(new Integer(KeyEvent.VK_KANA_LOCK), new Integer(
503: X11Defs.XK_Kana_Lock));
504: tableVK2XK.put(new Integer(KeyEvent.VK_HOME), new Integer(
505: X11Defs.XK_Home));
506: tableVK2XK.put(new Integer(KeyEvent.VK_LEFT), new Integer(
507: X11Defs.XK_Left));
508: tableVK2XK.put(new Integer(KeyEvent.VK_UP), new Integer(
509: X11Defs.XK_Up));
510: tableVK2XK.put(new Integer(KeyEvent.VK_RIGHT), new Integer(
511: X11Defs.XK_Right));
512: tableVK2XK.put(new Integer(KeyEvent.VK_DOWN), new Integer(
513: X11Defs.XK_Down));
514: tableVK2XK.put(new Integer(KeyEvent.VK_PAGE_UP), new Integer(
515: X11Defs.XK_Page_Up));
516: tableVK2XK.put(new Integer(KeyEvent.VK_PAGE_DOWN), new Integer(
517: X11Defs.XK_Page_Down));
518: tableVK2XK.put(new Integer(KeyEvent.VK_END), new Integer(
519: X11Defs.XK_End));
520: tableVK2XK.put(new Integer(KeyEvent.VK_INSERT), new Integer(
521: X11Defs.XK_Insert));
522: tableVK2XK.put(new Integer(KeyEvent.VK_UNDO), new Integer(
523: X11Defs.XK_Undo));
524: tableVK2XK.put(new Integer(KeyEvent.VK_FIND), new Integer(
525: X11Defs.XK_Find));
526: tableVK2XK.put(new Integer(KeyEvent.VK_CANCEL), new Integer(
527: X11Defs.XK_Cancel));
528: tableVK2XK.put(new Integer(KeyEvent.VK_HELP), new Integer(
529: X11Defs.XK_Help));
530: tableVK2XK.put(new Integer(KeyEvent.VK_NUM_LOCK), new Integer(
531: X11Defs.XK_Num_Lock));
532: tableVK2XK.put(new Integer(KeyEvent.VK_F1), new Integer(
533: X11Defs.XK_F1));
534: tableVK2XK.put(new Integer(KeyEvent.VK_F2), new Integer(
535: X11Defs.XK_F2));
536: tableVK2XK.put(new Integer(KeyEvent.VK_F3), new Integer(
537: X11Defs.XK_F3));
538: tableVK2XK.put(new Integer(KeyEvent.VK_F4), new Integer(
539: X11Defs.XK_F4));
540: tableVK2XK.put(new Integer(KeyEvent.VK_F5), new Integer(
541: X11Defs.XK_F5));
542: tableVK2XK.put(new Integer(KeyEvent.VK_F6), new Integer(
543: X11Defs.XK_F6));
544: tableVK2XK.put(new Integer(KeyEvent.VK_F7), new Integer(
545: X11Defs.XK_F7));
546: tableVK2XK.put(new Integer(KeyEvent.VK_F8), new Integer(
547: X11Defs.XK_F8));
548: tableVK2XK.put(new Integer(KeyEvent.VK_F9), new Integer(
549: X11Defs.XK_F9));
550: tableVK2XK.put(new Integer(KeyEvent.VK_F10), new Integer(
551: X11Defs.XK_F10));
552: tableVK2XK.put(new Integer(KeyEvent.VK_F11), new Integer(
553: X11Defs.XK_F11));
554: tableVK2XK.put(new Integer(KeyEvent.VK_F12), new Integer(
555: X11Defs.XK_F12));
556: tableVK2XK.put(new Integer(KeyEvent.VK_F13), new Integer(
557: X11Defs.XK_F13));
558: tableVK2XK.put(new Integer(KeyEvent.VK_F14), new Integer(
559: X11Defs.XK_F14));
560: tableVK2XK.put(new Integer(KeyEvent.VK_F15), new Integer(
561: X11Defs.XK_F15));
562: tableVK2XK.put(new Integer(KeyEvent.VK_F16), new Integer(
563: X11Defs.XK_F16));
564: tableVK2XK.put(new Integer(KeyEvent.VK_F17), new Integer(
565: X11Defs.XK_F17));
566: tableVK2XK.put(new Integer(KeyEvent.VK_F18), new Integer(
567: X11Defs.XK_F18));
568: tableVK2XK.put(new Integer(KeyEvent.VK_F19), new Integer(
569: X11Defs.XK_F19));
570: tableVK2XK.put(new Integer(KeyEvent.VK_F20), new Integer(
571: X11Defs.XK_F20));
572: tableVK2XK.put(new Integer(KeyEvent.VK_F21), new Integer(
573: X11Defs.XK_F21));
574: tableVK2XK.put(new Integer(KeyEvent.VK_F22), new Integer(
575: X11Defs.XK_F22));
576: tableVK2XK.put(new Integer(KeyEvent.VK_F23), new Integer(
577: X11Defs.XK_F23));
578: tableVK2XK.put(new Integer(KeyEvent.VK_F24), new Integer(
579: X11Defs.XK_F24));
580: tableVK2XK.put(new Integer(KeyEvent.VK_CAPS_LOCK), new Integer(
581: X11Defs.XK_Caps_Lock));
582: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_GRAVE),
583: new Integer(X11Defs.XK_dead_grave));
584: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_ACUTE),
585: new Integer(X11Defs.XK_dead_acute));
586: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_CIRCUMFLEX),
587: new Integer(X11Defs.XK_dead_circumflex));
588: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_TILDE),
589: new Integer(X11Defs.XK_dead_tilde));
590: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_MACRON),
591: new Integer(X11Defs.XK_dead_macron));
592: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_BREVE),
593: new Integer(X11Defs.XK_dead_breve));
594: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_ABOVEDOT),
595: new Integer(X11Defs.XK_dead_abovedot));
596: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_DIAERESIS),
597: new Integer(X11Defs.XK_dead_diaeresis));
598: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_ABOVERING),
599: new Integer(X11Defs.XK_dead_abovering));
600: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_DOUBLEACUTE),
601: new Integer(X11Defs.XK_dead_doubleacute));
602: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_CARON),
603: new Integer(X11Defs.XK_dead_caron));
604: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_CEDILLA),
605: new Integer(X11Defs.XK_dead_cedilla));
606: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_OGONEK),
607: new Integer(X11Defs.XK_dead_ogonek));
608: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_IOTA), new Integer(
609: X11Defs.XK_dead_iota));
610: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_VOICED_SOUND),
611: new Integer(X11Defs.XK_dead_voiced_sound));
612: tableVK2XK.put(new Integer(KeyEvent.VK_DEAD_SEMIVOICED_SOUND),
613: new Integer(X11Defs.XK_dead_semivoiced_sound));
614: tableVK2XK.put(new Integer(KeyEvent.VK_SPACE), new Integer(
615: X11Defs.XK_space));
616: tableVK2XK.put(new Integer(KeyEvent.VK_QUOTEDBL), new Integer(
617: X11Defs.XK_quotedbl));
618: tableVK2XK.put(new Integer(KeyEvent.VK_DOLLAR), new Integer(
619: X11Defs.XK_dollar));
620: tableVK2XK.put(new Integer(KeyEvent.VK_AMPERSAND), new Integer(
621: X11Defs.XK_ampersand));
622: tableVK2XK.put(new Integer(KeyEvent.VK_ASTERISK), new Integer(
623: X11Defs.XK_asterisk));
624: tableVK2XK.put(new Integer(KeyEvent.VK_PLUS), new Integer(
625: X11Defs.XK_plus));
626: tableVK2XK.put(new Integer(KeyEvent.VK_COMMA), new Integer(
627: X11Defs.XK_comma));
628: tableVK2XK.put(new Integer(KeyEvent.VK_MINUS), new Integer(
629: X11Defs.XK_minus));
630: tableVK2XK.put(new Integer(KeyEvent.VK_PERIOD), new Integer(
631: X11Defs.XK_period));
632: tableVK2XK.put(new Integer(KeyEvent.VK_SLASH), new Integer(
633: X11Defs.XK_slash));
634: tableVK2XK.put(new Integer(KeyEvent.VK_0), new Integer(
635: X11Defs.XK_0));
636: tableVK2XK.put(new Integer(KeyEvent.VK_1), new Integer(
637: X11Defs.XK_1));
638: tableVK2XK.put(new Integer(KeyEvent.VK_2), new Integer(
639: X11Defs.XK_2));
640: tableVK2XK.put(new Integer(KeyEvent.VK_3), new Integer(
641: X11Defs.XK_3));
642: tableVK2XK.put(new Integer(KeyEvent.VK_4), new Integer(
643: X11Defs.XK_4));
644: tableVK2XK.put(new Integer(KeyEvent.VK_5), new Integer(
645: X11Defs.XK_5));
646: tableVK2XK.put(new Integer(KeyEvent.VK_6), new Integer(
647: X11Defs.XK_6));
648: tableVK2XK.put(new Integer(KeyEvent.VK_7), new Integer(
649: X11Defs.XK_7));
650: tableVK2XK.put(new Integer(KeyEvent.VK_8), new Integer(
651: X11Defs.XK_8));
652: tableVK2XK.put(new Integer(KeyEvent.VK_9), new Integer(
653: X11Defs.XK_9));
654: tableVK2XK.put(new Integer(KeyEvent.VK_COLON), new Integer(
655: X11Defs.XK_colon));
656: tableVK2XK.put(new Integer(KeyEvent.VK_SEMICOLON), new Integer(
657: X11Defs.XK_semicolon));
658: tableVK2XK.put(new Integer(KeyEvent.VK_LESS), new Integer(
659: X11Defs.XK_less));
660: tableVK2XK.put(new Integer(KeyEvent.VK_GREATER), new Integer(
661: X11Defs.XK_greater));
662: tableVK2XK.put(new Integer(KeyEvent.VK_AT), new Integer(
663: X11Defs.XK_at));
664: tableVK2XK.put(new Integer(KeyEvent.VK_A), new Integer(
665: X11Defs.XK_A));
666: tableVK2XK.put(new Integer(KeyEvent.VK_B), new Integer(
667: X11Defs.XK_B));
668: tableVK2XK.put(new Integer(KeyEvent.VK_C), new Integer(
669: X11Defs.XK_C));
670: tableVK2XK.put(new Integer(KeyEvent.VK_D), new Integer(
671: X11Defs.XK_D));
672: tableVK2XK.put(new Integer(KeyEvent.VK_E), new Integer(
673: X11Defs.XK_E));
674: tableVK2XK.put(new Integer(KeyEvent.VK_F), new Integer(
675: X11Defs.XK_F));
676: tableVK2XK.put(new Integer(KeyEvent.VK_G), new Integer(
677: X11Defs.XK_G));
678: tableVK2XK.put(new Integer(KeyEvent.VK_H), new Integer(
679: X11Defs.XK_H));
680: tableVK2XK.put(new Integer(KeyEvent.VK_I), new Integer(
681: X11Defs.XK_I));
682: tableVK2XK.put(new Integer(KeyEvent.VK_J), new Integer(
683: X11Defs.XK_J));
684: tableVK2XK.put(new Integer(KeyEvent.VK_K), new Integer(
685: X11Defs.XK_K));
686: tableVK2XK.put(new Integer(KeyEvent.VK_L), new Integer(
687: X11Defs.XK_L));
688: tableVK2XK.put(new Integer(KeyEvent.VK_M), new Integer(
689: X11Defs.XK_M));
690: tableVK2XK.put(new Integer(KeyEvent.VK_N), new Integer(
691: X11Defs.XK_N));
692: tableVK2XK.put(new Integer(KeyEvent.VK_O), new Integer(
693: X11Defs.XK_O));
694: tableVK2XK.put(new Integer(KeyEvent.VK_P), new Integer(
695: X11Defs.XK_P));
696: tableVK2XK.put(new Integer(KeyEvent.VK_Q), new Integer(
697: X11Defs.XK_Q));
698: tableVK2XK.put(new Integer(KeyEvent.VK_R), new Integer(
699: X11Defs.XK_R));
700: tableVK2XK.put(new Integer(KeyEvent.VK_S), new Integer(
701: X11Defs.XK_S));
702: tableVK2XK.put(new Integer(KeyEvent.VK_T), new Integer(
703: X11Defs.XK_T));
704: tableVK2XK.put(new Integer(KeyEvent.VK_U), new Integer(
705: X11Defs.XK_U));
706: tableVK2XK.put(new Integer(KeyEvent.VK_V), new Integer(
707: X11Defs.XK_V));
708: tableVK2XK.put(new Integer(KeyEvent.VK_W), new Integer(
709: X11Defs.XK_W));
710: tableVK2XK.put(new Integer(KeyEvent.VK_X), new Integer(
711: X11Defs.XK_X));
712: tableVK2XK.put(new Integer(KeyEvent.VK_Y), new Integer(
713: X11Defs.XK_Y));
714: tableVK2XK.put(new Integer(KeyEvent.VK_Z), new Integer(
715: X11Defs.XK_Z));
716: tableVK2XK.put(new Integer(KeyEvent.VK_UNDERSCORE),
717: new Integer(X11Defs.XK_underscore));
718: tableVK2XK.put(new Integer(KeyEvent.VK_BRACELEFT), new Integer(
719: X11Defs.XK_braceleft));
720: tableVK2XK.put(new Integer(KeyEvent.VK_BRACERIGHT),
721: new Integer(X11Defs.XK_braceright));
722: tableVK2XK.put(new Integer(KeyEvent.VK_MULTIPLY), new Integer(
723: X11Defs.XK_multiply));
724: tableVK2XK.put(new Integer(KeyEvent.VK_DECIMAL), new Integer(
725: X11Defs.XK_KP_Decimal));
726: tableVK2XK.put(new Integer(KeyEvent.VK_META), new Integer(
727: X11Defs.XK_Meta_L));
728: tableVK2XK.put(new Integer(KeyEvent.VK_ALT), new Integer(
729: X11Defs.XK_Alt_L));
730: tableVK2XK.put(new Integer(KeyEvent.VK_ALT_GRAPH), new Integer(
731: X11Defs.XK_Alt_R));
732: tableVK2XK.put(new Integer(KeyEvent.VK_SHIFT), new Integer(
733: X11Defs.XK_Shift_L));
734: tableVK2XK.put(new Integer(KeyEvent.VK_CONTROL), new Integer(
735: X11Defs.XK_Control_L));
736: tableVK2XK.put(new Integer(KeyEvent.VK_ENTER), new Integer(
737: X11Defs.XK_Return));
738: tableVK2XK.put(new Integer(KeyEvent.VK_EQUALS), new Integer(
739: X11Defs.XK_equal));
740: tableVK2XK.put(new Integer(KeyEvent.VK_EXCLAMATION_MARK),
741: new Integer(X11Defs.XK_exclam));
742: tableVK2XK.put(new Integer(
743: KeyEvent.VK_INVERTED_EXCLAMATION_MARK), new Integer(
744: X11Defs.XK_exclamdown));
745: tableVK2XK.put(new Integer(KeyEvent.VK_CLOSE_BRACKET),
746: new Integer(X11Defs.XK_bracketright));
747: tableVK2XK.put(new Integer(KeyEvent.VK_OPEN_BRACKET),
748: new Integer(X11Defs.XK_bracketleft));
749: tableVK2XK.put(new Integer(KeyEvent.VK_QUOTE), new Integer(
750: X11Defs.XK_quoteright));
751: tableVK2XK.put(new Integer(KeyEvent.VK_BACK_QUOTE),
752: new Integer(X11Defs.XK_quoteleft));
753: tableVK2XK.put(new Integer(KeyEvent.VK_KANA), new Integer(
754: X11Defs.XK_Kana_Shift));
755: tableVK2XK.put(new Integer(KeyEvent.VK_ALL_CANDIDATES),
756: new Integer(X11Defs.XK_MultipleCandidate));
757: tableVK2XK.put(new Integer(KeyEvent.VK_PREVIOUS_CANDIDATE),
758: new Integer(X11Defs.XK_PreviousCandidate));
759: tableVK2XK.put(new Integer(KeyEvent.VK_BACK_SLASH),
760: new Integer(X11Defs.XK_backslash));
761: tableVK2XK.put(new Integer(KeyEvent.VK_BACK_SPACE),
762: new Integer(X11Defs.XK_BackSpace));
763: tableVK2XK.put(new Integer(KeyEvent.VK_CIRCUMFLEX),
764: new Integer(X11Defs.XK_asciicircum));
765: tableVK2XK.put(new Integer(KeyEvent.VK_CODE_INPUT),
766: new Integer(X11Defs.XK_Codeinput));
767: tableVK2XK.put(new Integer(KeyEvent.VK_EURO_SIGN), new Integer(
768: X11Defs.XK_EuroSign));
769: tableVK2XK.put(new Integer(KeyEvent.VK_JAPANESE_HIRAGANA),
770: new Integer(X11Defs.XK_Hiragana));
771: tableVK2XK.put(new Integer(KeyEvent.VK_JAPANESE_KATAKANA),
772: new Integer(X11Defs.XK_Katakana));
773: tableVK2XK.put(new Integer(KeyEvent.VK_LEFT_PARENTHESIS),
774: new Integer(X11Defs.XK_parenleft));
775: tableVK2XK.put(new Integer(KeyEvent.VK_RIGHT_PARENTHESIS),
776: new Integer(X11Defs.XK_parenright));
777: tableVK2XK.put(new Integer(KeyEvent.VK_MODECHANGE),
778: new Integer(X11Defs.XK_Mode_switch));
779: tableVK2XK.put(new Integer(KeyEvent.VK_NUMBER_SIGN),
780: new Integer(X11Defs.XK_numbersign));
781: tableVK2XK.put(new Integer(KeyEvent.VK_UNDEFINED), new Integer(
782: X11Defs.NoSymbol));
783: }
784:
785: /**
786: * Translates virtual key to KeySym.
787: * @param vk virtual key
788: * @return KeySym or NoSymbol
789: */
790: static int VK2XK(int vk) {
791: Object xk = tableVK2XK.get(new Integer(vk));
792:
793: if (xk != null) {
794: return ((Integer) xk).intValue();
795: }
796:
797: return X11Defs.NoSymbol;
798: }
799:
800: /**
801: * Translates linux key event to internal structure KeyInfo and returns it.
802: * @param event instance of XKeyEvent
803: * @return instance of KeyInfo
804: */
805: static KeyInfo translateEvent(X11.XKeyEvent event) {
806: KeyInfo res = new KeyInfo();
807: int nBytes = 255;
808: Int8Pointer buffer = bridge.createInt8Pointer(nBytes, false);
809: buffer.fill((byte) 0, nBytes);
810: CLongPointer keySymPtr = bridge.createCLongPointer(1, false);
811:
812: nBytes = x11.XLookupString(event, buffer, nBytes, keySymPtr,
813: null);
814:
815: if (nBytes > 0) {
816: String str = buffer.getStringUTF();
817: res.keyChars.append(str);
818: } else {
819: res.keyChars.append(KeyEvent.CHAR_UNDEFINED);
820: }
821: int keySym = (int) keySymPtr.get(0);
822:
823: if (tableXK2VK.containsKey(new Integer(keySym))) {
824: res.vKey = ((Integer) tableXK2VK.get(new Integer(keySym)))
825: .intValue();
826: res.keyLocation = deriveLocation(keySym);
827: } else {
828: res.vKey = KeyEvent.VK_UNDEFINED;
829: res.keyLocation = KeyEvent.KEY_LOCATION_STANDARD;
830: }
831:
832: return res;
833: }
834:
835: private static int deriveLocation(int keySym) {
836: switch (keySym) {
837: case X11Defs.XK_Alt_L:
838: case X11Defs.XK_Meta_L:
839: case X11Defs.XK_Shift_L:
840: case X11Defs.XK_Control_L:
841: return KeyEvent.KEY_LOCATION_LEFT;
842: case X11Defs.XK_Alt_R:
843: case X11Defs.XK_Meta_R:
844: case X11Defs.XK_Shift_R:
845: case X11Defs.XK_Control_R:
846: return KeyEvent.KEY_LOCATION_RIGHT;
847: case X11Defs.XK_KP_Tab:
848: case X11Defs.XK_KP_Delete:
849: case X11Defs.XK_KP_Home:
850: case X11Defs.XK_KP_Page_Up:
851: case X11Defs.XK_KP_Page_Down:
852: case X11Defs.XK_KP_End:
853: case X11Defs.XK_KP_Insert:
854: case X11Defs.XK_KP_Left:
855: case X11Defs.XK_KP_Up:
856: case X11Defs.XK_KP_Right:
857: case X11Defs.XK_KP_Down:
858: case X11Defs.XK_KP_0:
859: case X11Defs.XK_KP_1:
860: case X11Defs.XK_KP_2:
861: case X11Defs.XK_KP_3:
862: case X11Defs.XK_KP_4:
863: case X11Defs.XK_KP_5:
864: case X11Defs.XK_KP_6:
865: case X11Defs.XK_KP_7:
866: case X11Defs.XK_KP_8:
867: case X11Defs.XK_KP_9:
868: case X11Defs.XK_KP_F1:
869: case X11Defs.XK_KP_F2:
870: case X11Defs.XK_KP_F3:
871: case X11Defs.XK_KP_F4:
872: case X11Defs.XK_KP_Space:
873: case X11Defs.XK_KP_Multiply:
874: case X11Defs.XK_KP_Decimal:
875: case X11Defs.XK_KP_Divide:
876: case X11Defs.XK_KP_Subtract:
877: case X11Defs.XK_KP_Separator:
878: case X11Defs.XK_KP_Enter:
879: case X11Defs.XK_KP_Equal:
880: case X11Defs.XK_KP_Add:
881: return KeyEvent.KEY_LOCATION_NUMPAD;
882: default:
883: return KeyEvent.KEY_LOCATION_STANDARD;
884: }
885: }
886:
887: }
|