1 /*  Copyright 2008  Edwin Stang (edwinstang@gmail.com),
2  *
3  *  This file is part of JXGrabKey.
4  *
5  *  JXGrabKey is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Lesser General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  JXGrabKey is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Lesser General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Lesser General Public License
16  *  along with JXGrabKey.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 package jxgrabkey;
20 
21 import java.awt.event.KeyEvent;
22 
23 /**
24  * This class holds definitions for X11 keysyms. It can also convert AWT keys into X11 keysyms.
25  *
26  * These definitions are taken from the escher project (http://escher.sourceforge.net/).
27  * They converted them from the original X11 definitions.
28  */
29 public final class X11KeysymDefinitions {
30 
31     //Latin1 ******************************************************************
32     public static final int SPACE = 0x020;
33     public static final int EXCLAM = 0x021;
34     public static final int QUOTE_DBL = 0x022;
35     public static final int NUMBER_SIGN = 0x023;
36     public static final int DOLLAR = 0x024;
37     public static final int PERCENT = 0x025;
38     public static final int AMPERSAND = 0x026;
39     public static final int APOSTROPHE = 0x027;
40     public static final int QUOTE_RIGHT = 0x027; /* deprecated */
41     public static final int PAREN_LEFT = 0x028;
42     public static final int PAREN_RIGHT = 0x029;
43     public static final int ASTERISK = 0x02a;
44     public static final int PLUS = 0x02b;
45     public static final int COMMA = 0x02c;
46     public static final int MINUS = 0x02d;
47     public static final int PERIOD = 0x02e;
48     public static final int SLASH = 0x02f;
49     public static final int NUM_0 = 0x030;
50     public static final int NUM_1 = 0x031;
51     public static final int NUM_2 = 0x032;
52     public static final int NUM_3 = 0x033;
53     public static final int NUM_4 = 0x034;
54     public static final int NUM_5 = 0x035;
55     public static final int NUM_6 = 0x036;
56     public static final int NUM_7 = 0x037;
57     public static final int NUM_8 = 0x038;
58     public static final int NUM_9 = 0x039;
59     public static final int COLON = 0x03a;
60     public static final int SEMICOLON = 0x03b;
61     public static final int LESS = 0x03c;
62     public static final int EQUAL = 0x03d;
63     public static final int GREATER = 0x03e;
64     public static final int QUESTION = 0x03f;
65     public static final int AT = 0x040;
66     public static final int A = 0x041;
67     public static final int B = 0x042;
68     public static final int C = 0x043;
69     public static final int D = 0x044;
70     public static final int E = 0x045;
71     public static final int F = 0x046;
72     public static final int G = 0x047;
73     public static final int H = 0x048;
74     public static final int I = 0x049;
75     public static final int J = 0x04a;
76     public static final int K = 0x04b;
77     public static final int L = 0x04c;
78     public static final int M = 0x04d;
79     public static final int N = 0x04e;
80     public static final int O = 0x04f;
81     public static final int P = 0x050;
82     public static final int Q = 0x051;
83     public static final int R = 0x052;
84     public static final int S = 0x053;
85     public static final int T = 0x054;
86     public static final int U = 0x055;
87     public static final int V = 0x056;
88     public static final int W = 0x057;
89     public static final int X = 0x058;
90     public static final int Y = 0x059;
91     public static final int Z = 0x05a;
92     public static final int BRACKET_LEFT = 0x05b;
93     public static final int BACKSLASH = 0x05c;
94     public static final int BRACKET_RIGHT = 0x05d;
95     public static final int ASCII_CIRCUM = 0x05e;
96     public static final int UNDERSCORE = 0x05f;
97     public static final int GRAVE = 0x060;
98     public static final int QUOTE_LEFT = 0x060; /* deprecated */
99 
100     public static final int A_SMALL = 0x061;
101     public static final int B_SMALL = 0x062;
102     public static final int C_SMALL = 0x063;
103     public static final int D_SMALL = 0x064;
104     public static final int E_SMALL = 0x065;
105     public static final int F_SMALL = 0x066;
106     public static final int G_SMALL = 0x067;
107     public static final int H_SMALL = 0x068;
108     public static final int I_SMALL = 0x069;
109     public static final int J_SMALL = 0x06a;
110     public static final int K_SMALL = 0x06b;
111     public static final int L_SMALL = 0x06c;
112     public static final int M_SMALL = 0x06d;
113     public static final int N_SMALL = 0x06e;
114     public static final int O_SMALL = 0x06f;
115     public static final int P_SMALL = 0x070;
116     public static final int Q_SMALL = 0x071;
117     public static final int R_SMALL = 0x072;
118     public static final int S_SMALL = 0x073;
119     public static final int T_SMALL = 0x074;
120     public static final int U_SMALL = 0x075;
121     public static final int V_SMALL = 0x076;
122     public static final int W_SMALL = 0x077;
123     public static final int X_SMALL = 0x078;
124     public static final int Y_SMALL = 0x079;
125     public static final int Z_SMALL = 0x07a;
126 
127     public static final int BRACE_LEFT = 0x07b;
128     public static final int BAR = 0x07c;
129     public static final int BRACE_RIGHT = 0x07d;
130     public static final int ASCII_TILDE = 0x07e;
131 
132     public static final int NO_BREAKSPACE = 0x0a0;;
133     public static final int EXCLAM_DOWN = 0x0a1;
134     public static final int CENT = 0x0a2;
135     public static final int STERLING = 0x0a3;
136     public static final int CURRENCY = 0x0a4;
137     public static final int YEN = 0x0a5;
138     public static final int BROKEN_BAR = 0x0a6;
139     public static final int SECTION = 0x0a7;
140     public static final int DIAERESIS = 0x0a8;
141     public static final int COPYRIGHT = 0x0a9;
142     public static final int ORDFEMININE = 0x0aa;
143     public static final int GUILLEMOT_LEFT = 0x0ab; /* left angle quotation mark */
144     public static final int NOT_SIGN = 0x0ac;
145     public static final int HYPHEN = 0x0ad;
146     public static final int REGISTERED = 0x0ae;
147     public static final int MACRON = 0x0af;
148     public static final int DEGREE = 0x0b0;
149     public static final int PLUS_MINUS = 0x0b1;
150     public static final int TWO_SUPERIOR = 0x0b2;
151     public static final int THREE_SUPERIOR = 0x0b3;
152     public static final int ACUTE = 0x0b4;
153     public static final int MU = 0x0b5;
154     public static final int PARAGRAPH = 0x0b6;
155     public static final int PERIOD_CENTERED = 0x0b7;
156     public static final int CEDILLA = 0x0b8;
157     public static final int ONE_SUPERIOR = 0x0b9;
158     public static final int MASCULINE = 0x0ba;
159     public static final int GUILLEMOT_RIGHT = 0x0bb; /* right angle quotation mark */
160     public static final int ONE_QUARTER = 0x0bc;
161     public static final int ONE_HALF = 0x0bd;
162     public static final int THREE_QUARTERS = 0x0be;
163     public static final int QUESTION_DOWN = 0x0bf;
164     public static final int A_GRAVE = 0x0c0;
165     public static final int A_ACUTE = 0x0c1;
166     public static final int A_CIRCUMFLEX = 0x0c2;
167     public static final int A_TILDE = 0x0c3;
168     public static final int A_DIAERESIS = 0x0c4;
169     public static final int A_RING = 0x0c5;
170     public static final int AE = 0x0c6;
171     public static final int C_CEDILLA = 0x0c7;
172     public static final int E_GRAVE = 0x0c8;
173     public static final int E_ACUTE = 0x0c9;
174     public static final int E_CIRCUMFLEX = 0x0ca;
175     public static final int E_DIAERESIS = 0x0cb;
176     public static final int I_GRAVE = 0x0cc;
177     public static final int I_ACUTE = 0x0cd;
178     public static final int I_CIRCUMFLEX = 0x0ce;
179     public static final int I_DIAERESIS = 0x0cf;
180     public static final int E_TH = 0x0d0;
181     public static final int N_TILDE = 0x0d1;
182     public static final int O_GRAVE = 0x0d2;
183     public static final int O_ACUTE = 0x0d3;
184     public static final int O_CIRCUMFLEX = 0x0d4;
185     public static final int O_TILDE = 0x0d5;
186     public static final int O_DIAERESIS = 0x0d6;
187     public static final int MULTIPLY = 0x0d7;
188     public static final int O_OBLIQUE = 0x0d8;
189     public static final int O_SLASH = 0x0d9;
190     public static final int U_ACUTE = 0x0da;;
191     public static final int U_CIRCUMFLEX = 0x0db;
192     public static final int U_DIAERESIS = 0x0dc;
193     public static final int Y_ACUTE = 0x0dd;
194     public static final int T_HORN = 0x0de;
195     public static final int S_SHARP = 0x0df;
196 
197     public static final int A_GRAVE_SMALL = 0x0e0;
198     public static final int A_ACUTE_SMALL = 0x0e1;
199     public static final int A_CIRCUMFLEX_SMALL = 0x0e2;
200     public static final int A_TILDE_SMALL = 0x0e3;
201     public static final int A_DIAERESIS_SMALL = 0x0e4;
202     public static final int A_RING_SMALL = 0x0e5;
203     public static final int AE_SMALL = 0x0e6;
204     public static final int C_CEDILLA_SMALL = 0x0e7;
205     public static final int E_GRAVE_SMALL = 0x0e8;
206     public static final int E_ACUTE_SMALL = 0x0e9;
207     public static final int E_CIRCUMFLEX_SMALL = 0x0ea;
208     public static final int E_DIAERESIS_SMALL = 0x0eb;
209     public static final int I_GRAVE_SMALL = 0x0ec;
210     public static final int I_ACUTE_SMALL = 0x0ed;
211     public static final int I_CIRCUMFLEX_SMALL = 0x0ee;
212     public static final int I_DIAERESIS_SMALL = 0x0ef;
213     public static final int E_TH_SMALL = 0x0f0;
214     public static final int N_TILDE_SMALL = 0x0f1;
215     public static final int O_GRAVE_SMALL = 0x0f2;
216     public static final int O_ACUTE_SMALL = 0x0f3;
217     public static final int O_CIRCUMFLEX_SMALL = 0x0f4;
218     public static final int O_TILDE_SMALL = 0x0f5;
219     public static final int O_DIAERESIS_SMALL = 0x0f6;
220     public static final int DIVISION_SMALL = 0x0f7;
221     public static final int O_SLASH_SMALL = 0x0f8;
222     public static final int O_OBLIQUE_SMALL = 0x0f9;
223     public static final int UA_CUTE_SMALL = 0x0fa;;
224     public static final int U_CIRCUMFLEX_SMALL = 0x0fb;
225     public static final int U_DIAERESIS_SMALL = 0x0fc;
226     public static final int YA_CUTE_SMALL = 0x0fd;
227     public static final int T_HORN_SMALL = 0x0fe;
228     public static final int Y_DIAERESIS_SMALL = 0x0ff;
229 
230     //Misc ********************************************************************
231     public static final int VOID_SYMBOL = 0xffffff;
232 
233 
234     /* TTY Functions, cleverly chosen to map to ascii, for convenience of
235     * programming, but could have been arbitrary (at the cost of lookup
236     * tables in client code).
237     */
238 
239     public static final int BACKSPACE = 0xff08; /* back space, back char */
240     public static final int TAB = 0xff09;
241     public static final int LINEFEED = 0xff0a; /* linefeed, LF */
242     public static final int CLEAR = 0xff0b;
243     public static final int RETURN = 0xff0d; /* return, enter */
244     public static final int PAUSE = 0xff13; /* pause, hold */
245     public static final int SCROLL_LOCK = 0xff14;
246     public static final int SYS_REQ = 0xff15;
247     public static final int ESCAPE = 0xff1b;
248     public static final int DELETE = 0xffff; /* delete, rubout */
249 
250 
251     /* International & multi-key character composition. */
252 
253     public static final int MULTI_KEY = 0xff20; /* multi-key character compose */
254     public static final int CODEINPUT = 0xff37;
255     public static final int SINGLE_CANDIDATE = 0xff3c;
256     public static final int MULTIPLE_CANDIDATE = 0xff3d;
257     public static final int PREVIOUS_CANDIDATE = 0xff3e;
258 
259 
260 
261     /* Japanese keyboard support. 0xff31 thru 0xff3f are under XK_KOREAN. */
262 
263     public static final int KANJI = 0xff21; /* kanji, kanji convert */
264     public static final int MUHENKAN = 0xff22; /* cancel conversion */
265     public static final int HENKAN_MODE = 0xff23; /* start/stop conversion */
266     public static final int HENKAN = 0xff23; /* alias for henkan_mode */
267     public static final int ROMAJI = 0xff24; /* to romaji */
268     public static final int HIRAGANA = 0xff25; /* to hiragana */
269     public static final int KATAKANA = 0xff26; /* to katakana */
270     public static final int HIRAGANA_KATAKANA = 0xff27; /* hiragana/katakana toggle */
271     public static final int ZENKAKU = 0xff28; /* to zenkaku */
272     public static final int HANKAKU = 0xff29; /* to hankaku */
273     public static final int ZENKAKU_HANKAKU = 0xff2a; /* zenkaku/hankaku toggle */
274     public static final int TOUROKU = 0xff2b; /* add to dictionary */
275     public static final int MASSYO = 0xff2c; /* delete from dictionary */
276     public static final int KANA_LOCK = 0xff2d; /* kana lock */
277     public static final int KANA_SHIFT = 0xff2e; /* kana shift */
278     public static final int EISU_SHIFT = 0xff2f; /* alphanumeric shift */
279     public static final int EISU_TOGGLE = 0xff30; /* alphanumeric toggle */
280     public static final int KANJI_BANGOU = 0xff37; /* codeinput */
281     public static final int ZEN_KOHO = 0xff3d; /* multiple/all candidate(s) */
282     public static final int MAE_KOHO = 0xff3e; /* previous candidate */
283 
284 
285     /** Cursor control & motion. */
286 
287     public static final int HOME = 0xff50;
288     public static final int LEFT = 0xff51; /* move left, left arrow */
289     public static final int UP = 0xff52; /* move up, up arrow */
290     public static final int RIGHT = 0xff53; /* move right, right arrow */
291     public static final int DOWN = 0xff54; /* move down, down arrow */
292     public static final int PRIOR = 0xff55; /* prior, previous */
293     public static final int PAGE_UP = 0xff55;
294     public static final int NEXT = 0xff56; /* next */
295     public static final int PAGE_DOWN = 0xff56;
296     public static final int END = 0xff57; /* eol */
297     public static final int BEGIN = 0xff58; /* bol */
298 
299 
300     /* Misc Functions. */
301 
302     public static final int SELECT = 0xff60; /* select, mark */
303     public static final int PRINT = 0xff61;
304     public static final int EXECUTE = 0xff62; /* execute, run, do */
305     public static final int INSERT = 0xff63; /* insert, insert here */
306     public static final int UNDO = 0xff65; /* undo, oops */
307     public static final int REDO = 0xff66; /* redo, again */
308     public static final int MENU = 0xff67;
309     public static final int FIND = 0xff68; /* find, search */
310     public static final int CANCEL = 0xff69; /* cancel, stop, abort, exit */
311     public static final int HELP = 0xff6a; /* help */
312     public static final int BREAK = 0xff6b;
313     public static final int MODE_SWITCH = 0xff7e; /* character set switch */
314     public static final int SCRIPT_SWITCH = 0xff7e; /* alias for mode_switch */
315     public static final int NUM_LOCK = 0xff7f;
316 
317 
318     /* Keypad Functions, keypad numbers cleverly chosen to map to ascii. */
319 
320     public static final int KP_SPACE = 0xff80; /* space */
321     public static final int KP_TAB = 0xff89;
322     public static final int KP_ENTER = 0xff8d; /* enter */
323     public static final int KP_F1 = 0xff91; /* pf1, kp_a, ... */
324     public static final int KP_F2 = 0xff92;
325     public static final int KP_F3 = 0xff93;
326     public static final int KP_F4 = 0xff94;
327     public static final int KP_HOME = 0xff95;
328     public static final int KP_LEFT = 0xff96;
329     public static final int KP_UP = 0xff97;
330     public static final int KP_RIGHT = 0xff98;
331     public static final int KP_DOWN = 0xff99;
332     public static final int KP_PRIOR = 0xff9a;
333     public static final int KP_PAGE_UP = 0xff9a;
334     public static final int KP_NEXT = 0xff9b;
335     public static final int KP_PAGE_DOWN = 0xff9b;
336     public static final int KP_END = 0xff9c;
337     public static final int KP_BEGIN = 0xff9d;
338     public static final int KP_INSERT = 0xff9e;
339     public static final int KP_DELETE = 0xff9f;
340     public static final int KP_EQUAL = 0xffbd; /* equals */
341     public static final int KP_MULTIPLY = 0xffaa;
342     public static final int KP_ADD = 0xffab;
343     public static final int KP_SEPARATOR = 0xffac; /* separator, often comma */
344     public static final int KP_SUBTRACT = 0xffad;
345     public static final int KP_DECIMAL = 0xffae;
346     public static final int KP_DIVIDE = 0xffaf;
347 
348     public static final int KP_0 = 0xffb0;;
349     public static final int KP_1 = 0xffb1;
350     public static final int KP_2 = 0xffb2;
351     public static final int KP_3 = 0xffb3;
352     public static final int KP_4 = 0xffb4;
353     public static final int KP_5 = 0xffb5;
354     public static final int KP_6 = 0xffb6;
355     public static final int KP_7 = 0xffb7;
356     public static final int KP_8 = 0xffb8;
357     public static final int KP_9 = 0xffb9;
358 
359 
360 
361     /* Auxilliary Functions; note the duplicate definitions for left and
362     * right function keys; Sun keyboards and a few other manufactures have
363     * such function key groups on the left and/or right sides of the
364     * keyboard. We've not found a keyboard with more than 35 function keys
365     * total.
366     */
367 
368     public static final int F1 = 0xffbe;
369     public static final int F2 = 0xffbf;
370     public static final int F3 = 0xffc0;
371     public static final int F4 = 0xffc1;
372     public static final int F5 = 0xffc2;
373     public static final int F6 = 0xffc3;
374     public static final int F7 = 0xffc4;
375     public static final int F8 = 0xffc5;
376     public static final int F9 = 0xffc6;
377     public static final int F10 = 0xffc7;
378     public static final int F11 = 0xffc8;
379     public static final int L1 = 0xffc8;
380     public static final int F12 = 0xffc9;
381     public static final int L2 = 0xffc9;
382     public static final int F13 = 0xffca;
383     public static final int L3 = 0xffca;
384     public static final int F14 = 0xffcb;
385     public static final int L4 = 0xffcb;
386     public static final int F15 = 0xffcc;
387     public static final int L5 = 0xffcc;
388     public static final int F16 = 0xffcd;
389     public static final int L6 = 0xffcd;
390     public static final int F17 = 0xffce;
391     public static final int L7 = 0xffce;
392     public static final int F18 = 0xffcf;
393     public static final int L8 = 0xffcf;
394     public static final int F19 = 0xffd0;
395     public static final int L9 = 0xffd0;
396     public static final int F20 = 0xffd1;
397     public static final int L10 = 0xffd1;
398     public static final int F21 = 0xffd2;
399     public static final int R1 = 0xffd2;
400     public static final int F22 = 0xffd3;
401     public static final int R2 = 0xffd3;
402     public static final int F23 = 0xffd4;
403     public static final int R3 = 0xffd4;
404     public static final int F24 = 0xffd5;
405     public static final int R4 = 0xffd5;
406     public static final int F25 = 0xffd6;
407     public static final int R5 = 0xffd6;
408     public static final int F26 = 0xffd7;
409     public static final int R6 = 0xffd7;
410     public static final int F27 = 0xffd8;
411     public static final int R7 = 0xffd8;
412     public static final int F28 = 0xffd9;
413     public static final int R8 = 0xffd9;
414     public static final int F29 = 0xffda;
415     public static final int R9 = 0xffda;
416     public static final int F30 = 0xffdb;
417     public static final int R10 = 0xffdb;
418     public static final int F31 = 0xffdc;
419     public static final int R11 = 0xffdc;
420     public static final int F32 = 0xffdd;
421     public static final int R12 = 0xffdd;
422     public static final int F33 = 0xffde;
423     public static final int R13 = 0xffde;
424     public static final int F34 = 0xffdf;
425     public static final int R14 = 0xffdf;
426     public static final int F35 = 0xffe0;
427     public static final int R15 = 0xffe0;
428 
429 
430     /* Modifiers. */
431 
432     public static final int SHIFT_L = 0xffe1; /* left shift */
433     public static final int SHIFT_R = 0xffe2; /* right shift */
434     public static final int CONTROL_L = 0xffe3; /* left control */
435     public static final int CONTROL_R = 0xffe4; /* right control */
436     public static final int CAPS_LOCK = 0xffe5; /* caps lock */
437     public static final int SHIFT_LOCK = 0xffe6; /* shift lock */
438 
439     public static final int META_L = 0xffe7; /* left meta */
440     public static final int META_R = 0xffe8; /* right meta */
441     public static final int ALT_L = 0xffe9; /* left alt */
442     public static final int ALT_R = 0xffea; /* right alt */
443     public static final int SUPER_L = 0xffeb; /* left super */
444     public static final int SUPER_R = 0xffec; /* right super */
445     public static final int HYPER_L = 0xffed; /* left hyper */
446     public static final int HYPER_R = 0xffee; /* right hyper */
447 
448     //XKB *********************************************************************
449     public static final int LOCK = 0xfe01;
450     public static final int LEVEL2_LATCH = 0xfe02;
451     public static final int LEVEL3_SHIFT = 0xfe03;
452     public static final int LEVEL3_LATCH = 0xfe04;
453     public static final int LEVEL3_LOCK = 0xfe05;
454     public static final int GROUP_SHIFT = 0xff7e; /* alias for mode_switch */
455     public static final int GROUP_LATCH = 0xfe06;
456     public static final int GROUP_LOCK = 0xfe07;
457     public static final int NEXT_GROUP = 0xfe08;
458     public static final int NEXT_GROUP_LOCK = 0xfe09;
459     public static final int PREV_GROUP = 0xfe0a;
460     public static final int PREV_GROUP_LOCK = 0xfe0b;
461     public static final int FIRST_GROUP = 0xfe0c;
462     public static final int FIRST_GROUP_LOCK = 0xfe0d;
463     public static final int LAST_GROUP = 0xfe0e;
464     public static final int LAST_GROUP_LOCK = 0xfe0f;
465 
466     public static final int LEFT_TAB = 0xfe20;;
467     public static final int MOVE_LINE_UP = 0xfe21;
468     public static final int MOVE_LINE_DOWN = 0xfe22;
469     public static final int PARTIAL_LINE_UP = 0xfe23;
470     public static final int PARTIAL_LINE_DOWN = 0xfe24;
471     public static final int PARTIAL_SPACE_LEFT = 0xfe25;
472     public static final int PARTIAL_SPACE_RIGHT = 0xfe26;
473     public static final int SET_MARGIN_LEFT = 0xfe27;
474     public static final int SET_MARGIN_RIGHT = 0xfe28;
475     public static final int RELEASE_MARGIN_LEFT = 0xfe29;
476     public static final int RELEASE_MARGIN_RIGHT = 0xfe2a;
477     public static final int RELEASE_BOTH_MARGINS = 0xfe2b;
478     public static final int FAST_CURSOR_LEFT = 0xfe2c;
479     public static final int FAST_CURSOR_RIGHT = 0xfe2d;
480     public static final int FAST_CURSOR_UP = 0xfe2e;
481     public static final int FAST_CURSOR_DOWN = 0xfe2f;
482     public static final int CONTINUOUS_UNDERLINE = 0xfe30;
483     public static final int DISCONTINUOUS_UNDERLINE = 0xfe31;
484     public static final int EMPHASIZE = 0xfe32;
485     public static final int CENTER_OBJECT = 0xfe33;
486     public static final int ENTER = 0xfe34;
487 
488     public static final int DEAD_GRAVE = 0xfe50;;
489     public static final int DEAD_ACUTE = 0xfe51;
490     public static final int DEAD_CIRCUMFLEX = 0xfe52;
491     public static final int DEAD_TILDE = 0xfe53;
492     public static final int DEAD_MACRON = 0xfe54;
493     public static final int DEAD_BREVE = 0xfe55;
494     public static final int DEAD_ABOVEDOT = 0xfe56;
495     public static final int DEAD_DIAERESIS = 0xfe57;
496     public static final int DEAD_ABOVERING = 0xfe58;
497     public static final int DEAD_DOUBLEACUTE = 0xfe59;
498     public static final int DEAD_CARON = 0xfe5a;
499     public static final int DEAD_CEDILLA = 0xfe5b;
500     public static final int DEAD_OGONEK = 0xfe5c;
501     public static final int DEAD_IOTA = 0xfe5d;
502     public static final int DEAD_VOICED_SOUND = 0xfe5e;
503     public static final int DEAD_SEMIVOICED_SOUND = 0xfe5f;
504     public static final int DEAD_BELOWDOT = 0xfe60;
505     public static final int DEAD_HOOK = 0xfe61;
506     public static final int DEAD_HORN = 0xfe62;
507 
508     public static final int FIRST_VIRTUAL_SCREEN = 0xfed0;;
509     public static final int PREV_VIRTUAL_SCREEN = 0xfed1;
510     public static final int NEXT_VIRTUAL_SCREEN = 0xfed2;
511     public static final int LAST_VIRTUAL_SCREEN = 0xfed4;
512     public static final int TERMINATE_SERVER = 0xfed5;
513 
514     public static final int ACCESS_X_ENABLE = 0xfe70;;
515     public static final int ACCESS_X_FEEDBACK_ENABLE = 0xfe71;
516     public static final int REPEAT_KEYS_ENABLE = 0xfe72;
517     public static final int SLOW_KEYS_ENABLE = 0xfe73;
518     public static final int BOUNCE_KEYS_ENABLE = 0xfe74;
519     public static final int STICKY_KEYS_ENABLE = 0xfe75;
520     public static final int MOUSE_KEYS_ENABLE = 0xfe76;
521     public static final int MOUSE_KEYS_ACCEL_ENABLE = 0xfe77;
522     public static final int OVERLAY1_ENABLE = 0xfe78;
523     public static final int OVERLAY2_ENABLE = 0xfe79;
524     public static final int AUDIBLE_BELL_ENABLE = 0xfe7a;
525 
526     public static final int POINTER_LEFT = 0xfee0;;
527     public static final int POINTER_RIGHT = 0xfee1;
528     public static final int POINTER_UP = 0xfee2;
529     public static final int POINTER_DOWN = 0xfee3;
530     public static final int POINTER_UP_LEFT = 0xfee4;
531     public static final int POINTER_UP_RIGHT = 0xfee5;
532     public static final int POINTER_DOWN_LEFT = 0xfee6;
533     public static final int POINTER_DOWN_RIGHT = 0xfee7;
534     public static final int POINTER_BUTTON_DFLT = 0xfee8;
535     public static final int POINTER_BUTTON1 = 0xfee9;
536     public static final int POINTER_BUTTON2 = 0xfeea;
537     public static final int POINTER_BUTTON3 = 0xfeeb;
538     public static final int POINTER_BUTTON4 = 0xfeec;
539     public static final int POINTER_BUTTON5 = 0xfeed;
540     public static final int POINTER_DBL_CLICK_DFLT = 0xfeee;
541     public static final int POINTER_DBL_CLICK1 = 0xfeef;
542     public static final int POINTER_DBL_CLICK2 = 0xfef0;
543     public static final int POINTER_DBL_CLICK3 = 0xfef1;
544     public static final int POINTER_DBL_CLICK4 = 0xfef2;
545     public static final int POINTER_DBL_CLICK5 = 0xfef3;
546     public static final int POINTER_DRAG_DFLT = 0xfef4;
547     public static final int POINTER_DRAG1 = 0xfef5;
548     public static final int POINTER_DRAG2 = 0xfef6;
549     public static final int POINTER_DRAG3 = 0xfef7;
550     public static final int POINTER_DRAG4 = 0xfef8;
551     public static final int POINTER_DRAG5 = 0xfefd;
552 
553     public static final int POINTER_ENABLE_KEYS = 0xfef9;;
554     public static final int POINTER_ACCELERATE = 0xfefa;
555     public static final int POINTER_DFLT_BTN_NEXT = 0xfefb;
556     public static final int POINTER_DFLT_BTN_PREV = 0xfefc;
557 
558     //XFree86 *****************************************************************
559     /* ModeLock. This one is old, and not really used any more since XKB
560     * offers this functionality.
561     */
562 
563     public static final int MODE_LOCK = 0x1008ff01; /* mode switch lock */
564 
565 
566     /* "Internet" keyboards. */
567 
568     public static final int STANDBY = 0x1008ff10;
569     public static final int AUDIO_LOWER_VOLUME = 0x1008ff11;
570     public static final int AUDIO_MUTE = 0x1008ff12;
571     public static final int AUDIO_RAISE_VOLUME = 0x1008ff13;
572     public static final int AUDIO_PLAY = 0x1008ff14;
573     public static final int AUDIO_STOP = 0x1008ff15;
574     public static final int AUDIO_PREV = 0x1008ff16;
575     public static final int AUDIO_NEXT = 0x1008ff17;
576     public static final int HOME_PAGE = 0x1008ff18;
577     public static final int MAIL = 0x1008ff19;
578     public static final int START = 0x1008ff1a;
579     public static final int SEARCH = 0x1008ff1b;
580     public static final int AUDIO_RECORD = 0x1008ff1c;
581 
582 
583     /* PDA's (e.g. Palm, PocketPC or elsewhere). */
584 
585     public static final int CALCULATOR = 0x1008ff1d;
586     public static final int MEMO = 0x1008ff1e;
587     public static final int TO_DO_LIST = 0x1008ff1f;
588     public static final int CALENDAR = 0x1008ff20;
589     public static final int POWER_DOWN = 0x1008ff21;
590     public static final int CONTRASTADJUST = 0x1008ff22;
591     public static final int ROCKER_UP = 0x1008ff23;
592     public static final int ROCKER_DOWN = 0x1008ff24;
593     public static final int ROCKER_ENTER = 0x1008ff25;
594     public static final int BACK = 0x1008ff26;
595     public static final int FORWARD = 0x1008ff27;
596     public static final int STOP = 0x1008ff28;
597     public static final int REFRESH = 0x1008ff29;
598     public static final int POWER_OFF = 0x1008ff1a;
599     public static final int WAKE_UP = 0x1008ff1b;
600 
601 
602     /* Note, 0x1008ff02 - 0x1008ff0f are free and should be used for misc new
603     * keysyms that don't fit into any of the groups below.
604     */
605 
606 
607     /* Misc. */
608 
609     public static final int FAVORITES = 0x1008ff30;
610     public static final int AUDIO_PAUSE = 0x1008ff31;
611     public static final int AUDIO_MEDIA = 0x1008ff32;
612     public static final int MY_COMPUTER = 0x1008ff33;
613     public static final int VENDOR_HOME = 0x1008ff34;
614     public static final int LIGHT_BULB = 0x1008ff35;
615     public static final int SHOP = 0x1008ff36;
616 
617     //Currency ****************************************************************
618     public static final int CURR_ECU = 0x20a0;
619     public static final int CURR_COLON = 0x20a1;
620     public static final int CURR_CRUZEIRO = 0x20a2;
621     public static final int CURR_FFRANC = 0x20a3;
622     public static final int CURR_LIRA = 0x20a4;
623     public static final int CURR_MILL = 0x20a5;
624     public static final int CURR_NAIRA = 0x20a6;
625     public static final int CURR_PESETA = 0x20a7;
626     public static final int CURR_RUPEE = 0x20a8;
627     public static final int CURR_WON = 0x20a9;
628     public static final int CURR_NEW_SHEQEL = 0x20aa;
629     public static final int CURR_DONG = 0x20ab;
630     public static final int CURR_EURO = 0x20ac;
631 
X11KeysymDefinitions()632     private X11KeysymDefinitions(){}
633 
634     /**
635      * Converts an AWT key into a X11 keysym.
636      *
637      * @param awtKey
638      * @return
639      */
awtKeyToX11Keysym(int awtKey)640     public static int awtKeyToX11Keysym(int awtKey){
641         switch(awtKey){
642             case KeyEvent.VK_ENTER:
643                 return RETURN;
644             case KeyEvent.VK_BACK_SPACE:
645                 return BACKSPACE;
646             case KeyEvent.VK_TAB:
647                 return TAB;
648             case KeyEvent.VK_CANCEL:
649                 return CANCEL;
650             case KeyEvent.VK_CLEAR:
651                 return CLEAR;
652             case KeyEvent.VK_SHIFT:
653                 return SHIFT_L;
654             case KeyEvent.VK_CONTROL:
655                 return CONTROL_L;
656             case KeyEvent.VK_ALT:
657                 return ALT_L;
658             case KeyEvent.VK_PAUSE:
659                 return PAUSE;
660             case KeyEvent.VK_CAPS_LOCK:
661                 return CAPS_LOCK;
662             case KeyEvent.VK_ESCAPE:
663                 return ESCAPE;
664             case KeyEvent.VK_SPACE:
665                 return SPACE;
666             case KeyEvent.VK_PAGE_UP:
667                 return PAGE_UP;
668             case KeyEvent.VK_PAGE_DOWN:
669                 return PAGE_DOWN;
670             case KeyEvent.VK_END:
671                 return END;
672             case KeyEvent.VK_HOME:
673                 return HOME;
674             case KeyEvent.VK_LEFT:
675                 return LEFT;
676             case KeyEvent.VK_UP:
677                 return UP;
678             case KeyEvent.VK_RIGHT:
679                 return RIGHT;
680             case KeyEvent.VK_DOWN:
681                 return DOWN;
682             case KeyEvent.VK_COMMA:
683                 return COMMA;
684             case KeyEvent.VK_MINUS:
685                 return MINUS;
686             case KeyEvent.VK_PERIOD:
687                 return PERIOD;
688             case KeyEvent.VK_SLASH:
689                 return SLASH;
690             case KeyEvent.VK_0:
691                 return NUM_0;
692             case KeyEvent.VK_1:
693                 return NUM_1;
694             case KeyEvent.VK_2:
695                 return NUM_2;
696             case KeyEvent.VK_3:
697                 return NUM_3;
698             case KeyEvent.VK_4:
699                 return NUM_4;
700             case KeyEvent.VK_5:
701                 return NUM_5;
702             case KeyEvent.VK_6:
703                 return NUM_6;
704             case KeyEvent.VK_7:
705                 return NUM_7;
706             case KeyEvent.VK_8:
707                 return NUM_8;
708             case KeyEvent.VK_9:
709                 return NUM_9;
710             case KeyEvent.VK_SEMICOLON:
711                 return SEMICOLON;
712             case KeyEvent.VK_EQUALS:
713                 return EQUAL;
714             case KeyEvent.VK_A:
715                 return A;
716             case KeyEvent.VK_B:
717                 return B;
718             case KeyEvent.VK_C:
719                 return C;
720             case KeyEvent.VK_D:
721                 return D;
722             case KeyEvent.VK_E:
723                 return E;
724             case KeyEvent.VK_F:
725                 return F;
726             case KeyEvent.VK_G:
727                 return G;
728             case KeyEvent.VK_H:
729                 return H;
730             case KeyEvent.VK_I:
731                 return I;
732             case KeyEvent.VK_J:
733                 return J;
734             case KeyEvent.VK_K:
735                 return K;
736             case KeyEvent.VK_L:
737                 return L;
738             case KeyEvent.VK_M:
739                 return M;
740             case KeyEvent.VK_N:
741                 return N;
742             case KeyEvent.VK_O:
743                 return O;
744             case KeyEvent.VK_P:
745                 return P;
746             case KeyEvent.VK_Q:
747                 return Q;
748             case KeyEvent.VK_R:
749                 return R;
750             case KeyEvent.VK_S:
751                 return S;
752             case KeyEvent.VK_T:
753                 return T;
754             case KeyEvent.VK_U:
755                 return U;
756             case KeyEvent.VK_V:
757                 return V;
758             case KeyEvent.VK_W:
759                 return W;
760             case KeyEvent.VK_X:
761                 return X;
762             case KeyEvent.VK_Y:
763                 return Y;
764             case KeyEvent.VK_Z:
765                 return Z;
766             case KeyEvent.VK_OPEN_BRACKET:
767                 return BRACKET_LEFT;
768             case KeyEvent.VK_BACK_SLASH:
769                 return BACKSLASH;
770             case KeyEvent.VK_CLOSE_BRACKET:
771                 return BRACKET_LEFT;
772             case KeyEvent.VK_NUMPAD0:
773                 return KP_0;
774             case KeyEvent.VK_NUMPAD1:
775                 return KP_1;
776             case KeyEvent.VK_NUMPAD2:
777                 return KP_2;
778             case KeyEvent.VK_NUMPAD3:
779                 return KP_3;
780             case KeyEvent.VK_NUMPAD4:
781                 return KP_4;
782             case KeyEvent.VK_NUMPAD5:
783                 return KP_5;
784             case KeyEvent.VK_NUMPAD6:
785                 return KP_6;
786             case KeyEvent.VK_NUMPAD7:
787                 return KP_7;
788             case KeyEvent.VK_NUMPAD8:
789                 return KP_8;
790             case KeyEvent.VK_NUMPAD9:
791                 return KP_9;
792             case KeyEvent.VK_MULTIPLY:
793                 return KP_MULTIPLY;
794             case KeyEvent.VK_ADD:
795                 return KP_ADD;
796             case KeyEvent.VK_SEPARATER:
797                 return KP_SEPARATOR;
798             case KeyEvent.VK_SUBTRACT:
799                 return KP_SUBTRACT;
800             case KeyEvent.VK_DECIMAL:
801                 return KP_DECIMAL;
802             case KeyEvent.VK_DIVIDE:
803                 return KP_DIVIDE;
804             case KeyEvent.VK_DELETE:
805                 return DELETE;
806             case KeyEvent.VK_NUM_LOCK:
807                 return NUM_LOCK;
808             case KeyEvent.VK_SCROLL_LOCK:
809                 return SCROLL_LOCK;
810             case KeyEvent.VK_F1:
811                 return F1;
812             case KeyEvent.VK_F2:
813                 return F2;
814             case KeyEvent.VK_F3:
815                 return F3;
816             case KeyEvent.VK_F4:
817                 return F4;
818             case KeyEvent.VK_F5:
819                 return F5;
820             case KeyEvent.VK_F6:
821                 return F6;
822             case KeyEvent.VK_F7:
823                 return F7;
824             case KeyEvent.VK_F8:
825                 return F8;
826             case KeyEvent.VK_F9:
827                 return F9;
828             case KeyEvent.VK_F10:
829                 return F10;
830             case KeyEvent.VK_F11:
831                 return F11;
832             case KeyEvent.VK_F12:
833                 return F12;
834             case KeyEvent.VK_F13:
835                 return F13;
836             case KeyEvent.VK_F14:
837                 return F14;
838             case KeyEvent.VK_F15:
839                 return F15;
840             case KeyEvent.VK_F16:
841                 return F16;
842             case KeyEvent.VK_F17:
843                 return F17;
844             case KeyEvent.VK_F18:
845                 return F18;
846             case KeyEvent.VK_F19:
847                 return F19;
848             case KeyEvent.VK_F20:
849                 return F20;
850             case KeyEvent.VK_F21:
851                 return F21;
852             case KeyEvent.VK_F22:
853                 return F22;
854             case KeyEvent.VK_F23:
855                 return F23;
856             case KeyEvent.VK_F24:
857                 return F24;
858             case KeyEvent.VK_PRINTSCREEN:
859                 return PRINT;
860             case KeyEvent.VK_INSERT:
861                 return INSERT;
862             case KeyEvent.VK_HELP:
863                 return HELP;
864             case KeyEvent.VK_META:
865                 return META_L;
866             case KeyEvent.VK_BACK_QUOTE:
867                 return QUOTE_LEFT;
868             case KeyEvent.VK_QUOTE:
869                 return QUOTE_RIGHT;
870             case KeyEvent.VK_KP_UP:
871                 return KP_UP;
872             case KeyEvent.VK_KP_DOWN:
873                 return KP_DOWN;
874             case KeyEvent.VK_KP_LEFT:
875                 return KP_LEFT;
876             case KeyEvent.VK_KP_RIGHT:
877                 return KP_RIGHT;
878             case KeyEvent.VK_DEAD_GRAVE:
879                 return DEAD_GRAVE;
880             case KeyEvent.VK_DEAD_ACUTE:
881                 return DEAD_ACUTE;
882             case KeyEvent.VK_DEAD_CIRCUMFLEX:
883                 return DEAD_CIRCUMFLEX;
884             case KeyEvent.VK_DEAD_TILDE:
885                 return DEAD_TILDE;
886             case KeyEvent.VK_DEAD_MACRON:
887                 return DEAD_MACRON;
888             case KeyEvent.VK_DEAD_BREVE:
889                 return DEAD_BREVE;
890             case KeyEvent.VK_DEAD_ABOVEDOT:
891                 return DEAD_ABOVEDOT;
892             case KeyEvent.VK_DEAD_DIAERESIS:
893                 return DEAD_DIAERESIS;
894             case KeyEvent.VK_DEAD_ABOVERING:
895                 return DEAD_ABOVERING;
896             case KeyEvent.VK_DEAD_DOUBLEACUTE:
897                 return DEAD_DOUBLEACUTE;
898             case KeyEvent.VK_DEAD_CARON:
899                 return DEAD_CARON;
900             case KeyEvent.VK_DEAD_CEDILLA:
901                 return DEAD_CEDILLA;
902             case KeyEvent.VK_DEAD_OGONEK:
903                 return DEAD_OGONEK;
904             case KeyEvent.VK_DEAD_IOTA:
905                 return DEAD_IOTA;
906             case KeyEvent.VK_DEAD_VOICED_SOUND:
907                 return DEAD_VOICED_SOUND;
908             case KeyEvent.VK_DEAD_SEMIVOICED_SOUND:
909                 return DEAD_SEMIVOICED_SOUND;
910             case KeyEvent.VK_AMPERSAND:
911                 return AMPERSAND;
912             case KeyEvent.VK_ASTERISK:
913                 return ASTERISK;
914             case KeyEvent.VK_QUOTEDBL:
915                 return QUOTE_DBL;
916             case KeyEvent.VK_LESS:
917                 return LESS;
918             case KeyEvent.VK_GREATER:
919                 return GREATER;
920             case KeyEvent.VK_BRACELEFT:
921                 return BRACE_LEFT;
922             case KeyEvent.VK_BRACERIGHT:
923                 return BRACE_RIGHT;
924             case KeyEvent.VK_AT:
925                 return AT;
926             case KeyEvent.VK_COLON:
927                 return COLON;
928             case KeyEvent.VK_CIRCUMFLEX:
929                 return ASCII_CIRCUM;
930             case KeyEvent.VK_DOLLAR:
931                 return DOLLAR;
932             case KeyEvent.VK_EURO_SIGN:
933                 return CURR_EURO;
934             case KeyEvent.VK_EXCLAMATION_MARK:
935                 return EXCLAM;
936             case KeyEvent.VK_INVERTED_EXCLAMATION_MARK:
937                 return EXCLAM_DOWN;
938             case KeyEvent.VK_LEFT_PARENTHESIS:
939                 return PAREN_LEFT;
940             case KeyEvent.VK_NUMBER_SIGN:
941                 return NUMBER_SIGN;
942             case KeyEvent.VK_PLUS:
943                 return PLUS;
944             case KeyEvent.VK_RIGHT_PARENTHESIS:
945                 return PAREN_RIGHT;
946             case KeyEvent.VK_UNDERSCORE:
947                 return UNDERSCORE;
948             case KeyEvent.VK_WINDOWS:
949                 return SUPER_L;
950             case KeyEvent.VK_CONTEXT_MENU:
951                 return MENU;
952             case KeyEvent.VK_FINAL:
953                 return 0; //????
954             case KeyEvent.VK_CONVERT:
955                 return 0; //????
956             case KeyEvent.VK_NONCONVERT:
957                 return 0; //????
958             case KeyEvent.VK_ACCEPT:
959                 return 0; //????
960             case KeyEvent.VK_MODECHANGE:
961                 return MODE_SWITCH;
962             case KeyEvent.VK_KANA:
963                 return KANA_SHIFT;
964             case KeyEvent.VK_KANJI:
965                 return KANJI;
966             case KeyEvent.VK_ALPHANUMERIC:
967                 return EISU_SHIFT;
968             case KeyEvent.VK_KATAKANA:
969                 return KATAKANA;
970             case KeyEvent.VK_HIRAGANA:
971                 return HIRAGANA;
972             case KeyEvent.VK_FULL_WIDTH:
973                 return 0; //????
974             case KeyEvent.VK_HALF_WIDTH:
975                 return 0; //????
976             case KeyEvent.VK_ROMAN_CHARACTERS:
977                 return 0; //????
978             case KeyEvent.VK_ALL_CANDIDATES:
979                 return MULTIPLE_CANDIDATE;
980             case KeyEvent.VK_PREVIOUS_CANDIDATE:
981                 return PREVIOUS_CANDIDATE;
982             case KeyEvent.VK_CODE_INPUT:
983                 return CODEINPUT;
984             case KeyEvent.VK_JAPANESE_KATAKANA:
985                 return KATAKANA;
986             case KeyEvent.VK_JAPANESE_HIRAGANA:
987                 return HIRAGANA;
988             case KeyEvent.VK_JAPANESE_ROMAN:
989                 return 0; //????
990             case KeyEvent.VK_KANA_LOCK:
991                 return KANA_LOCK;
992             case KeyEvent.VK_INPUT_METHOD_ON_OFF:
993                 return 0; //????
994             case KeyEvent.VK_CUT:
995                 return 0; //????
996             case KeyEvent.VK_COPY:
997                 return 0; //????
998             case KeyEvent.VK_PASTE:
999                 return 0; //????
1000             case KeyEvent.VK_UNDO:
1001                 return UNDO;
1002             case KeyEvent.VK_AGAIN:
1003                 return REDO;
1004             case KeyEvent.VK_FIND:
1005                 return FIND;
1006             case KeyEvent.VK_PROPS:
1007                 return 0; //????
1008             case KeyEvent.VK_STOP:
1009                 return CANCEL;
1010             case KeyEvent.VK_COMPOSE:
1011                 return MULTI_KEY;
1012             case KeyEvent.VK_ALT_GRAPH:
1013                 return 0; //????
1014             case KeyEvent.VK_BEGIN:
1015                 return BEGIN;
1016             case KeyEvent.VK_UNDEFINED:
1017                 return 0;
1018             default:
1019                 return 0;
1020         }
1021     }
1022 }
1023