1 /**
2  * @file scim_event.h
3  * @brief Defines the scim::KeyEvent class and related enums, functions.
4  */
5 
6 /*
7  * Smart Common Input Method
8  *
9  * Copyright (c) 2002-2005 James Su <suzhe@tsinghua.org.cn>
10  *
11  *
12  * This library is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU Lesser General Public
14  * License as published by the Free Software Foundation; either
15  * version 2 of the License, or (at your option) any later version.
16  *
17  * This library is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public
23  * License along with this program; if not, write to the
24  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
25  * Boston, MA  02111-1307  USA
26  *
27  * $Id: scim_event.h,v 1.26.2.1 2007/04/11 15:24:10 suzhe Exp $
28  */
29 
30 #ifndef __SCIM_EVENT_H
31 #define __SCIM_EVENT_H
32 
33 namespace scim {
34 
35 /**
36  * @addtogroup Accessories
37  * @{
38  */
39 
40 /**
41  * @brief Enum values of all valid key masks.
42  *
43  * The key masks indicate which modifier keys
44  * is pressed down during the keyboard hit.
45  *
46  * The special SCIM_KEY_ReleaseMask indicates
47  * the key release event.
48  *
49  */
50 enum KeyMask
51 {
52     SCIM_KEY_NullMask       = 0,            /**< Key press event without modifier key. */
53     SCIM_KEY_ShiftMask      = (1<<0),       /**< The Shift key is pressed down */
54     SCIM_KEY_CapsLockMask   = (1<<1),       /**< The CapsLock key is pressed down */
55     SCIM_KEY_ControlMask    = (1<<2),       /**< The Control key is pressed down */
56     SCIM_KEY_AltMask        = (1<<3),       /**< The Alt  key is pressed down */
57     SCIM_KEY_MetaMask       = (1<<4),       /**< The Meta key is pressed down */
58     SCIM_KEY_SuperMask      = (1<<5),       /**< The Super key is pressed down */
59     SCIM_KEY_HyperMask      = (1<<6),       /**< The Hyper key is pressed down */
60     SCIM_KEY_NumLockMask    = (1<<7),       /**< The NumLock key is pressed down */
61 
62     SCIM_KEY_LockMask       = SCIM_KEY_CapsLockMask, /**< For backward API compatibility, do not use it in new code */
63     SCIM_KEY_Mod1Mask       = SCIM_KEY_AltMask,      /**< For backward API compatibility, do not use it in new code */
64     SCIM_KEY_Mod2Mask       = SCIM_KEY_MetaMask,     /**< For backward API compatibility, do not use it in new code */
65     SCIM_KEY_Mod3Mask       = SCIM_KEY_SuperMask,    /**< For backward API compatibility, do not use it in new code */
66     SCIM_KEY_Mod4Mask       = SCIM_KEY_HyperMask,    /**< For backward API compatibility, do not use it in new code */
67     SCIM_KEY_Mod5Mask       = SCIM_KEY_NumLockMask,  /**< For backward API compatibility, do not use it in new code */
68     SCIM_KEY_ScrollLockMask = 0,                     /**< For backward API compatibility, do not use it in new code */
69 
70     SCIM_KEY_QuirkKanaRoMask= (1<<14),      /**< Special mask to distinguish two backslash keys on jp106 keyboard */
71 
72     SCIM_KEY_ReleaseMask    = (1<<15),      /**< It's a key release event */
73     SCIM_KEY_AllMasks       = 0xC0FF        /**< All valid Masks */
74 };
75 
76 /**
77  * @brief Enum values of all valid key codes.
78  *
79  * If keycode & 0xff000000 == 0x01000000 then this key code is directly encoded 24-bit UCS character.
80  * The UCS value is keycode & 0x00ffffff.
81  */
82 enum KeyCode
83 {
84     SCIM_KEY_NullKey                            = 0,
85     SCIM_KEY_VoidSymbol                         = 0xFFFFFF,
86 
87     /* function keys */
88     SCIM_KEY_BackSpace                          = 0xFF08,    /* back space, back char */
89     SCIM_KEY_Tab                                = 0xFF09,
90     SCIM_KEY_Linefeed                           = 0xFF0A,    /* Linefeed, LF */
91     SCIM_KEY_Clear                              = 0xFF0B,
92     SCIM_KEY_Return                             = 0xFF0D,    /* Return, enter */
93     SCIM_KEY_Pause                              = 0xFF13,    /* Pause, hold */
94     SCIM_KEY_Scroll_Lock                        = 0xFF14,
95     SCIM_KEY_Sys_Req                            = 0xFF15,
96     SCIM_KEY_Escape                             = 0xFF1B,
97     SCIM_KEY_Delete                             = 0xFFFF,    /* Delete, rubout */
98 
99     /* International & multi-key character composition */
100     SCIM_KEY_Multi_key                          = 0xFF20,    /* Multi-key character compose */
101     SCIM_KEY_Codeinput                          = 0xFF37,
102     SCIM_KEY_SingleCandidate                    = 0xFF3C,
103     SCIM_KEY_MultipleCandidate                  = 0xFF3D,
104     SCIM_KEY_PreviousCandidate                  = 0xFF3E,
105 
106     /* Japanese keyboard support */
107     SCIM_KEY_Kanji                              = 0xFF21,    /* Kanji, Kanji convert */
108     SCIM_KEY_Muhenkan                           = 0xFF22,    /* Cancel Conversion */
109     SCIM_KEY_Henkan_Mode                        = 0xFF23,    /* Start/Stop Conversion */
110     SCIM_KEY_Henkan                             = 0xFF23,    /* Alias for Henkan_Mode */
111     SCIM_KEY_Romaji                             = 0xFF24,    /* to Romaji */
112     SCIM_KEY_Hiragana                           = 0xFF25,    /* to Hiragana */
113     SCIM_KEY_Katakana                           = 0xFF26,    /* to Katakana */
114     SCIM_KEY_Hiragana_Katakana                  = 0xFF27, /* Hiragana/Katakana toggle */
115     SCIM_KEY_Zenkaku                            = 0xFF28,    /* to Zenkaku */
116     SCIM_KEY_Hankaku                            = 0xFF29,    /* to Hankaku */
117     SCIM_KEY_Zenkaku_Hankaku                    = 0xFF2A, /* Zenkaku/Hankaku toggle */
118     SCIM_KEY_Touroku                            = 0xFF2B,    /* Add to Dictionary */
119     SCIM_KEY_Massyo                             = 0xFF2C,    /* Delete from Dictionary */
120     SCIM_KEY_Kana_Lock                          = 0xFF2D,    /* Kana Lock */
121     SCIM_KEY_Kana_Shift                         = 0xFF2E,    /* Kana Shift */
122     SCIM_KEY_Eisu_Shift                         = 0xFF2F,    /* Alphanumeric Shift */
123     SCIM_KEY_Eisu_toggle                        = 0xFF30,    /* Alphanumeric toggle */
124     SCIM_KEY_Kanji_Bangou                       = 0xFF37,   /* Codeinput */
125     SCIM_KEY_Zen_Koho                           = 0xFF3D,    /* Multiple/All Candidate(s) */
126     SCIM_KEY_Mae_Koho                           = 0xFF3E,    /* Previous Candidate */
127 
128     /* Cursor control & motion */
129     SCIM_KEY_Home                               = 0xFF50,
130     SCIM_KEY_Left                               = 0xFF51,    /* Move left, left arrow */
131     SCIM_KEY_Up                                 = 0xFF52,    /* Move up, up arrow */
132     SCIM_KEY_Right                              = 0xFF53,    /* Move right, right arrow */
133     SCIM_KEY_Down                               = 0xFF54,    /* Move down, down arrow */
134     SCIM_KEY_Prior                              = 0xFF55,    /* Prior, previous */
135     SCIM_KEY_Page_Up                            = 0xFF55,
136     SCIM_KEY_Next                               = 0xFF56,    /* Next */
137     SCIM_KEY_Page_Down                          = 0xFF56,
138     SCIM_KEY_End                                = 0xFF57,    /* EOL */
139     SCIM_KEY_Begin                              = 0xFF58,    /* BOL */
140 
141     /* Misc Functions */
142     SCIM_KEY_Select                             = 0xFF60,    /* Select, mark */
143     SCIM_KEY_Print                              = 0xFF61,
144     SCIM_KEY_Execute                            = 0xFF62,    /* Execute, run, do */
145     SCIM_KEY_Insert                             = 0xFF63,    /* Insert, insert here */
146     SCIM_KEY_Undo                               = 0xFF65,    /* Undo, oops */
147     SCIM_KEY_Redo                               = 0xFF66,    /* redo, again */
148     SCIM_KEY_Menu                               = 0xFF67,
149     SCIM_KEY_Find                               = 0xFF68,    /* Find, search */
150     SCIM_KEY_Cancel                             = 0xFF69,    /* Cancel, stop, abort, exit */
151     SCIM_KEY_Help                               = 0xFF6A,    /* Help */
152     SCIM_KEY_Break                              = 0xFF6B,
153     SCIM_KEY_Mode_switch                        = 0xFF7E,    /* Character set switch */
154     SCIM_KEY_Num_Lock                           = 0xFF7F,
155 
156     /* keypad */
157     SCIM_KEY_KP_Space                           = 0xFF80,    /* space */
158     SCIM_KEY_KP_Tab                             = 0xFF89,
159     SCIM_KEY_KP_Enter                           = 0xFF8D,    /* enter */
160     SCIM_KEY_KP_F1                              = 0xFF91,    /* PF1, KP_A, ... */
161     SCIM_KEY_KP_F2                              = 0xFF92,
162     SCIM_KEY_KP_F3                              = 0xFF93,
163     SCIM_KEY_KP_F4                              = 0xFF94,
164     SCIM_KEY_KP_Home                            = 0xFF95,
165     SCIM_KEY_KP_Left                            = 0xFF96,
166     SCIM_KEY_KP_Up                              = 0xFF97,
167     SCIM_KEY_KP_Right                           = 0xFF98,
168     SCIM_KEY_KP_Down                            = 0xFF99,
169     SCIM_KEY_KP_Prior                           = 0xFF9A,
170     SCIM_KEY_KP_Page_Up                         = 0xFF9A,
171     SCIM_KEY_KP_Next                            = 0xFF9B,
172     SCIM_KEY_KP_Page_Down                       = 0xFF9B,
173     SCIM_KEY_KP_End                             = 0xFF9C,
174     SCIM_KEY_KP_Begin                           = 0xFF9D,
175     SCIM_KEY_KP_Insert                          = 0xFF9E,
176     SCIM_KEY_KP_Delete                          = 0xFF9F,
177     SCIM_KEY_KP_Equal                           = 0xFFBD,   /* equals */
178     SCIM_KEY_KP_Multiply                        = 0xFFAA,
179     SCIM_KEY_KP_Add                             = 0xFFAB,
180     SCIM_KEY_KP_Separator                       = 0xFFAC,   /* separator, often comma */
181     SCIM_KEY_KP_Subtract                        = 0xFFAD,
182     SCIM_KEY_KP_Decimal                         = 0xFFAE,
183     SCIM_KEY_KP_Divide                          = 0xFFAF,
184 
185     SCIM_KEY_KP_0                               = 0xFFB0,
186     SCIM_KEY_KP_1                               = 0xFFB1,
187     SCIM_KEY_KP_2                               = 0xFFB2,
188     SCIM_KEY_KP_3                               = 0xFFB3,
189     SCIM_KEY_KP_4                               = 0xFFB4,
190     SCIM_KEY_KP_5                               = 0xFFB5,
191     SCIM_KEY_KP_6                               = 0xFFB6,
192     SCIM_KEY_KP_7                               = 0xFFB7,
193     SCIM_KEY_KP_8                               = 0xFFB8,
194     SCIM_KEY_KP_9                               = 0xFFB9,
195 
196     /* Auxilliary Functions */
197     SCIM_KEY_F1                                 = 0xFFBE,
198     SCIM_KEY_F2                                 = 0xFFBF,
199     SCIM_KEY_F3                                 = 0xFFC0,
200     SCIM_KEY_F4                                 = 0xFFC1,
201     SCIM_KEY_F5                                 = 0xFFC2,
202     SCIM_KEY_F6                                 = 0xFFC3,
203     SCIM_KEY_F7                                 = 0xFFC4,
204     SCIM_KEY_F8                                 = 0xFFC5,
205     SCIM_KEY_F9                                 = 0xFFC6,
206     SCIM_KEY_F10                                = 0xFFC7,
207     SCIM_KEY_F11                                = 0xFFC8,
208     SCIM_KEY_F12                                = 0xFFC9,
209     SCIM_KEY_F13                                = 0xFFCA,
210     SCIM_KEY_F14                                = 0xFFCB,
211     SCIM_KEY_F15                                = 0xFFCC,
212     SCIM_KEY_F16                                = 0xFFCD,
213     SCIM_KEY_F17                                = 0xFFCE,
214     SCIM_KEY_F18                                = 0xFFCF,
215     SCIM_KEY_F19                                = 0xFFD0,
216     SCIM_KEY_F20                                = 0xFFD1,
217     SCIM_KEY_F21                                = 0xFFD2,
218     SCIM_KEY_F22                                = 0xFFD3,
219     SCIM_KEY_F23                                = 0xFFD4,
220     SCIM_KEY_F24                                = 0xFFD5,
221     SCIM_KEY_F25                                = 0xFFD6,
222     SCIM_KEY_F26                                = 0xFFD7,
223     SCIM_KEY_F27                                = 0xFFD8,
224     SCIM_KEY_F28                                = 0xFFD9,
225     SCIM_KEY_F29                                = 0xFFDA,
226     SCIM_KEY_F30                                = 0xFFDB,
227     SCIM_KEY_F31                                = 0xFFDC,
228     SCIM_KEY_F32                                = 0xFFDD,
229     SCIM_KEY_F33                                = 0xFFDE,
230     SCIM_KEY_F34                                = 0xFFDF,
231     SCIM_KEY_F35                                = 0xFFE0,
232 
233     /* modifier keys */
234     SCIM_KEY_Shift_L                            = 0xFFE1,    /* Left shift */
235     SCIM_KEY_Shift_R                            = 0xFFE2,    /* Right shift */
236     SCIM_KEY_Control_L                          = 0xFFE3,    /* Left control */
237     SCIM_KEY_Control_R                          = 0xFFE4,    /* Right control */
238     SCIM_KEY_Caps_Lock                          = 0xFFE5,    /* Caps lock */
239     SCIM_KEY_Shift_Lock                         = 0xFFE6,    /* Shift lock */
240 
241     SCIM_KEY_Meta_L                             = 0xFFE7,    /* Left meta */
242     SCIM_KEY_Meta_R                             = 0xFFE8,    /* Right meta */
243     SCIM_KEY_Alt_L                              = 0xFFE9,    /* Left alt */
244     SCIM_KEY_Alt_R                              = 0xFFEA,    /* Right alt */
245     SCIM_KEY_Super_L                            = 0xFFEB,    /* Left super */
246     SCIM_KEY_Super_R                            = 0xFFEC,    /* Right super */
247     SCIM_KEY_Hyper_L                            = 0xFFED,    /* Left hyper */
248     SCIM_KEY_Hyper_R                            = 0xFFEE,    /* Right hyper */
249 
250     /*
251      * ISO 9995 Function and Modifier Keys
252      * Byte 3 = 0xFE
253      */
254 
255     SCIM_KEY_ISO_Lock                           = 0xFE01,
256     SCIM_KEY_ISO_Level2_Latch                   = 0xFE02,
257     SCIM_KEY_ISO_Level3_Shift                   = 0xFE03,
258     SCIM_KEY_ISO_Level3_Latch                   = 0xFE04,
259     SCIM_KEY_ISO_Level3_Lock                    = 0xFE05,
260     SCIM_KEY_ISO_Group_Shift                    = 0xFF7E,    /* Alias for mode_switch */
261     SCIM_KEY_ISO_Group_Latch                    = 0xFE06,
262     SCIM_KEY_ISO_Group_Lock                     = 0xFE07,
263     SCIM_KEY_ISO_Next_Group                     = 0xFE08,
264     SCIM_KEY_ISO_Next_Group_Lock                = 0xFE09,
265     SCIM_KEY_ISO_Prev_Group                     = 0xFE0A,
266     SCIM_KEY_ISO_Prev_Group_Lock                = 0xFE0B,
267     SCIM_KEY_ISO_First_Group                    = 0xFE0C,
268     SCIM_KEY_ISO_First_Group_Lock               = 0xFE0D,
269     SCIM_KEY_ISO_Last_Group                     = 0xFE0E,
270     SCIM_KEY_ISO_Last_Group_Lock                = 0xFE0F,
271 
272     SCIM_KEY_ISO_Left_Tab                       = 0xFE20,
273     SCIM_KEY_ISO_Move_Line_Up                   = 0xFE21,
274     SCIM_KEY_ISO_Move_Line_Down                 = 0xFE22,
275     SCIM_KEY_ISO_Partial_Line_Up                = 0xFE23,
276     SCIM_KEY_ISO_Partial_Line_Down              = 0xFE24,
277     SCIM_KEY_ISO_Partial_Space_Left             = 0xFE25,
278     SCIM_KEY_ISO_Partial_Space_Right            = 0xFE26,
279     SCIM_KEY_ISO_Set_Margin_Left                = 0xFE27,
280     SCIM_KEY_ISO_Set_Margin_Right               = 0xFE28,
281     SCIM_KEY_ISO_Release_Margin_Left            = 0xFE29,
282     SCIM_KEY_ISO_Release_Margin_Right           = 0xFE2A,
283     SCIM_KEY_ISO_Release_Both_Margins           = 0xFE2B,
284     SCIM_KEY_ISO_Fast_Cursor_Left               = 0xFE2C,
285     SCIM_KEY_ISO_Fast_Cursor_Right              = 0xFE2D,
286     SCIM_KEY_ISO_Fast_Cursor_Up                 = 0xFE2E,
287     SCIM_KEY_ISO_Fast_Cursor_Down               = 0xFE2F,
288     SCIM_KEY_ISO_Continuous_Underline           = 0xFE30,
289     SCIM_KEY_ISO_Discontinuous_Underline        = 0xFE31,
290     SCIM_KEY_ISO_Emphasize                      = 0xFE32,
291     SCIM_KEY_ISO_Center_Object                  = 0xFE33,
292     SCIM_KEY_ISO_Enter                          = 0xFE34,
293 
294     SCIM_KEY_dead_grave                         = 0xFE50,
295     SCIM_KEY_dead_acute                         = 0xFE51,
296     SCIM_KEY_dead_circumflex                    = 0xFE52,
297     SCIM_KEY_dead_tilde                         = 0xFE53,
298     SCIM_KEY_dead_macron                        = 0xFE54,
299     SCIM_KEY_dead_breve                         = 0xFE55,
300     SCIM_KEY_dead_abovedot                      = 0xFE56,
301     SCIM_KEY_dead_diaeresis                     = 0xFE57,
302     SCIM_KEY_dead_abovering                     = 0xFE58,
303     SCIM_KEY_dead_doubleacute                   = 0xFE59,
304     SCIM_KEY_dead_caron                         = 0xFE5A,
305     SCIM_KEY_dead_cedilla                       = 0xFE5B,
306     SCIM_KEY_dead_ogonek                        = 0xFE5C,
307     SCIM_KEY_dead_iota                          = 0xFE5D,
308     SCIM_KEY_dead_voiced_sound                  = 0xFE5E,
309     SCIM_KEY_dead_semivoiced_sound              = 0xFE5F,
310     SCIM_KEY_dead_belowdot                      = 0xFE60,
311     SCIM_KEY_dead_hook                          = 0xFE61,
312     SCIM_KEY_dead_horn                          = 0xFE62,
313 
314     SCIM_KEY_First_Virtual_Screen               = 0xFED0,
315     SCIM_KEY_Prev_Virtual_Screen                = 0xFED1,
316     SCIM_KEY_Next_Virtual_Screen                = 0xFED2,
317     SCIM_KEY_Last_Virtual_Screen                = 0xFED4,
318     SCIM_KEY_Terminate_Server                   = 0xFED5,
319 
320     SCIM_KEY_AccessX_Enable                     = 0xFE70,
321     SCIM_KEY_AccessX_Feedback_Enable            = 0xFE71,
322     SCIM_KEY_RepeatKeys_Enable                  = 0xFE72,
323     SCIM_KEY_SlowKeys_Enable                    = 0xFE73,
324     SCIM_KEY_BounceKeys_Enable                  = 0xFE74,
325     SCIM_KEY_StickyKeys_Enable                  = 0xFE75,
326     SCIM_KEY_MouseKeys_Enable                   = 0xFE76,
327     SCIM_KEY_MouseKeys_Accel_Enable             = 0xFE77,
328     SCIM_KEY_Overlay1_Enable                    = 0xFE78,
329     SCIM_KEY_Overlay2_Enable                    = 0xFE79,
330     SCIM_KEY_AudibleBell_Enable                 = 0xFE7A,
331 
332     SCIM_KEY_Pointer_Left                       = 0xFEE0,
333     SCIM_KEY_Pointer_Right                      = 0xFEE1,
334     SCIM_KEY_Pointer_Up                         = 0xFEE2,
335     SCIM_KEY_Pointer_Down                       = 0xFEE3,
336     SCIM_KEY_Pointer_UpLeft                     = 0xFEE4,
337     SCIM_KEY_Pointer_UpRight                    = 0xFEE5,
338     SCIM_KEY_Pointer_DownLeft                   = 0xFEE6,
339     SCIM_KEY_Pointer_DownRight                  = 0xFEE7,
340     SCIM_KEY_Pointer_Button_Dflt                = 0xFEE8,
341     SCIM_KEY_Pointer_Button1                    = 0xFEE9,
342     SCIM_KEY_Pointer_Button2                    = 0xFEEA,
343     SCIM_KEY_Pointer_Button3                    = 0xFEEB,
344     SCIM_KEY_Pointer_Button4                    = 0xFEEC,
345     SCIM_KEY_Pointer_Button5                    = 0xFEED,
346     SCIM_KEY_Pointer_DblClick_Dflt              = 0xFEEE,
347     SCIM_KEY_Pointer_DblClick1                  = 0xFEEF,
348     SCIM_KEY_Pointer_DblClick2                  = 0xFEF0,
349     SCIM_KEY_Pointer_DblClick3                  = 0xFEF1,
350     SCIM_KEY_Pointer_DblClick4                  = 0xFEF2,
351     SCIM_KEY_Pointer_DblClick5                  = 0xFEF3,
352     SCIM_KEY_Pointer_Drag_Dflt                  = 0xFEF4,
353     SCIM_KEY_Pointer_Drag1                      = 0xFEF5,
354     SCIM_KEY_Pointer_Drag2                      = 0xFEF6,
355     SCIM_KEY_Pointer_Drag3                      = 0xFEF7,
356     SCIM_KEY_Pointer_Drag4                      = 0xFEF8,
357     SCIM_KEY_Pointer_Drag5                      = 0xFEFD,
358 
359     SCIM_KEY_Pointer_EnableKeys                 = 0xFEF9,
360     SCIM_KEY_Pointer_Accelerate                 = 0xFEFA,
361     SCIM_KEY_Pointer_DfltBtnNext                = 0xFEFB,
362     SCIM_KEY_Pointer_DfltBtnPrev                = 0xFEFC,
363 
364     /*
365      * 3270 Terminal Keys
366      * Byte 3 = 0xFD
367      */
368     SCIM_KEY_3270_Duplicate                     = 0xFD01,
369     SCIM_KEY_3270_FieldMark                     = 0xFD02,
370     SCIM_KEY_3270_Right2                        = 0xFD03,
371     SCIM_KEY_3270_Left2                         = 0xFD04,
372     SCIM_KEY_3270_BackTab                       = 0xFD05,
373     SCIM_KEY_3270_EraseEOF                      = 0xFD06,
374     SCIM_KEY_3270_EraseInput                    = 0xFD07,
375     SCIM_KEY_3270_Reset                         = 0xFD08,
376     SCIM_KEY_3270_Quit                          = 0xFD09,
377     SCIM_KEY_3270_PA1                           = 0xFD0A,
378     SCIM_KEY_3270_PA2                           = 0xFD0B,
379     SCIM_KEY_3270_PA3                           = 0xFD0C,
380     SCIM_KEY_3270_Test                          = 0xFD0D,
381     SCIM_KEY_3270_Attn                          = 0xFD0E,
382     SCIM_KEY_3270_CursorBlink                   = 0xFD0F,
383     SCIM_KEY_3270_AltCursor                     = 0xFD10,
384     SCIM_KEY_3270_KeyClick                      = 0xFD11,
385     SCIM_KEY_3270_Jump                          = 0xFD12,
386     SCIM_KEY_3270_Ident                         = 0xFD13,
387     SCIM_KEY_3270_Rule                          = 0xFD14,
388     SCIM_KEY_3270_Copy                          = 0xFD15,
389     SCIM_KEY_3270_Play                          = 0xFD16,
390     SCIM_KEY_3270_Setup                         = 0xFD17,
391     SCIM_KEY_3270_Record                        = 0xFD18,
392     SCIM_KEY_3270_ChangeScreen                  = 0xFD19,
393     SCIM_KEY_3270_DeleteWord                    = 0xFD1A,
394     SCIM_KEY_3270_ExSelect                      = 0xFD1B,
395     SCIM_KEY_3270_CursorSelect                  = 0xFD1C,
396     SCIM_KEY_3270_PrintScreen                   = 0xFD1D,
397     SCIM_KEY_3270_Enter                         = 0xFD1E,
398 
399     /* Latin 1 */
400     SCIM_KEY_space                              = 0x020,
401     SCIM_KEY_exclam                             = 0x021,
402     SCIM_KEY_quotedbl                           = 0x022,
403     SCIM_KEY_numbersign                         = 0x023,
404     SCIM_KEY_dollar                             = 0x024,
405     SCIM_KEY_percent                            = 0x025,
406     SCIM_KEY_ampersand                          = 0x026,
407     SCIM_KEY_apostrophe                         = 0x027,
408     SCIM_KEY_quoteright                         = 0x027,    /* deprecated */
409     SCIM_KEY_parenleft                          = 0x028,
410     SCIM_KEY_parenright                         = 0x029,
411     SCIM_KEY_asterisk                           = 0x02a,
412     SCIM_KEY_plus                               = 0x02b,
413     SCIM_KEY_comma                              = 0x02c,
414     SCIM_KEY_minus                              = 0x02d,
415     SCIM_KEY_period                             = 0x02e,
416     SCIM_KEY_slash                              = 0x02f,
417     SCIM_KEY_0                                  = 0x030,
418     SCIM_KEY_1                                  = 0x031,
419     SCIM_KEY_2                                  = 0x032,
420     SCIM_KEY_3                                  = 0x033,
421     SCIM_KEY_4                                  = 0x034,
422     SCIM_KEY_5                                  = 0x035,
423     SCIM_KEY_6                                  = 0x036,
424     SCIM_KEY_7                                  = 0x037,
425     SCIM_KEY_8                                  = 0x038,
426     SCIM_KEY_9                                  = 0x039,
427     SCIM_KEY_colon                              = 0x03a,
428     SCIM_KEY_semicolon                          = 0x03b,
429     SCIM_KEY_less                               = 0x03c,
430     SCIM_KEY_equal                              = 0x03d,
431     SCIM_KEY_greater                            = 0x03e,
432     SCIM_KEY_question                           = 0x03f,
433     SCIM_KEY_at                                 = 0x040,
434     SCIM_KEY_A                                  = 0x041,
435     SCIM_KEY_B                                  = 0x042,
436     SCIM_KEY_C                                  = 0x043,
437     SCIM_KEY_D                                  = 0x044,
438     SCIM_KEY_E                                  = 0x045,
439     SCIM_KEY_F                                  = 0x046,
440     SCIM_KEY_G                                  = 0x047,
441     SCIM_KEY_H                                  = 0x048,
442     SCIM_KEY_I                                  = 0x049,
443     SCIM_KEY_J                                  = 0x04a,
444     SCIM_KEY_K                                  = 0x04b,
445     SCIM_KEY_L                                  = 0x04c,
446     SCIM_KEY_M                                  = 0x04d,
447     SCIM_KEY_N                                  = 0x04e,
448     SCIM_KEY_O                                  = 0x04f,
449     SCIM_KEY_P                                  = 0x050,
450     SCIM_KEY_Q                                  = 0x051,
451     SCIM_KEY_R                                  = 0x052,
452     SCIM_KEY_S                                  = 0x053,
453     SCIM_KEY_T                                  = 0x054,
454     SCIM_KEY_U                                  = 0x055,
455     SCIM_KEY_V                                  = 0x056,
456     SCIM_KEY_W                                  = 0x057,
457     SCIM_KEY_X                                  = 0x058,
458     SCIM_KEY_Y                                  = 0x059,
459     SCIM_KEY_Z                                  = 0x05a,
460     SCIM_KEY_bracketleft                        = 0x05b,
461     SCIM_KEY_backslash                          = 0x05c,
462     SCIM_KEY_bracketright                       = 0x05d,
463     SCIM_KEY_asciicircum                        = 0x05e,
464     SCIM_KEY_underscore                         = 0x05f,
465     SCIM_KEY_grave                              = 0x060,
466     SCIM_KEY_a                                  = 0x061,
467     SCIM_KEY_b                                  = 0x062,
468     SCIM_KEY_c                                  = 0x063,
469     SCIM_KEY_d                                  = 0x064,
470     SCIM_KEY_e                                  = 0x065,
471     SCIM_KEY_f                                  = 0x066,
472     SCIM_KEY_g                                  = 0x067,
473     SCIM_KEY_h                                  = 0x068,
474     SCIM_KEY_i                                  = 0x069,
475     SCIM_KEY_j                                  = 0x06a,
476     SCIM_KEY_k                                  = 0x06b,
477     SCIM_KEY_l                                  = 0x06c,
478     SCIM_KEY_m                                  = 0x06d,
479     SCIM_KEY_n                                  = 0x06e,
480     SCIM_KEY_o                                  = 0x06f,
481     SCIM_KEY_p                                  = 0x070,
482     SCIM_KEY_q                                  = 0x071,
483     SCIM_KEY_r                                  = 0x072,
484     SCIM_KEY_s                                  = 0x073,
485     SCIM_KEY_t                                  = 0x074,
486     SCIM_KEY_u                                  = 0x075,
487     SCIM_KEY_v                                  = 0x076,
488     SCIM_KEY_w                                  = 0x077,
489     SCIM_KEY_x                                  = 0x078,
490     SCIM_KEY_y                                  = 0x079,
491     SCIM_KEY_z                                  = 0x07a,
492     SCIM_KEY_braceleft                          = 0x07b,
493     SCIM_KEY_bar                                = 0x07c,
494     SCIM_KEY_braceright                         = 0x07d,
495     SCIM_KEY_asciitilde                         = 0x07e,
496 
497     SCIM_KEY_nobreakspace                       = 0x0a0,
498     SCIM_KEY_exclamdown                         = 0x0a1,
499     SCIM_KEY_cent                               = 0x0a2,
500     SCIM_KEY_sterling                           = 0x0a3,
501     SCIM_KEY_currency                           = 0x0a4,
502     SCIM_KEY_yen                                = 0x0a5,
503     SCIM_KEY_brokenbar                          = 0x0a6,
504     SCIM_KEY_section                            = 0x0a7,
505     SCIM_KEY_diaeresis                          = 0x0a8,
506     SCIM_KEY_copyright                          = 0x0a9,
507     SCIM_KEY_ordfeminine                        = 0x0aa,
508     SCIM_KEY_guillemotleft                      = 0x0ab,     /* left angle quotation mark */
509     SCIM_KEY_notsign                            = 0x0ac,
510     SCIM_KEY_hyphen                             = 0x0ad,
511     SCIM_KEY_registered                         = 0x0ae,
512     SCIM_KEY_macron                             = 0x0af,
513     SCIM_KEY_degree                             = 0x0b0,
514     SCIM_KEY_plusminus                          = 0x0b1,
515     SCIM_KEY_twosuperior                        = 0x0b2,
516     SCIM_KEY_threesuperior                      = 0x0b3,
517     SCIM_KEY_acute                              = 0x0b4,
518     SCIM_KEY_mu                                 = 0x0b5,
519     SCIM_KEY_paragraph                          = 0x0b6,
520     SCIM_KEY_periodcentered                     = 0x0b7,
521     SCIM_KEY_cedilla                            = 0x0b8,
522     SCIM_KEY_onesuperior                        = 0x0b9,
523     SCIM_KEY_masculine                          = 0x0ba,
524     SCIM_KEY_guillemotright                     = 0x0bb,     /* right angle quotation mark */
525     SCIM_KEY_onequarter                         = 0x0bc,
526     SCIM_KEY_onehalf                            = 0x0bd,
527     SCIM_KEY_threequarters                      = 0x0be,
528     SCIM_KEY_questiondown                       = 0x0bf,
529     SCIM_KEY_Agrave                             = 0x0c0,
530     SCIM_KEY_Aacute                             = 0x0c1,
531     SCIM_KEY_Acircumflex                        = 0x0c2,
532     SCIM_KEY_Atilde                             = 0x0c3,
533     SCIM_KEY_Adiaeresis                         = 0x0c4,
534     SCIM_KEY_Aring                              = 0x0c5,
535     SCIM_KEY_AE                                 = 0x0c6,
536     SCIM_KEY_Ccedilla                           = 0x0c7,
537     SCIM_KEY_Egrave                             = 0x0c8,
538     SCIM_KEY_Eacute                             = 0x0c9,
539     SCIM_KEY_Ecircumflex                        = 0x0ca,
540     SCIM_KEY_Ediaeresis                         = 0x0cb,
541     SCIM_KEY_Igrave                             = 0x0cc,
542     SCIM_KEY_Iacute                             = 0x0cd,
543     SCIM_KEY_Icircumflex                        = 0x0ce,
544     SCIM_KEY_Idiaeresis                         = 0x0cf,
545     SCIM_KEY_ETH                                = 0x0d0,
546     SCIM_KEY_Eth                                = 0x0d0,     /* deprecated */
547     SCIM_KEY_Ntilde                             = 0x0d1,
548     SCIM_KEY_Ograve                             = 0x0d2,
549     SCIM_KEY_Oacute                             = 0x0d3,
550     SCIM_KEY_Ocircumflex                        = 0x0d4,
551     SCIM_KEY_Otilde                             = 0x0d5,
552     SCIM_KEY_Odiaeresis                         = 0x0d6,
553     SCIM_KEY_multiply                           = 0x0d7,
554     SCIM_KEY_Ooblique                           = 0x0d8,
555     SCIM_KEY_Oslash                             = SCIM_KEY_Ooblique,
556     SCIM_KEY_Ugrave                             = 0x0d9,
557     SCIM_KEY_Uacute                             = 0x0da,
558     SCIM_KEY_Ucircumflex                        = 0x0db,
559     SCIM_KEY_Udiaeresis                         = 0x0dc,
560     SCIM_KEY_Yacute                             = 0x0dd,
561     SCIM_KEY_THORN                              = 0x0de,
562     SCIM_KEY_Thorn                              = 0x0de,     /* deprecated */
563     SCIM_KEY_ssharp                             = 0x0df,
564     SCIM_KEY_agrave                             = 0x0e0,
565     SCIM_KEY_aacute                             = 0x0e1,
566     SCIM_KEY_acircumflex                        = 0x0e2,
567     SCIM_KEY_atilde                             = 0x0e3,
568     SCIM_KEY_adiaeresis                         = 0x0e4,
569     SCIM_KEY_aring                              = 0x0e5,
570     SCIM_KEY_ae                                 = 0x0e6,
571     SCIM_KEY_ccedilla                           = 0x0e7,
572     SCIM_KEY_egrave                             = 0x0e8,
573     SCIM_KEY_eacute                             = 0x0e9,
574     SCIM_KEY_ecircumflex                        = 0x0ea,
575     SCIM_KEY_ediaeresis                         = 0x0eb,
576     SCIM_KEY_igrave                             = 0x0ec,
577     SCIM_KEY_iacute                             = 0x0ed,
578     SCIM_KEY_icircumflex                        = 0x0ee,
579     SCIM_KEY_idiaeresis                         = 0x0ef,
580     SCIM_KEY_eth                                = 0x0f0,
581     SCIM_KEY_ntilde                             = 0x0f1,
582     SCIM_KEY_ograve                             = 0x0f2,
583     SCIM_KEY_oacute                             = 0x0f3,
584     SCIM_KEY_ocircumflex                        = 0x0f4,
585     SCIM_KEY_otilde                             = 0x0f5,
586     SCIM_KEY_odiaeresis                         = 0x0f6,
587     SCIM_KEY_division                           = 0x0f7,
588     SCIM_KEY_oslash                             = 0x0f8,
589     SCIM_KEY_ooblique                           = SCIM_KEY_oslash,
590     SCIM_KEY_ugrave                             = 0x0f9,
591     SCIM_KEY_uacute                             = 0x0fa,
592     SCIM_KEY_ucircumflex                        = 0x0fb,
593     SCIM_KEY_udiaeresis                         = 0x0fc,
594     SCIM_KEY_yacute                             = 0x0fd,
595     SCIM_KEY_thorn                              = 0x0fe,
596     SCIM_KEY_ydiaeresis                         = 0x0ff,
597 
598     /*
599      *   Latin 2
600      *   Byte 3 = 1
601      */
602     SCIM_KEY_Aogonek                            = 0x1a1,
603     SCIM_KEY_breve                              = 0x1a2,
604     SCIM_KEY_Lstroke                            = 0x1a3,
605     SCIM_KEY_Lcaron                             = 0x1a5,
606     SCIM_KEY_Sacute                             = 0x1a6,
607     SCIM_KEY_Scaron                             = 0x1a9,
608     SCIM_KEY_Scedilla                           = 0x1aa,
609     SCIM_KEY_Tcaron                             = 0x1ab,
610     SCIM_KEY_Zacute                             = 0x1ac,
611     SCIM_KEY_Zcaron                             = 0x1ae,
612     SCIM_KEY_Zabovedot                          = 0x1af,
613     SCIM_KEY_aogonek                            = 0x1b1,
614     SCIM_KEY_ogonek                             = 0x1b2,
615     SCIM_KEY_lstroke                            = 0x1b3,
616     SCIM_KEY_lcaron                             = 0x1b5,
617     SCIM_KEY_sacute                             = 0x1b6,
618     SCIM_KEY_caron                              = 0x1b7,
619     SCIM_KEY_scaron                             = 0x1b9,
620     SCIM_KEY_scedilla                           = 0x1ba,
621     SCIM_KEY_tcaron                             = 0x1bb,
622     SCIM_KEY_zacute                             = 0x1bc,
623     SCIM_KEY_doubleacute                        = 0x1bd,
624     SCIM_KEY_zcaron                             = 0x1be,
625     SCIM_KEY_zabovedot                          = 0x1bf,
626     SCIM_KEY_Racute                             = 0x1c0,
627     SCIM_KEY_Abreve                             = 0x1c3,
628     SCIM_KEY_Lacute                             = 0x1c5,
629     SCIM_KEY_Cacute                             = 0x1c6,
630     SCIM_KEY_Ccaron                             = 0x1c8,
631     SCIM_KEY_Eogonek                            = 0x1ca,
632     SCIM_KEY_Ecaron                             = 0x1cc,
633     SCIM_KEY_Dcaron                             = 0x1cf,
634     SCIM_KEY_Dstroke                            = 0x1d0,
635     SCIM_KEY_Nacute                             = 0x1d1,
636     SCIM_KEY_Ncaron                             = 0x1d2,
637     SCIM_KEY_Odoubleacute                       = 0x1d5,
638     SCIM_KEY_Rcaron                             = 0x1d8,
639     SCIM_KEY_Uring                              = 0x1d9,
640     SCIM_KEY_Udoubleacute                       = 0x1db,
641     SCIM_KEY_Tcedilla                           = 0x1de,
642     SCIM_KEY_racute                             = 0x1e0,
643     SCIM_KEY_abreve                             = 0x1e3,
644     SCIM_KEY_lacute                             = 0x1e5,
645     SCIM_KEY_cacute                             = 0x1e6,
646     SCIM_KEY_ccaron                             = 0x1e8,
647     SCIM_KEY_eogonek                            = 0x1ea,
648     SCIM_KEY_ecaron                             = 0x1ec,
649     SCIM_KEY_dcaron                             = 0x1ef,
650     SCIM_KEY_dstroke                            = 0x1f0,
651     SCIM_KEY_nacute                             = 0x1f1,
652     SCIM_KEY_ncaron                             = 0x1f2,
653     SCIM_KEY_odoubleacute                       = 0x1f5,
654     SCIM_KEY_udoubleacute                       = 0x1fb,
655     SCIM_KEY_rcaron                             = 0x1f8,
656     SCIM_KEY_uring                              = 0x1f9,
657     SCIM_KEY_tcedilla                           = 0x1fe,
658     SCIM_KEY_abovedot                           = 0x1ff,
659 
660     /*
661      *   Latin 3
662      *   Byte 3 = 2
663      */
664     SCIM_KEY_Hstroke                            = 0x2a1,
665     SCIM_KEY_Hcircumflex                        = 0x2a6,
666     SCIM_KEY_Iabovedot                          = 0x2a9,
667     SCIM_KEY_Gbreve                             = 0x2ab,
668     SCIM_KEY_Jcircumflex                        = 0x2ac,
669     SCIM_KEY_hstroke                            = 0x2b1,
670     SCIM_KEY_hcircumflex                        = 0x2b6,
671     SCIM_KEY_idotless                           = 0x2b9,
672     SCIM_KEY_gbreve                             = 0x2bb,
673     SCIM_KEY_jcircumflex                        = 0x2bc,
674     SCIM_KEY_Cabovedot                          = 0x2c5,
675     SCIM_KEY_Ccircumflex                        = 0x2c6,
676     SCIM_KEY_Gabovedot                          = 0x2d5,
677     SCIM_KEY_Gcircumflex                        = 0x2d8,
678     SCIM_KEY_Ubreve                             = 0x2dd,
679     SCIM_KEY_Scircumflex                        = 0x2de,
680     SCIM_KEY_cabovedot                          = 0x2e5,
681     SCIM_KEY_ccircumflex                        = 0x2e6,
682     SCIM_KEY_gabovedot                          = 0x2f5,
683     SCIM_KEY_gcircumflex                        = 0x2f8,
684     SCIM_KEY_ubreve                             = 0x2fd,
685     SCIM_KEY_scircumflex                        = 0x2fe,
686 
687 
688     /*
689      *   Latin 4
690      *   Byte 3 = 3
691      */
692     SCIM_KEY_kra                                = 0x3a2,
693     SCIM_KEY_kappa                              = 0x3a2,   /* deprecated */
694     SCIM_KEY_Rcedilla                           = 0x3a3,
695     SCIM_KEY_Itilde                             = 0x3a5,
696     SCIM_KEY_Lcedilla                           = 0x3a6,
697     SCIM_KEY_Emacron                            = 0x3aa,
698     SCIM_KEY_Gcedilla                           = 0x3ab,
699     SCIM_KEY_Tslash                             = 0x3ac,
700     SCIM_KEY_rcedilla                           = 0x3b3,
701     SCIM_KEY_itilde                             = 0x3b5,
702     SCIM_KEY_lcedilla                           = 0x3b6,
703     SCIM_KEY_emacron                            = 0x3ba,
704     SCIM_KEY_gcedilla                           = 0x3bb,
705     SCIM_KEY_tslash                             = 0x3bc,
706     SCIM_KEY_ENG                                = 0x3bd,
707     SCIM_KEY_eng                                = 0x3bf,
708     SCIM_KEY_Amacron                            = 0x3c0,
709     SCIM_KEY_Iogonek                            = 0x3c7,
710     SCIM_KEY_Eabovedot                          = 0x3cc,
711     SCIM_KEY_Imacron                            = 0x3cf,
712     SCIM_KEY_Ncedilla                           = 0x3d1,
713     SCIM_KEY_Omacron                            = 0x3d2,
714     SCIM_KEY_Kcedilla                           = 0x3d3,
715     SCIM_KEY_Uogonek                            = 0x3d9,
716     SCIM_KEY_Utilde                             = 0x3dd,
717     SCIM_KEY_Umacron                            = 0x3de,
718     SCIM_KEY_amacron                            = 0x3e0,
719     SCIM_KEY_iogonek                            = 0x3e7,
720     SCIM_KEY_eabovedot                          = 0x3ec,
721     SCIM_KEY_imacron                            = 0x3ef,
722     SCIM_KEY_ncedilla                           = 0x3f1,
723     SCIM_KEY_omacron                            = 0x3f2,
724     SCIM_KEY_kcedilla                           = 0x3f3,
725     SCIM_KEY_uogonek                            = 0x3f9,
726     SCIM_KEY_utilde                             = 0x3fd,
727     SCIM_KEY_umacron                            = 0x3fe,
728 
729 /*
730  * Latin-8
731  * Byte 3 = 18
732  */
733     SCIM_KEY_Babovedot                          = 0x12a1,
734     SCIM_KEY_babovedot                          = 0x12a2,
735     SCIM_KEY_Dabovedot                          = 0x12a6,
736     SCIM_KEY_Wgrave                             = 0x12a8,
737     SCIM_KEY_Wacute                             = 0x12aa,
738     SCIM_KEY_dabovedot                          = 0x12ab,
739     SCIM_KEY_Ygrave                             = 0x12ac,
740     SCIM_KEY_Fabovedot                          = 0x12b0,
741     SCIM_KEY_fabovedot                          = 0x12b1,
742     SCIM_KEY_Mabovedot                          = 0x12b4,
743     SCIM_KEY_mabovedot                          = 0x12b5,
744     SCIM_KEY_Pabovedot                          = 0x12b7,
745     SCIM_KEY_wgrave                             = 0x12b8,
746     SCIM_KEY_pabovedot                          = 0x12b9,
747     SCIM_KEY_wacute                             = 0x12ba,
748     SCIM_KEY_Sabovedot                          = 0x12bb,
749     SCIM_KEY_ygrave                             = 0x12bc,
750     SCIM_KEY_Wdiaeresis                         = 0x12bd,
751     SCIM_KEY_wdiaeresis                         = 0x12be,
752     SCIM_KEY_sabovedot                          = 0x12bf,
753     SCIM_KEY_Wcircumflex                        = 0x12d0,
754     SCIM_KEY_Tabovedot                          = 0x12d7,
755     SCIM_KEY_Ycircumflex                        = 0x12de,
756     SCIM_KEY_wcircumflex                        = 0x12f0,
757     SCIM_KEY_tabovedot                          = 0x12f7,
758     SCIM_KEY_ycircumflex                        = 0x12fe,
759 
760     /*
761      * Latin-9 (a.k.a. Latin-0)
762      * Byte 3 = 19
763      */
764 
765     SCIM_KEY_OE                                 = 0x13bc,
766     SCIM_KEY_oe                                 = 0x13bd,
767     SCIM_KEY_Ydiaeresis                         = 0x13be,
768 
769     /*
770      * Katakana
771      * Byte 3 = 4
772      */
773 
774     SCIM_KEY_overline                           = 0x47e,
775     SCIM_KEY_kana_fullstop                      = 0x4a1,
776     SCIM_KEY_kana_openingbracket                = 0x4a2,
777     SCIM_KEY_kana_closingbracket                = 0x4a3,
778     SCIM_KEY_kana_comma                         = 0x4a4,
779     SCIM_KEY_kana_conjunctive                   = 0x4a5,
780     SCIM_KEY_kana_middledot                     = 0x4a5,  /* deprecated */
781     SCIM_KEY_kana_WO                            = 0x4a6,
782     SCIM_KEY_kana_a                             = 0x4a7,
783     SCIM_KEY_kana_i                             = 0x4a8,
784     SCIM_KEY_kana_u                             = 0x4a9,
785     SCIM_KEY_kana_e                             = 0x4aa,
786     SCIM_KEY_kana_o                             = 0x4ab,
787     SCIM_KEY_kana_ya                            = 0x4ac,
788     SCIM_KEY_kana_yu                            = 0x4ad,
789     SCIM_KEY_kana_yo                            = 0x4ae,
790     SCIM_KEY_kana_tsu                           = 0x4af,
791     SCIM_KEY_kana_tu                            = 0x4af,  /* deprecated */
792     SCIM_KEY_prolongedsound                     = 0x4b0,
793     SCIM_KEY_kana_A                             = 0x4b1,
794     SCIM_KEY_kana_I                             = 0x4b2,
795     SCIM_KEY_kana_U                             = 0x4b3,
796     SCIM_KEY_kana_E                             = 0x4b4,
797     SCIM_KEY_kana_O                             = 0x4b5,
798     SCIM_KEY_kana_KA                            = 0x4b6,
799     SCIM_KEY_kana_KI                            = 0x4b7,
800     SCIM_KEY_kana_KU                            = 0x4b8,
801     SCIM_KEY_kana_KE                            = 0x4b9,
802     SCIM_KEY_kana_KO                            = 0x4ba,
803     SCIM_KEY_kana_SA                            = 0x4bb,
804     SCIM_KEY_kana_SHI                           = 0x4bc,
805     SCIM_KEY_kana_SU                            = 0x4bd,
806     SCIM_KEY_kana_SE                            = 0x4be,
807     SCIM_KEY_kana_SO                            = 0x4bf,
808     SCIM_KEY_kana_TA                            = 0x4c0,
809     SCIM_KEY_kana_CHI                           = 0x4c1,
810     SCIM_KEY_kana_TI                            = 0x4c1,  /* deprecated */
811     SCIM_KEY_kana_TSU                           = 0x4c2,
812     SCIM_KEY_kana_TU                            = 0x4c2,  /* deprecated */
813     SCIM_KEY_kana_TE                            = 0x4c3,
814     SCIM_KEY_kana_TO                            = 0x4c4,
815     SCIM_KEY_kana_NA                            = 0x4c5,
816     SCIM_KEY_kana_NI                            = 0x4c6,
817     SCIM_KEY_kana_NU                            = 0x4c7,
818     SCIM_KEY_kana_NE                            = 0x4c8,
819     SCIM_KEY_kana_NO                            = 0x4c9,
820     SCIM_KEY_kana_HA                            = 0x4ca,
821     SCIM_KEY_kana_HI                            = 0x4cb,
822     SCIM_KEY_kana_FU                            = 0x4cc,
823     SCIM_KEY_kana_HU                            = 0x4cc,  /* deprecated */
824     SCIM_KEY_kana_HE                            = 0x4cd,
825     SCIM_KEY_kana_HO                            = 0x4ce,
826     SCIM_KEY_kana_MA                            = 0x4cf,
827     SCIM_KEY_kana_MI                            = 0x4d0,
828     SCIM_KEY_kana_MU                            = 0x4d1,
829     SCIM_KEY_kana_ME                            = 0x4d2,
830     SCIM_KEY_kana_MO                            = 0x4d3,
831     SCIM_KEY_kana_YA                            = 0x4d4,
832     SCIM_KEY_kana_YU                            = 0x4d5,
833     SCIM_KEY_kana_YO                            = 0x4d6,
834     SCIM_KEY_kana_RA                            = 0x4d7,
835     SCIM_KEY_kana_RI                            = 0x4d8,
836     SCIM_KEY_kana_RU                            = 0x4d9,
837     SCIM_KEY_kana_RE                            = 0x4da,
838     SCIM_KEY_kana_RO                            = 0x4db,
839     SCIM_KEY_kana_WA                            = 0x4dc,
840     SCIM_KEY_kana_N                             = 0x4dd,
841     SCIM_KEY_voicedsound                        = 0x4de,
842     SCIM_KEY_semivoicedsound                    = 0x4df,
843     SCIM_KEY_kana_switch                        = 0xFF7E,  /* Alias for mode_switch */
844 
845     /*
846      *  Arabic
847      *  Byte 3 = 5
848      */
849     SCIM_KEY_Farsi_0                            = 0x590,
850     SCIM_KEY_Farsi_1                            = 0x591,
851     SCIM_KEY_Farsi_2                            = 0x592,
852     SCIM_KEY_Farsi_3                            = 0x593,
853     SCIM_KEY_Farsi_4                            = 0x594,
854     SCIM_KEY_Farsi_5                            = 0x595,
855     SCIM_KEY_Farsi_6                            = 0x596,
856     SCIM_KEY_Farsi_7                            = 0x597,
857     SCIM_KEY_Farsi_8                            = 0x598,
858     SCIM_KEY_Farsi_9                            = 0x599,
859     SCIM_KEY_Arabic_percent                     = 0x5a5,
860     SCIM_KEY_Arabic_superscript_alef            = 0x5a6,
861     SCIM_KEY_Arabic_tteh                        = 0x5a7,
862     SCIM_KEY_Arabic_peh                         = 0x5a8,
863     SCIM_KEY_Arabic_tcheh                       = 0x5a9,
864     SCIM_KEY_Arabic_ddal                        = 0x5aa,
865     SCIM_KEY_Arabic_rreh                        = 0x5ab,
866     SCIM_KEY_Arabic_comma                       = 0x5ac,
867     SCIM_KEY_Arabic_fullstop                    = 0x5ae,
868     SCIM_KEY_Arabic_0                           = 0x5b0,
869     SCIM_KEY_Arabic_1                           = 0x5b1,
870     SCIM_KEY_Arabic_2                           = 0x5b2,
871     SCIM_KEY_Arabic_3                           = 0x5b3,
872     SCIM_KEY_Arabic_4                           = 0x5b4,
873     SCIM_KEY_Arabic_5                           = 0x5b5,
874     SCIM_KEY_Arabic_6                           = 0x5b6,
875     SCIM_KEY_Arabic_7                           = 0x5b7,
876     SCIM_KEY_Arabic_8                           = 0x5b8,
877     SCIM_KEY_Arabic_9                           = 0x5b9,
878     SCIM_KEY_Arabic_semicolon                   = 0x5bb,
879     SCIM_KEY_Arabic_question_mark               = 0x5bf,
880     SCIM_KEY_Arabic_hamza                       = 0x5c1,
881     SCIM_KEY_Arabic_maddaonalef                 = 0x5c2,
882     SCIM_KEY_Arabic_hamzaonalef                 = 0x5c3,
883     SCIM_KEY_Arabic_hamzaonwaw                  = 0x5c4,
884     SCIM_KEY_Arabic_hamzaunderalef              = 0x5c5,
885     SCIM_KEY_Arabic_hamzaonyeh                  = 0x5c6,
886     SCIM_KEY_Arabic_alef                        = 0x5c7,
887     SCIM_KEY_Arabic_beh                         = 0x5c8,
888     SCIM_KEY_Arabic_tehmarbuta                  = 0x5c9,
889     SCIM_KEY_Arabic_teh                         = 0x5ca,
890     SCIM_KEY_Arabic_theh                        = 0x5cb,
891     SCIM_KEY_Arabic_jeem                        = 0x5cc,
892     SCIM_KEY_Arabic_hah                         = 0x5cd,
893     SCIM_KEY_Arabic_khah                        = 0x5ce,
894     SCIM_KEY_Arabic_dal                         = 0x5cf,
895     SCIM_KEY_Arabic_thal                        = 0x5d0,
896     SCIM_KEY_Arabic_ra                          = 0x5d1,
897     SCIM_KEY_Arabic_zain                        = 0x5d2,
898     SCIM_KEY_Arabic_seen                        = 0x5d3,
899     SCIM_KEY_Arabic_sheen                       = 0x5d4,
900     SCIM_KEY_Arabic_sad                         = 0x5d5,
901     SCIM_KEY_Arabic_dad                         = 0x5d6,
902     SCIM_KEY_Arabic_tah                         = 0x5d7,
903     SCIM_KEY_Arabic_zah                         = 0x5d8,
904     SCIM_KEY_Arabic_ain                         = 0x5d9,
905     SCIM_KEY_Arabic_ghain                       = 0x5da,
906     SCIM_KEY_Arabic_tatweel                     = 0x5e0,
907     SCIM_KEY_Arabic_feh                         = 0x5e1,
908     SCIM_KEY_Arabic_qaf                         = 0x5e2,
909     SCIM_KEY_Arabic_kaf                         = 0x5e3,
910     SCIM_KEY_Arabic_lam                         = 0x5e4,
911     SCIM_KEY_Arabic_meem                        = 0x5e5,
912     SCIM_KEY_Arabic_noon                        = 0x5e6,
913     SCIM_KEY_Arabic_ha                          = 0x5e7,
914     SCIM_KEY_Arabic_heh                         = 0x5e7,  /* deprecated */
915     SCIM_KEY_Arabic_waw                         = 0x5e8,
916     SCIM_KEY_Arabic_alefmaksura                 = 0x5e9,
917     SCIM_KEY_Arabic_yeh                         = 0x5ea,
918     SCIM_KEY_Arabic_fathatan                    = 0x5eb,
919     SCIM_KEY_Arabic_dammatan                    = 0x5ec,
920     SCIM_KEY_Arabic_kasratan                    = 0x5ed,
921     SCIM_KEY_Arabic_fatha                       = 0x5ee,
922     SCIM_KEY_Arabic_damma                       = 0x5ef,
923     SCIM_KEY_Arabic_kasra                       = 0x5f0,
924     SCIM_KEY_Arabic_shadda                      = 0x5f1,
925     SCIM_KEY_Arabic_sukun                       = 0x5f2,
926     SCIM_KEY_Arabic_madda_above                 = 0x5f3,
927     SCIM_KEY_Arabic_hamza_above                 = 0x5f4,
928     SCIM_KEY_Arabic_hamza_below                 = 0x5f5,
929     SCIM_KEY_Arabic_jeh                         = 0x5f6,
930     SCIM_KEY_Arabic_veh                         = 0x5f7,
931     SCIM_KEY_Arabic_keheh                       = 0x5f8,
932     SCIM_KEY_Arabic_gaf                         = 0x5f9,
933     SCIM_KEY_Arabic_noon_ghunna                 = 0x5fa,
934     SCIM_KEY_Arabic_heh_doachashmee             = 0x5fb,
935     SCIM_KEY_Farsi_yeh                          = 0x5fc,
936     SCIM_KEY_Arabic_farsi_yeh                   = SCIM_KEY_Farsi_yeh,
937     SCIM_KEY_Arabic_yeh_baree                   = 0x5fd,
938     SCIM_KEY_Arabic_heh_goal                    = 0x5fe,
939     SCIM_KEY_Arabic_switch                      = 0xFF7E,  /* Alias for mode_switch */
940 
941     /*
942      * Cyrillic
943      * Byte 3 = 6
944      */
945     SCIM_KEY_Cyrillic_GHE_bar                   = 0x680,
946     SCIM_KEY_Cyrillic_ghe_bar                   = 0x690,
947     SCIM_KEY_Cyrillic_ZHE_descender             = 0x681,
948     SCIM_KEY_Cyrillic_zhe_descender             = 0x691,
949     SCIM_KEY_Cyrillic_KA_descender              = 0x682,
950     SCIM_KEY_Cyrillic_ka_descender              = 0x692,
951     SCIM_KEY_Cyrillic_KA_vertstroke             = 0x683,
952     SCIM_KEY_Cyrillic_ka_vertstroke             = 0x693,
953     SCIM_KEY_Cyrillic_EN_descender              = 0x684,
954     SCIM_KEY_Cyrillic_en_descender              = 0x694,
955     SCIM_KEY_Cyrillic_U_straight                = 0x685,
956     SCIM_KEY_Cyrillic_u_straight                = 0x695,
957     SCIM_KEY_Cyrillic_U_straight_bar            = 0x686,
958     SCIM_KEY_Cyrillic_u_straight_bar            = 0x696,
959     SCIM_KEY_Cyrillic_HA_descender              = 0x687,
960     SCIM_KEY_Cyrillic_ha_descender              = 0x697,
961     SCIM_KEY_Cyrillic_CHE_descender             = 0x688,
962     SCIM_KEY_Cyrillic_che_descender             = 0x698,
963     SCIM_KEY_Cyrillic_CHE_vertstroke            = 0x689,
964     SCIM_KEY_Cyrillic_che_vertstroke            = 0x699,
965     SCIM_KEY_Cyrillic_SHHA                      = 0x68a,
966     SCIM_KEY_Cyrillic_shha                      = 0x69a,
967 
968     SCIM_KEY_Cyrillic_SCHWA                     = 0x68c,
969     SCIM_KEY_Cyrillic_schwa                     = 0x69c,
970     SCIM_KEY_Cyrillic_I_macron                  = 0x68d,
971     SCIM_KEY_Cyrillic_i_macron                  = 0x69d,
972     SCIM_KEY_Cyrillic_O_bar                     = 0x68e,
973     SCIM_KEY_Cyrillic_o_bar                     = 0x69e,
974     SCIM_KEY_Cyrillic_U_macron                  = 0x68f,
975     SCIM_KEY_Cyrillic_u_macron                  = 0x69f,
976 
977     SCIM_KEY_Serbian_dje                        = 0x6a1,
978     SCIM_KEY_Macedonia_gje                      = 0x6a2,
979     SCIM_KEY_Cyrillic_io                        = 0x6a3,
980     SCIM_KEY_Ukrainian_ie                       = 0x6a4,
981     SCIM_KEY_Ukranian_je                        = 0x6a4,  /* deprecated */
982     SCIM_KEY_Macedonia_dse                      = 0x6a5,
983     SCIM_KEY_Ukrainian_i                        = 0x6a6,
984     SCIM_KEY_Ukranian_i                         = 0x6a6,  /* deprecated */
985     SCIM_KEY_Ukrainian_yi                       = 0x6a7,
986     SCIM_KEY_Ukranian_yi                        = 0x6a7,  /* deprecated */
987     SCIM_KEY_Cyrillic_je                        = 0x6a8,
988     SCIM_KEY_Serbian_je                         = 0x6a8,  /* deprecated */
989     SCIM_KEY_Cyrillic_lje                       = 0x6a9,
990     SCIM_KEY_Serbian_lje                        = 0x6a9,  /* deprecated */
991     SCIM_KEY_Cyrillic_nje                       = 0x6aa,
992     SCIM_KEY_Serbian_nje                        = 0x6aa,  /* deprecated */
993     SCIM_KEY_Serbian_tshe                       = 0x6ab,
994     SCIM_KEY_Macedonia_kje                      = 0x6ac,
995     SCIM_KEY_Ukrainian_ghe_with_upturn          = 0x6ad,
996     SCIM_KEY_Byelorussian_shortu                = 0x6ae,
997     SCIM_KEY_Cyrillic_dzhe                      = 0x6af,
998     SCIM_KEY_Serbian_dze                        = 0x6af,  /* deprecated */
999     SCIM_KEY_numerosign                         = 0x6b0,
1000     SCIM_KEY_Serbian_DJE                        = 0x6b1,
1001     SCIM_KEY_Macedonia_GJE                      = 0x6b2,
1002     SCIM_KEY_Cyrillic_IO                        = 0x6b3,
1003     SCIM_KEY_Ukrainian_IE                       = 0x6b4,
1004     SCIM_KEY_Ukranian_JE                        = 0x6b4,  /* deprecated */
1005     SCIM_KEY_Macedonia_DSE                      = 0x6b5,
1006     SCIM_KEY_Ukrainian_I                        = 0x6b6,
1007     SCIM_KEY_Ukranian_I                         = 0x6b6,  /* deprecated */
1008     SCIM_KEY_Ukrainian_YI                       = 0x6b7,
1009     SCIM_KEY_Ukranian_YI                        = 0x6b7,  /* deprecated */
1010     SCIM_KEY_Cyrillic_JE                        = 0x6b8,
1011     SCIM_KEY_Serbian_JE                         = 0x6b8,  /* deprecated */
1012     SCIM_KEY_Cyrillic_LJE                       = 0x6b9,
1013     SCIM_KEY_Serbian_LJE                        = 0x6b9,  /* deprecated */
1014     SCIM_KEY_Cyrillic_NJE                       = 0x6ba,
1015     SCIM_KEY_Serbian_NJE                        = 0x6ba,  /* deprecated */
1016     SCIM_KEY_Serbian_TSHE                       = 0x6bb,
1017     SCIM_KEY_Macedonia_KJE                      = 0x6bc,
1018     SCIM_KEY_Ukrainian_GHE_WITH_UPTURN          = 0x6bd,
1019     SCIM_KEY_Byelorussian_SHORTU                = 0x6be,
1020     SCIM_KEY_Cyrillic_DZHE                      = 0x6bf,
1021     SCIM_KEY_Serbian_DZE                        = 0x6bf,  /* deprecated */
1022     SCIM_KEY_Cyrillic_yu                        = 0x6c0,
1023     SCIM_KEY_Cyrillic_a                         = 0x6c1,
1024     SCIM_KEY_Cyrillic_be                        = 0x6c2,
1025     SCIM_KEY_Cyrillic_tse                       = 0x6c3,
1026     SCIM_KEY_Cyrillic_de                        = 0x6c4,
1027     SCIM_KEY_Cyrillic_ie                        = 0x6c5,
1028     SCIM_KEY_Cyrillic_ef                        = 0x6c6,
1029     SCIM_KEY_Cyrillic_ghe                       = 0x6c7,
1030     SCIM_KEY_Cyrillic_ha                        = 0x6c8,
1031     SCIM_KEY_Cyrillic_i                         = 0x6c9,
1032     SCIM_KEY_Cyrillic_shorti                    = 0x6ca,
1033     SCIM_KEY_Cyrillic_ka                        = 0x6cb,
1034     SCIM_KEY_Cyrillic_el                        = 0x6cc,
1035     SCIM_KEY_Cyrillic_em                        = 0x6cd,
1036     SCIM_KEY_Cyrillic_en                        = 0x6ce,
1037     SCIM_KEY_Cyrillic_o                         = 0x6cf,
1038     SCIM_KEY_Cyrillic_pe                        = 0x6d0,
1039     SCIM_KEY_Cyrillic_ya                        = 0x6d1,
1040     SCIM_KEY_Cyrillic_er                        = 0x6d2,
1041     SCIM_KEY_Cyrillic_es                        = 0x6d3,
1042     SCIM_KEY_Cyrillic_te                        = 0x6d4,
1043     SCIM_KEY_Cyrillic_u                         = 0x6d5,
1044     SCIM_KEY_Cyrillic_zhe                       = 0x6d6,
1045     SCIM_KEY_Cyrillic_ve                        = 0x6d7,
1046     SCIM_KEY_Cyrillic_softsign                  = 0x6d8,
1047     SCIM_KEY_Cyrillic_yeru                      = 0x6d9,
1048     SCIM_KEY_Cyrillic_ze                        = 0x6da,
1049     SCIM_KEY_Cyrillic_sha                       = 0x6db,
1050     SCIM_KEY_Cyrillic_e                         = 0x6dc,
1051     SCIM_KEY_Cyrillic_shcha                     = 0x6dd,
1052     SCIM_KEY_Cyrillic_che                       = 0x6de,
1053     SCIM_KEY_Cyrillic_hardsign                  = 0x6df,
1054     SCIM_KEY_Cyrillic_YU                        = 0x6e0,
1055     SCIM_KEY_Cyrillic_A                         = 0x6e1,
1056     SCIM_KEY_Cyrillic_BE                        = 0x6e2,
1057     SCIM_KEY_Cyrillic_TSE                       = 0x6e3,
1058     SCIM_KEY_Cyrillic_DE                        = 0x6e4,
1059     SCIM_KEY_Cyrillic_IE                        = 0x6e5,
1060     SCIM_KEY_Cyrillic_EF                        = 0x6e6,
1061     SCIM_KEY_Cyrillic_GHE                       = 0x6e7,
1062     SCIM_KEY_Cyrillic_HA                        = 0x6e8,
1063     SCIM_KEY_Cyrillic_I                         = 0x6e9,
1064     SCIM_KEY_Cyrillic_SHORTI                    = 0x6ea,
1065     SCIM_KEY_Cyrillic_KA                        = 0x6eb,
1066     SCIM_KEY_Cyrillic_EL                        = 0x6ec,
1067     SCIM_KEY_Cyrillic_EM                        = 0x6ed,
1068     SCIM_KEY_Cyrillic_EN                        = 0x6ee,
1069     SCIM_KEY_Cyrillic_O                         = 0x6ef,
1070     SCIM_KEY_Cyrillic_PE                        = 0x6f0,
1071     SCIM_KEY_Cyrillic_YA                        = 0x6f1,
1072     SCIM_KEY_Cyrillic_ER                        = 0x6f2,
1073     SCIM_KEY_Cyrillic_ES                        = 0x6f3,
1074     SCIM_KEY_Cyrillic_TE                        = 0x6f4,
1075     SCIM_KEY_Cyrillic_U                         = 0x6f5,
1076     SCIM_KEY_Cyrillic_ZHE                       = 0x6f6,
1077     SCIM_KEY_Cyrillic_VE                        = 0x6f7,
1078     SCIM_KEY_Cyrillic_SOFTSIGN                  = 0x6f8,
1079     SCIM_KEY_Cyrillic_YERU                      = 0x6f9,
1080     SCIM_KEY_Cyrillic_ZE                        = 0x6fa,
1081     SCIM_KEY_Cyrillic_SHA                       = 0x6fb,
1082     SCIM_KEY_Cyrillic_E                         = 0x6fc,
1083     SCIM_KEY_Cyrillic_SHCHA                     = 0x6fd,
1084     SCIM_KEY_Cyrillic_CHE                       = 0x6fe,
1085     SCIM_KEY_Cyrillic_HARDSIGN                  = 0x6ff,
1086 
1087     /*
1088      * Greek
1089      * Byte 3 = 7
1090      */
1091     SCIM_KEY_Greek_ALPHAaccent                  = 0x7a1,
1092     SCIM_KEY_Greek_EPSILONaccent                = 0x7a2,
1093     SCIM_KEY_Greek_ETAaccent                    = 0x7a3,
1094     SCIM_KEY_Greek_IOTAaccent                   = 0x7a4,
1095     SCIM_KEY_Greek_IOTAdieresis                 = 0x7a5,
1096     SCIM_KEY_Greek_IOTAdiaeresis                = SCIM_KEY_Greek_IOTAdieresis, /* old typo */
1097     SCIM_KEY_Greek_OMICRONaccent                = 0x7a7,
1098     SCIM_KEY_Greek_UPSILONaccent                = 0x7a8,
1099     SCIM_KEY_Greek_UPSILONdieresis              = 0x7a9,
1100     SCIM_KEY_Greek_OMEGAaccent                  = 0x7ab,
1101     SCIM_KEY_Greek_accentdieresis               = 0x7ae,
1102     SCIM_KEY_Greek_horizbar                     = 0x7af,
1103     SCIM_KEY_Greek_alphaaccent                  = 0x7b1,
1104     SCIM_KEY_Greek_epsilonaccent                = 0x7b2,
1105     SCIM_KEY_Greek_etaaccent                    = 0x7b3,
1106     SCIM_KEY_Greek_iotaaccent                   = 0x7b4,
1107     SCIM_KEY_Greek_iotadieresis                 = 0x7b5,
1108     SCIM_KEY_Greek_iotaaccentdieresis           = 0x7b6,
1109     SCIM_KEY_Greek_omicronaccent                = 0x7b7,
1110     SCIM_KEY_Greek_upsilonaccent                = 0x7b8,
1111     SCIM_KEY_Greek_upsilondieresis              = 0x7b9,
1112     SCIM_KEY_Greek_upsilonaccentdieresis        = 0x7ba,
1113     SCIM_KEY_Greek_omegaaccent                  = 0x7bb,
1114     SCIM_KEY_Greek_ALPHA                        = 0x7c1,
1115     SCIM_KEY_Greek_BETA                         = 0x7c2,
1116     SCIM_KEY_Greek_GAMMA                        = 0x7c3,
1117     SCIM_KEY_Greek_DELTA                        = 0x7c4,
1118     SCIM_KEY_Greek_EPSILON                      = 0x7c5,
1119     SCIM_KEY_Greek_ZETA                         = 0x7c6,
1120     SCIM_KEY_Greek_ETA                          = 0x7c7,
1121     SCIM_KEY_Greek_THETA                        = 0x7c8,
1122     SCIM_KEY_Greek_IOTA                         = 0x7c9,
1123     SCIM_KEY_Greek_KAPPA                        = 0x7ca,
1124     SCIM_KEY_Greek_LAMDA                        = 0x7cb,
1125     SCIM_KEY_Greek_LAMBDA                       = 0x7cb,
1126     SCIM_KEY_Greek_MU                           = 0x7cc,
1127     SCIM_KEY_Greek_NU                           = 0x7cd,
1128     SCIM_KEY_Greek_XI                           = 0x7ce,
1129     SCIM_KEY_Greek_OMICRON                      = 0x7cf,
1130     SCIM_KEY_Greek_PI                           = 0x7d0,
1131     SCIM_KEY_Greek_RHO                          = 0x7d1,
1132     SCIM_KEY_Greek_SIGMA                        = 0x7d2,
1133     SCIM_KEY_Greek_TAU                          = 0x7d4,
1134     SCIM_KEY_Greek_UPSILON                      = 0x7d5,
1135     SCIM_KEY_Greek_PHI                          = 0x7d6,
1136     SCIM_KEY_Greek_CHI                          = 0x7d7,
1137     SCIM_KEY_Greek_PSI                          = 0x7d8,
1138     SCIM_KEY_Greek_OMEGA                        = 0x7d9,
1139     SCIM_KEY_Greek_alpha                        = 0x7e1,
1140     SCIM_KEY_Greek_beta                         = 0x7e2,
1141     SCIM_KEY_Greek_gamma                        = 0x7e3,
1142     SCIM_KEY_Greek_delta                        = 0x7e4,
1143     SCIM_KEY_Greek_epsilon                      = 0x7e5,
1144     SCIM_KEY_Greek_zeta                         = 0x7e6,
1145     SCIM_KEY_Greek_eta                          = 0x7e7,
1146     SCIM_KEY_Greek_theta                        = 0x7e8,
1147     SCIM_KEY_Greek_iota                         = 0x7e9,
1148     SCIM_KEY_Greek_kappa                        = 0x7ea,
1149     SCIM_KEY_Greek_lamda                        = 0x7eb,
1150     SCIM_KEY_Greek_lambda                       = 0x7eb,
1151     SCIM_KEY_Greek_mu                           = 0x7ec,
1152     SCIM_KEY_Greek_nu                           = 0x7ed,
1153     SCIM_KEY_Greek_xi                           = 0x7ee,
1154     SCIM_KEY_Greek_omicron                      = 0x7ef,
1155     SCIM_KEY_Greek_pi                           = 0x7f0,
1156     SCIM_KEY_Greek_rho                          = 0x7f1,
1157     SCIM_KEY_Greek_sigma                        = 0x7f2,
1158     SCIM_KEY_Greek_finalsmallsigma              = 0x7f3,
1159     SCIM_KEY_Greek_tau                          = 0x7f4,
1160     SCIM_KEY_Greek_upsilon                      = 0x7f5,
1161     SCIM_KEY_Greek_phi                          = 0x7f6,
1162     SCIM_KEY_Greek_chi                          = 0x7f7,
1163     SCIM_KEY_Greek_psi                          = 0x7f8,
1164     SCIM_KEY_Greek_omega                        = 0x7f9,
1165     SCIM_KEY_Greek_switch                       = 0xFF7E,  /* Alias for mode_switch */
1166 
1167     /*
1168      * Technical
1169      * Byte 3 = 8
1170      */
1171     SCIM_KEY_leftradical                        = 0x8a1,
1172     SCIM_KEY_topleftradical                     = 0x8a2,
1173     SCIM_KEY_horizconnector                     = 0x8a3,
1174     SCIM_KEY_topintegral                        = 0x8a4,
1175     SCIM_KEY_botintegral                        = 0x8a5,
1176     SCIM_KEY_vertconnector                      = 0x8a6,
1177     SCIM_KEY_topleftsqbracket                   = 0x8a7,
1178     SCIM_KEY_botleftsqbracket                   = 0x8a8,
1179     SCIM_KEY_toprightsqbracket                  = 0x8a9,
1180     SCIM_KEY_botrightsqbracket                  = 0x8aa,
1181     SCIM_KEY_topleftparens                      = 0x8ab,
1182     SCIM_KEY_botleftparens                      = 0x8ac,
1183     SCIM_KEY_toprightparens                     = 0x8ad,
1184     SCIM_KEY_botrightparens                     = 0x8ae,
1185     SCIM_KEY_leftmiddlecurlybrace               = 0x8af,
1186     SCIM_KEY_rightmiddlecurlybrace              = 0x8b0,
1187     SCIM_KEY_topleftsummation                   = 0x8b1,
1188     SCIM_KEY_botleftsummation                   = 0x8b2,
1189     SCIM_KEY_topvertsummationconnector          = 0x8b3,
1190     SCIM_KEY_botvertsummationconnector          = 0x8b4,
1191     SCIM_KEY_toprightsummation                  = 0x8b5,
1192     SCIM_KEY_botrightsummation                  = 0x8b6,
1193     SCIM_KEY_rightmiddlesummation               = 0x8b7,
1194     SCIM_KEY_lessthanequal                      = 0x8bc,
1195     SCIM_KEY_notequal                           = 0x8bd,
1196     SCIM_KEY_greaterthanequal                   = 0x8be,
1197     SCIM_KEY_integral                           = 0x8bf,
1198     SCIM_KEY_therefore                          = 0x8c0,
1199     SCIM_KEY_variation                          = 0x8c1,
1200     SCIM_KEY_infinity                           = 0x8c2,
1201     SCIM_KEY_nabla                              = 0x8c5,
1202     SCIM_KEY_approximate                        = 0x8c8,
1203     SCIM_KEY_similarequal                       = 0x8c9,
1204     SCIM_KEY_ifonlyif                           = 0x8cd,
1205     SCIM_KEY_implies                            = 0x8ce,
1206     SCIM_KEY_identical                          = 0x8cf,
1207     SCIM_KEY_radical                            = 0x8d6,
1208     SCIM_KEY_includedin                         = 0x8da,
1209     SCIM_KEY_includes                           = 0x8db,
1210     SCIM_KEY_intersection                       = 0x8dc,
1211     SCIM_KEY_union                              = 0x8dd,
1212     SCIM_KEY_logicaland                         = 0x8de,
1213     SCIM_KEY_logicalor                          = 0x8df,
1214     SCIM_KEY_partialderivative                  = 0x8ef,
1215     SCIM_KEY_function                           = 0x8f6,
1216     SCIM_KEY_leftarrow                          = 0x8fb,
1217     SCIM_KEY_uparrow                            = 0x8fc,
1218     SCIM_KEY_rightarrow                         = 0x8fd,
1219     SCIM_KEY_downarrow                          = 0x8fe,
1220 
1221     /*
1222      * Special
1223      * Byte 3 = 9
1224      */
1225     SCIM_KEY_blank                              = 0x9df,
1226     SCIM_KEY_soliddiamond                       = 0x9e0,
1227     SCIM_KEY_checkerboard                       = 0x9e1,
1228     SCIM_KEY_ht                                 = 0x9e2,
1229     SCIM_KEY_ff                                 = 0x9e3,
1230     SCIM_KEY_cr                                 = 0x9e4,
1231     SCIM_KEY_lf                                 = 0x9e5,
1232     SCIM_KEY_nl                                 = 0x9e8,
1233     SCIM_KEY_vt                                 = 0x9e9,
1234     SCIM_KEY_lowrightcorner                     = 0x9ea,
1235     SCIM_KEY_uprightcorner                      = 0x9eb,
1236     SCIM_KEY_upleftcorner                       = 0x9ec,
1237     SCIM_KEY_lowleftcorner                      = 0x9ed,
1238     SCIM_KEY_crossinglines                      = 0x9ee,
1239     SCIM_KEY_horizlinescan1                     = 0x9ef,
1240     SCIM_KEY_horizlinescan3                     = 0x9f0,
1241     SCIM_KEY_horizlinescan5                     = 0x9f1,
1242     SCIM_KEY_horizlinescan7                     = 0x9f2,
1243     SCIM_KEY_horizlinescan9                     = 0x9f3,
1244     SCIM_KEY_leftt                              = 0x9f4,
1245     SCIM_KEY_rightt                             = 0x9f5,
1246     SCIM_KEY_bott                               = 0x9f6,
1247     SCIM_KEY_topt                               = 0x9f7,
1248     SCIM_KEY_vertbar                            = 0x9f8,
1249 
1250     /*
1251      * Publishing
1252      * Byte 3 = a
1253      */
1254     SCIM_KEY_emspace                            = 0xaa1,
1255     SCIM_KEY_enspace                            = 0xaa2,
1256     SCIM_KEY_em3space                           = 0xaa3,
1257     SCIM_KEY_em4space                           = 0xaa4,
1258     SCIM_KEY_digitspace                         = 0xaa5,
1259     SCIM_KEY_punctspace                         = 0xaa6,
1260     SCIM_KEY_thinspace                          = 0xaa7,
1261     SCIM_KEY_hairspace                          = 0xaa8,
1262     SCIM_KEY_emdash                             = 0xaa9,
1263     SCIM_KEY_endash                             = 0xaaa,
1264     SCIM_KEY_signifblank                        = 0xaac,
1265     SCIM_KEY_ellipsis                           = 0xaae,
1266     SCIM_KEY_doubbaselinedot                    = 0xaaf,
1267     SCIM_KEY_onethird                           = 0xab0,
1268     SCIM_KEY_twothirds                          = 0xab1,
1269     SCIM_KEY_onefifth                           = 0xab2,
1270     SCIM_KEY_twofifths                          = 0xab3,
1271     SCIM_KEY_threefifths                        = 0xab4,
1272     SCIM_KEY_fourfifths                         = 0xab5,
1273     SCIM_KEY_onesixth                           = 0xab6,
1274     SCIM_KEY_fivesixths                         = 0xab7,
1275     SCIM_KEY_careof                             = 0xab8,
1276     SCIM_KEY_figdash                            = 0xabb,
1277     SCIM_KEY_leftanglebracket                   = 0xabc,
1278     SCIM_KEY_decimalpoint                       = 0xabd,
1279     SCIM_KEY_rightanglebracket                  = 0xabe,
1280     SCIM_KEY_marker                             = 0xabf,
1281     SCIM_KEY_oneeighth                          = 0xac3,
1282     SCIM_KEY_threeeighths                       = 0xac4,
1283     SCIM_KEY_fiveeighths                        = 0xac5,
1284     SCIM_KEY_seveneighths                       = 0xac6,
1285     SCIM_KEY_trademark                          = 0xac9,
1286     SCIM_KEY_signaturemark                      = 0xaca,
1287     SCIM_KEY_trademarkincircle                  = 0xacb,
1288     SCIM_KEY_leftopentriangle                   = 0xacc,
1289     SCIM_KEY_rightopentriangle                  = 0xacd,
1290     SCIM_KEY_emopencircle                       = 0xace,
1291     SCIM_KEY_emopenrectangle                    = 0xacf,
1292     SCIM_KEY_leftsinglequotemark                = 0xad0,
1293     SCIM_KEY_rightsinglequotemark               = 0xad1,
1294     SCIM_KEY_leftdoublequotemark                = 0xad2,
1295     SCIM_KEY_rightdoublequotemark               = 0xad3,
1296     SCIM_KEY_prescription                       = 0xad4,
1297     SCIM_KEY_minutes                            = 0xad6,
1298     SCIM_KEY_seconds                            = 0xad7,
1299     SCIM_KEY_latincross                         = 0xad9,
1300     SCIM_KEY_hexagram                           = 0xada,
1301     SCIM_KEY_filledrectbullet                   = 0xadb,
1302     SCIM_KEY_filledlefttribullet                = 0xadc,
1303     SCIM_KEY_filledrighttribullet               = 0xadd,
1304     SCIM_KEY_emfilledcircle                     = 0xade,
1305     SCIM_KEY_emfilledrect                       = 0xadf,
1306     SCIM_KEY_enopencircbullet                   = 0xae0,
1307     SCIM_KEY_enopensquarebullet                 = 0xae1,
1308     SCIM_KEY_openrectbullet                     = 0xae2,
1309     SCIM_KEY_opentribulletup                    = 0xae3,
1310     SCIM_KEY_opentribulletdown                  = 0xae4,
1311     SCIM_KEY_openstar                           = 0xae5,
1312     SCIM_KEY_enfilledcircbullet                 = 0xae6,
1313     SCIM_KEY_enfilledsqbullet                   = 0xae7,
1314     SCIM_KEY_filledtribulletup                  = 0xae8,
1315     SCIM_KEY_filledtribulletdown                = 0xae9,
1316     SCIM_KEY_leftpointer                        = 0xaea,
1317     SCIM_KEY_rightpointer                       = 0xaeb,
1318     SCIM_KEY_club                               = 0xaec,
1319     SCIM_KEY_diamond                            = 0xaed,
1320     SCIM_KEY_heart                              = 0xaee,
1321     SCIM_KEY_maltesecross                       = 0xaf0,
1322     SCIM_KEY_dagger                             = 0xaf1,
1323     SCIM_KEY_doubledagger                       = 0xaf2,
1324     SCIM_KEY_checkmark                          = 0xaf3,
1325     SCIM_KEY_ballotcross                        = 0xaf4,
1326     SCIM_KEY_musicalsharp                       = 0xaf5,
1327     SCIM_KEY_musicalflat                        = 0xaf6,
1328     SCIM_KEY_malesymbol                         = 0xaf7,
1329     SCIM_KEY_femalesymbol                       = 0xaf8,
1330     SCIM_KEY_telephone                          = 0xaf9,
1331     SCIM_KEY_telephonerecorder                  = 0xafa,
1332     SCIM_KEY_phonographcopyright                = 0xafb,
1333     SCIM_KEY_caret                              = 0xafc,
1334     SCIM_KEY_singlelowquotemark                 = 0xafd,
1335     SCIM_KEY_doublelowquotemark                 = 0xafe,
1336     SCIM_KEY_cursor                             = 0xaff,
1337 
1338     /*
1339      * APL
1340      * Byte 3 = b
1341      */
1342     SCIM_KEY_leftcaret                          = 0xba3,
1343     SCIM_KEY_rightcaret                         = 0xba6,
1344     SCIM_KEY_downcaret                          = 0xba8,
1345     SCIM_KEY_upcaret                            = 0xba9,
1346     SCIM_KEY_overbar                            = 0xbc0,
1347     SCIM_KEY_downtack                           = 0xbc2,
1348     SCIM_KEY_upshoe                             = 0xbc3,
1349     SCIM_KEY_downstile                          = 0xbc4,
1350     SCIM_KEY_underbar                           = 0xbc6,
1351     SCIM_KEY_jot                                = 0xbca,
1352     SCIM_KEY_quad                               = 0xbcc,
1353     SCIM_KEY_uptack                             = 0xbce,
1354     SCIM_KEY_circle                             = 0xbcf,
1355     SCIM_KEY_upstile                            = 0xbd3,
1356     SCIM_KEY_downshoe                           = 0xbd6,
1357     SCIM_KEY_rightshoe                          = 0xbd8,
1358     SCIM_KEY_leftshoe                           = 0xbda,
1359     SCIM_KEY_lefttack                           = 0xbdc,
1360     SCIM_KEY_righttack                          = 0xbfc,
1361 
1362     /*
1363      * Hebrew
1364      * Byte 3 = c
1365      */
1366     SCIM_KEY_hebrew_doublelowline               = 0xcdf,
1367     SCIM_KEY_hebrew_aleph                       = 0xce0,
1368     SCIM_KEY_hebrew_bet                         = 0xce1,
1369     SCIM_KEY_hebrew_beth                        = 0xce1,  /* deprecated */
1370     SCIM_KEY_hebrew_gimel                       = 0xce2,
1371     SCIM_KEY_hebrew_gimmel                      = 0xce2,  /* deprecated */
1372     SCIM_KEY_hebrew_dalet                       = 0xce3,
1373     SCIM_KEY_hebrew_daleth                      = 0xce3,  /* deprecated */
1374     SCIM_KEY_hebrew_he                          = 0xce4,
1375     SCIM_KEY_hebrew_waw                         = 0xce5,
1376     SCIM_KEY_hebrew_zain                        = 0xce6,
1377     SCIM_KEY_hebrew_zayin                       = 0xce6,  /* deprecated */
1378     SCIM_KEY_hebrew_chet                        = 0xce7,
1379     SCIM_KEY_hebrew_het                         = 0xce7,  /* deprecated */
1380     SCIM_KEY_hebrew_tet                         = 0xce8,
1381     SCIM_KEY_hebrew_teth                        = 0xce8,  /* deprecated */
1382     SCIM_KEY_hebrew_yod                         = 0xce9,
1383     SCIM_KEY_hebrew_finalkaph                   = 0xcea,
1384     SCIM_KEY_hebrew_kaph                        = 0xceb,
1385     SCIM_KEY_hebrew_lamed                       = 0xcec,
1386     SCIM_KEY_hebrew_finalmem                    = 0xced,
1387     SCIM_KEY_hebrew_mem                         = 0xcee,
1388     SCIM_KEY_hebrew_finalnun                    = 0xcef,
1389     SCIM_KEY_hebrew_nun                         = 0xcf0,
1390     SCIM_KEY_hebrew_samech                      = 0xcf1,
1391     SCIM_KEY_hebrew_samekh                      = 0xcf1,  /* deprecated */
1392     SCIM_KEY_hebrew_ayin                        = 0xcf2,
1393     SCIM_KEY_hebrew_finalpe                     = 0xcf3,
1394     SCIM_KEY_hebrew_pe                          = 0xcf4,
1395     SCIM_KEY_hebrew_finalzade                   = 0xcf5,
1396     SCIM_KEY_hebrew_finalzadi                   = 0xcf5,  /* deprecated */
1397     SCIM_KEY_hebrew_zade                        = 0xcf6,
1398     SCIM_KEY_hebrew_zadi                        = 0xcf6,  /* deprecated */
1399     SCIM_KEY_hebrew_qoph                        = 0xcf7,
1400     SCIM_KEY_hebrew_kuf                         = 0xcf7,  /* deprecated */
1401     SCIM_KEY_hebrew_resh                        = 0xcf8,
1402     SCIM_KEY_hebrew_shin                        = 0xcf9,
1403     SCIM_KEY_hebrew_taw                         = 0xcfa,
1404     SCIM_KEY_hebrew_taf                         = 0xcfa,  /* deprecated */
1405     SCIM_KEY_Hebrew_switch                      = 0xFF7E,  /* Alias for mode_switch */
1406 
1407     /*
1408      * Thai
1409      * Byte 3 = d
1410      */
1411     SCIM_KEY_Thai_kokai                         = 0xda1,
1412     SCIM_KEY_Thai_khokhai                       = 0xda2,
1413     SCIM_KEY_Thai_khokhuat                      = 0xda3,
1414     SCIM_KEY_Thai_khokhwai                      = 0xda4,
1415     SCIM_KEY_Thai_khokhon                       = 0xda5,
1416     SCIM_KEY_Thai_khorakhang                    = 0xda6,
1417     SCIM_KEY_Thai_ngongu                        = 0xda7,
1418     SCIM_KEY_Thai_chochan                       = 0xda8,
1419     SCIM_KEY_Thai_choching                      = 0xda9,
1420     SCIM_KEY_Thai_chochang                      = 0xdaa,
1421     SCIM_KEY_Thai_soso                          = 0xdab,
1422     SCIM_KEY_Thai_chochoe                       = 0xdac,
1423     SCIM_KEY_Thai_yoying                        = 0xdad,
1424     SCIM_KEY_Thai_dochada                       = 0xdae,
1425     SCIM_KEY_Thai_topatak                       = 0xdaf,
1426     SCIM_KEY_Thai_thothan                       = 0xdb0,
1427     SCIM_KEY_Thai_thonangmontho                 = 0xdb1,
1428     SCIM_KEY_Thai_thophuthao                    = 0xdb2,
1429     SCIM_KEY_Thai_nonen                         = 0xdb3,
1430     SCIM_KEY_Thai_dodek                         = 0xdb4,
1431     SCIM_KEY_Thai_totao                         = 0xdb5,
1432     SCIM_KEY_Thai_thothung                      = 0xdb6,
1433     SCIM_KEY_Thai_thothahan                     = 0xdb7,
1434     SCIM_KEY_Thai_thothong                      = 0xdb8,
1435     SCIM_KEY_Thai_nonu                          = 0xdb9,
1436     SCIM_KEY_Thai_bobaimai                      = 0xdba,
1437     SCIM_KEY_Thai_popla                         = 0xdbb,
1438     SCIM_KEY_Thai_phophung                      = 0xdbc,
1439     SCIM_KEY_Thai_fofa                          = 0xdbd,
1440     SCIM_KEY_Thai_phophan                       = 0xdbe,
1441     SCIM_KEY_Thai_fofan                         = 0xdbf,
1442     SCIM_KEY_Thai_phosamphao                    = 0xdc0,
1443     SCIM_KEY_Thai_moma                          = 0xdc1,
1444     SCIM_KEY_Thai_yoyak                         = 0xdc2,
1445     SCIM_KEY_Thai_rorua                         = 0xdc3,
1446     SCIM_KEY_Thai_ru                            = 0xdc4,
1447     SCIM_KEY_Thai_loling                        = 0xdc5,
1448     SCIM_KEY_Thai_lu                            = 0xdc6,
1449     SCIM_KEY_Thai_wowaen                        = 0xdc7,
1450     SCIM_KEY_Thai_sosala                        = 0xdc8,
1451     SCIM_KEY_Thai_sorusi                        = 0xdc9,
1452     SCIM_KEY_Thai_sosua                         = 0xdca,
1453     SCIM_KEY_Thai_hohip                         = 0xdcb,
1454     SCIM_KEY_Thai_lochula                       = 0xdcc,
1455     SCIM_KEY_Thai_oang                          = 0xdcd,
1456     SCIM_KEY_Thai_honokhuk                      = 0xdce,
1457     SCIM_KEY_Thai_paiyannoi                     = 0xdcf,
1458     SCIM_KEY_Thai_saraa                         = 0xdd0,
1459     SCIM_KEY_Thai_maihanakat                    = 0xdd1,
1460     SCIM_KEY_Thai_saraaa                        = 0xdd2,
1461     SCIM_KEY_Thai_saraam                        = 0xdd3,
1462     SCIM_KEY_Thai_sarai                         = 0xdd4,
1463     SCIM_KEY_Thai_saraii                        = 0xdd5,
1464     SCIM_KEY_Thai_saraue                        = 0xdd6,
1465     SCIM_KEY_Thai_sarauee                       = 0xdd7,
1466     SCIM_KEY_Thai_sarau                         = 0xdd8,
1467     SCIM_KEY_Thai_sarauu                        = 0xdd9,
1468     SCIM_KEY_Thai_phinthu                       = 0xdda,
1469     SCIM_KEY_Thai_maihanakat_maitho             = 0xdde,
1470     SCIM_KEY_Thai_baht                          = 0xddf,
1471     SCIM_KEY_Thai_sarae                         = 0xde0,
1472     SCIM_KEY_Thai_saraae                        = 0xde1,
1473     SCIM_KEY_Thai_sarao                         = 0xde2,
1474     SCIM_KEY_Thai_saraaimaimuan                 = 0xde3,
1475     SCIM_KEY_Thai_saraaimaimalai                = 0xde4,
1476     SCIM_KEY_Thai_lakkhangyao                   = 0xde5,
1477     SCIM_KEY_Thai_maiyamok                      = 0xde6,
1478     SCIM_KEY_Thai_maitaikhu                     = 0xde7,
1479     SCIM_KEY_Thai_maiek                         = 0xde8,
1480     SCIM_KEY_Thai_maitho                        = 0xde9,
1481     SCIM_KEY_Thai_maitri                        = 0xdea,
1482     SCIM_KEY_Thai_maichattawa                   = 0xdeb,
1483     SCIM_KEY_Thai_thanthakhat                   = 0xdec,
1484     SCIM_KEY_Thai_nikhahit                      = 0xded,
1485     SCIM_KEY_Thai_leksun                        = 0xdf0,
1486     SCIM_KEY_Thai_leknung                       = 0xdf1,
1487     SCIM_KEY_Thai_leksong                       = 0xdf2,
1488     SCIM_KEY_Thai_leksam                        = 0xdf3,
1489     SCIM_KEY_Thai_leksi                         = 0xdf4,
1490     SCIM_KEY_Thai_lekha                         = 0xdf5,
1491     SCIM_KEY_Thai_lekhok                        = 0xdf6,
1492     SCIM_KEY_Thai_lekchet                       = 0xdf7,
1493     SCIM_KEY_Thai_lekpaet                       = 0xdf8,
1494     SCIM_KEY_Thai_lekkao                        = 0xdf9,
1495 
1496     /*
1497      *   Korean
1498      *   Byte 3 = e
1499      */
1500     SCIM_KEY_Hangul                             = 0xff31,    /* Hangul start/stop(toggle) */
1501     SCIM_KEY_Hangul_Start                       = 0xff32,    /* Hangul start */
1502     SCIM_KEY_Hangul_End                         = 0xff33,    /* Hangul end, English start */
1503     SCIM_KEY_Hangul_Hanja                       = 0xff34,    /* Start Hangul->Hanja Conversion */
1504     SCIM_KEY_Hangul_Jamo                        = 0xff35,    /* Hangul Jamo mode */
1505     SCIM_KEY_Hangul_Romaja                      = 0xff36,    /* Hangul Romaja mode */
1506     SCIM_KEY_Hangul_Codeinput                   = 0xff37,    /* Hangul code input mode */
1507     SCIM_KEY_Hangul_Jeonja                      = 0xff38,    /* Jeonja mode */
1508     SCIM_KEY_Hangul_Banja                       = 0xff39,    /* Banja mode */
1509     SCIM_KEY_Hangul_PreHanja                    = 0xff3a,    /* Pre Hanja conversion */
1510     SCIM_KEY_Hangul_PostHanja                   = 0xff3b,    /* Post Hanja conversion */
1511     SCIM_KEY_Hangul_SingleCandidate             = 0xff3c,    /* Single candidate */
1512     SCIM_KEY_Hangul_MultipleCandidate           = 0xff3d,    /* Multiple candidate */
1513     SCIM_KEY_Hangul_PreviousCandidate           = 0xff3e,    /* Previous candidate */
1514     SCIM_KEY_Hangul_Special                     = 0xff3f,    /* Special symbols */
1515     SCIM_KEY_Hangul_switch                      = 0xFF7E,    /* Alias for mode_switch */
1516 
1517     /* Hangul Consonant Characters */
1518     SCIM_KEY_Hangul_Kiyeog                      = 0xea1,
1519     SCIM_KEY_Hangul_SsangKiyeog                 = 0xea2,
1520     SCIM_KEY_Hangul_KiyeogSios                  = 0xea3,
1521     SCIM_KEY_Hangul_Nieun                       = 0xea4,
1522     SCIM_KEY_Hangul_NieunJieuj                  = 0xea5,
1523     SCIM_KEY_Hangul_NieunHieuh                  = 0xea6,
1524     SCIM_KEY_Hangul_Dikeud                      = 0xea7,
1525     SCIM_KEY_Hangul_SsangDikeud                 = 0xea8,
1526     SCIM_KEY_Hangul_Rieul                       = 0xea9,
1527     SCIM_KEY_Hangul_RieulKiyeog                 = 0xeaa,
1528     SCIM_KEY_Hangul_RieulMieum                  = 0xeab,
1529     SCIM_KEY_Hangul_RieulPieub                  = 0xeac,
1530     SCIM_KEY_Hangul_RieulSios                   = 0xead,
1531     SCIM_KEY_Hangul_RieulTieut                  = 0xeae,
1532     SCIM_KEY_Hangul_RieulPhieuf                 = 0xeaf,
1533     SCIM_KEY_Hangul_RieulHieuh                  = 0xeb0,
1534     SCIM_KEY_Hangul_Mieum                       = 0xeb1,
1535     SCIM_KEY_Hangul_Pieub                       = 0xeb2,
1536     SCIM_KEY_Hangul_SsangPieub                  = 0xeb3,
1537     SCIM_KEY_Hangul_PieubSios                   = 0xeb4,
1538     SCIM_KEY_Hangul_Sios                        = 0xeb5,
1539     SCIM_KEY_Hangul_SsangSios                   = 0xeb6,
1540     SCIM_KEY_Hangul_Ieung                       = 0xeb7,
1541     SCIM_KEY_Hangul_Jieuj                       = 0xeb8,
1542     SCIM_KEY_Hangul_SsangJieuj                  = 0xeb9,
1543     SCIM_KEY_Hangul_Cieuc                       = 0xeba,
1544     SCIM_KEY_Hangul_Khieuq                      = 0xebb,
1545     SCIM_KEY_Hangul_Tieut                       = 0xebc,
1546     SCIM_KEY_Hangul_Phieuf                      = 0xebd,
1547     SCIM_KEY_Hangul_Hieuh                       = 0xebe,
1548 
1549     /* Hangul Vowel Characters */
1550     SCIM_KEY_Hangul_A                           = 0xebf,
1551     SCIM_KEY_Hangul_AE                          = 0xec0,
1552     SCIM_KEY_Hangul_YA                          = 0xec1,
1553     SCIM_KEY_Hangul_YAE                         = 0xec2,
1554     SCIM_KEY_Hangul_EO                          = 0xec3,
1555     SCIM_KEY_Hangul_E                           = 0xec4,
1556     SCIM_KEY_Hangul_YEO                         = 0xec5,
1557     SCIM_KEY_Hangul_YE                          = 0xec6,
1558     SCIM_KEY_Hangul_O                           = 0xec7,
1559     SCIM_KEY_Hangul_WA                          = 0xec8,
1560     SCIM_KEY_Hangul_WAE                         = 0xec9,
1561     SCIM_KEY_Hangul_OE                          = 0xeca,
1562     SCIM_KEY_Hangul_YO                          = 0xecb,
1563     SCIM_KEY_Hangul_U                           = 0xecc,
1564     SCIM_KEY_Hangul_WEO                         = 0xecd,
1565     SCIM_KEY_Hangul_WE                          = 0xece,
1566     SCIM_KEY_Hangul_WI                          = 0xecf,
1567     SCIM_KEY_Hangul_YU                          = 0xed0,
1568     SCIM_KEY_Hangul_EU                          = 0xed1,
1569     SCIM_KEY_Hangul_YI                          = 0xed2,
1570     SCIM_KEY_Hangul_I                           = 0xed3,
1571 
1572     /* Hangul syllable-final (JongSeong) Characters */
1573     SCIM_KEY_Hangul_J_Kiyeog                    = 0xed4,
1574     SCIM_KEY_Hangul_J_SsangKiyeog               = 0xed5,
1575     SCIM_KEY_Hangul_J_KiyeogSios                = 0xed6,
1576     SCIM_KEY_Hangul_J_Nieun                     = 0xed7,
1577     SCIM_KEY_Hangul_J_NieunJieuj                = 0xed8,
1578     SCIM_KEY_Hangul_J_NieunHieuh                = 0xed9,
1579     SCIM_KEY_Hangul_J_Dikeud                    = 0xeda,
1580     SCIM_KEY_Hangul_J_Rieul                     = 0xedb,
1581     SCIM_KEY_Hangul_J_RieulKiyeog               = 0xedc,
1582     SCIM_KEY_Hangul_J_RieulMieum                = 0xedd,
1583     SCIM_KEY_Hangul_J_RieulPieub                = 0xede,
1584     SCIM_KEY_Hangul_J_RieulSios                 = 0xedf,
1585     SCIM_KEY_Hangul_J_RieulTieut                = 0xee0,
1586     SCIM_KEY_Hangul_J_RieulPhieuf               = 0xee1,
1587     SCIM_KEY_Hangul_J_RieulHieuh                = 0xee2,
1588     SCIM_KEY_Hangul_J_Mieum                     = 0xee3,
1589     SCIM_KEY_Hangul_J_Pieub                     = 0xee4,
1590     SCIM_KEY_Hangul_J_PieubSios                 = 0xee5,
1591     SCIM_KEY_Hangul_J_Sios                      = 0xee6,
1592     SCIM_KEY_Hangul_J_SsangSios                 = 0xee7,
1593     SCIM_KEY_Hangul_J_Ieung                     = 0xee8,
1594     SCIM_KEY_Hangul_J_Jieuj                     = 0xee9,
1595     SCIM_KEY_Hangul_J_Cieuc                     = 0xeea,
1596     SCIM_KEY_Hangul_J_Khieuq                    = 0xeeb,
1597     SCIM_KEY_Hangul_J_Tieut                     = 0xeec,
1598     SCIM_KEY_Hangul_J_Phieuf                    = 0xeed,
1599     SCIM_KEY_Hangul_J_Hieuh                     = 0xeee,
1600 
1601     /* Ancient Hangul Consonant Characters */
1602     SCIM_KEY_Hangul_RieulYeorinHieuh            = 0xeef,
1603     SCIM_KEY_Hangul_SunkyeongeumMieum           = 0xef0,
1604     SCIM_KEY_Hangul_SunkyeongeumPieub           = 0xef1,
1605     SCIM_KEY_Hangul_PanSios                     = 0xef2,
1606     SCIM_KEY_Hangul_KkogjiDalrinIeung           = 0xef3,
1607     SCIM_KEY_Hangul_SunkyeongeumPhieuf          = 0xef4,
1608     SCIM_KEY_Hangul_YeorinHieuh                 = 0xef5,
1609 
1610     /* Ancient Hangul Vowel Characters */
1611     SCIM_KEY_Hangul_AraeA                       = 0xef6,
1612     SCIM_KEY_Hangul_AraeAE                      = 0xef7,
1613 
1614     /* Ancient Hangul syllable-final (JongSeong) Characters */
1615     SCIM_KEY_Hangul_J_PanSios                   = 0xef8,
1616     SCIM_KEY_Hangul_J_KkogjiDalrinIeung         = 0xef9,
1617     SCIM_KEY_Hangul_J_YeorinHieuh               = 0xefa,
1618 
1619     /* Korean currency symbol */
1620     SCIM_KEY_Korean_Won                         = 0xeff,
1621 
1622 
1623     /*
1624      *   Armenian
1625      *   Byte 3 = 0x14
1626      */
1627     SCIM_KEY_Armenian_eternity                  = 0x14a1,
1628     SCIM_KEY_Armenian_ligature_ew               = 0x14a2,
1629     SCIM_KEY_Armenian_full_stop                 = 0x14a3,
1630     SCIM_KEY_Armenian_verjaket                  = 0x14a3,
1631     SCIM_KEY_Armenian_parenright                = 0x14a4,
1632     SCIM_KEY_Armenian_parenleft                 = 0x14a5,
1633     SCIM_KEY_Armenian_guillemotright            = 0x14a6,
1634     SCIM_KEY_Armenian_guillemotleft             = 0x14a7,
1635     SCIM_KEY_Armenian_em_dash                   = 0x14a8,
1636     SCIM_KEY_Armenian_dot                       = 0x14a9,
1637     SCIM_KEY_Armenian_mijaket                   = 0x14a9,
1638     SCIM_KEY_Armenian_separation_mark           = 0x14aa,
1639     SCIM_KEY_Armenian_but                       = 0x14aa,
1640     SCIM_KEY_Armenian_comma                     = 0x14ab,
1641     SCIM_KEY_Armenian_en_dash                   = 0x14ac,
1642     SCIM_KEY_Armenian_hyphen                    = 0x14ad,
1643     SCIM_KEY_Armenian_yentamna                  = 0x14ad,
1644     SCIM_KEY_Armenian_ellipsis                  = 0x14ae,
1645     SCIM_KEY_Armenian_exclam                    = 0x14af,
1646     SCIM_KEY_Armenian_amanak                    = 0x14af,
1647     SCIM_KEY_Armenian_accent                    = 0x14b0,
1648     SCIM_KEY_Armenian_shesht                    = 0x14b0,
1649     SCIM_KEY_Armenian_question                  = 0x14b1,
1650     SCIM_KEY_Armenian_paruyk                    = 0x14b1,
1651     SCIM_KEY_Armenian_AYB                       = 0x14b2,
1652     SCIM_KEY_Armenian_ayb                       = 0x14b3,
1653     SCIM_KEY_Armenian_BEN                       = 0x14b4,
1654     SCIM_KEY_Armenian_ben                       = 0x14b5,
1655     SCIM_KEY_Armenian_GIM                       = 0x14b6,
1656     SCIM_KEY_Armenian_gim                       = 0x14b7,
1657     SCIM_KEY_Armenian_DA                        = 0x14b8,
1658     SCIM_KEY_Armenian_da                        = 0x14b9,
1659     SCIM_KEY_Armenian_YECH                      = 0x14ba,
1660     SCIM_KEY_Armenian_yech                      = 0x14bb,
1661     SCIM_KEY_Armenian_ZA                        = 0x14bc,
1662     SCIM_KEY_Armenian_za                        = 0x14bd,
1663     SCIM_KEY_Armenian_E                         = 0x14be,
1664     SCIM_KEY_Armenian_e                         = 0x14bf,
1665     SCIM_KEY_Armenian_AT                        = 0x14c0,
1666     SCIM_KEY_Armenian_at                        = 0x14c1,
1667     SCIM_KEY_Armenian_TO                        = 0x14c2,
1668     SCIM_KEY_Armenian_to                        = 0x14c3,
1669     SCIM_KEY_Armenian_ZHE                       = 0x14c4,
1670     SCIM_KEY_Armenian_zhe                       = 0x14c5,
1671     SCIM_KEY_Armenian_INI                       = 0x14c6,
1672     SCIM_KEY_Armenian_ini                       = 0x14c7,
1673     SCIM_KEY_Armenian_LYUN                      = 0x14c8,
1674     SCIM_KEY_Armenian_lyun                      = 0x14c9,
1675     SCIM_KEY_Armenian_KHE                       = 0x14ca,
1676     SCIM_KEY_Armenian_khe                       = 0x14cb,
1677     SCIM_KEY_Armenian_TSA                       = 0x14cc,
1678     SCIM_KEY_Armenian_tsa                       = 0x14cd,
1679     SCIM_KEY_Armenian_KEN                       = 0x14ce,
1680     SCIM_KEY_Armenian_ken                       = 0x14cf,
1681     SCIM_KEY_Armenian_HO                        = 0x14d0,
1682     SCIM_KEY_Armenian_ho                        = 0x14d1,
1683     SCIM_KEY_Armenian_DZA                       = 0x14d2,
1684     SCIM_KEY_Armenian_dza                       = 0x14d3,
1685     SCIM_KEY_Armenian_GHAT                      = 0x14d4,
1686     SCIM_KEY_Armenian_ghat                      = 0x14d5,
1687     SCIM_KEY_Armenian_TCHE                      = 0x14d6,
1688     SCIM_KEY_Armenian_tche                      = 0x14d7,
1689     SCIM_KEY_Armenian_MEN                       = 0x14d8,
1690     SCIM_KEY_Armenian_men                       = 0x14d9,
1691     SCIM_KEY_Armenian_HI                        = 0x14da,
1692     SCIM_KEY_Armenian_hi                        = 0x14db,
1693     SCIM_KEY_Armenian_NU                        = 0x14dc,
1694     SCIM_KEY_Armenian_nu                        = 0x14dd,
1695     SCIM_KEY_Armenian_SHA                       = 0x14de,
1696     SCIM_KEY_Armenian_sha                       = 0x14df,
1697     SCIM_KEY_Armenian_VO                        = 0x14e0,
1698     SCIM_KEY_Armenian_vo                        = 0x14e1,
1699     SCIM_KEY_Armenian_CHA                       = 0x14e2,
1700     SCIM_KEY_Armenian_cha                       = 0x14e3,
1701     SCIM_KEY_Armenian_PE                        = 0x14e4,
1702     SCIM_KEY_Armenian_pe                        = 0x14e5,
1703     SCIM_KEY_Armenian_JE                        = 0x14e6,
1704     SCIM_KEY_Armenian_je                        = 0x14e7,
1705     SCIM_KEY_Armenian_RA                        = 0x14e8,
1706     SCIM_KEY_Armenian_ra                        = 0x14e9,
1707     SCIM_KEY_Armenian_SE                        = 0x14ea,
1708     SCIM_KEY_Armenian_se                        = 0x14eb,
1709     SCIM_KEY_Armenian_VEV                       = 0x14ec,
1710     SCIM_KEY_Armenian_vev                       = 0x14ed,
1711     SCIM_KEY_Armenian_TYUN                      = 0x14ee,
1712     SCIM_KEY_Armenian_tyun                      = 0x14ef,
1713     SCIM_KEY_Armenian_RE                        = 0x14f0,
1714     SCIM_KEY_Armenian_re                        = 0x14f1,
1715     SCIM_KEY_Armenian_TSO                       = 0x14f2,
1716     SCIM_KEY_Armenian_tso                       = 0x14f3,
1717     SCIM_KEY_Armenian_VYUN                      = 0x14f4,
1718     SCIM_KEY_Armenian_vyun                      = 0x14f5,
1719     SCIM_KEY_Armenian_PYUR                      = 0x14f6,
1720     SCIM_KEY_Armenian_pyur                      = 0x14f7,
1721     SCIM_KEY_Armenian_KE                        = 0x14f8,
1722     SCIM_KEY_Armenian_ke                        = 0x14f9,
1723     SCIM_KEY_Armenian_O                         = 0x14fa,
1724     SCIM_KEY_Armenian_o                         = 0x14fb,
1725     SCIM_KEY_Armenian_FE                        = 0x14fc,
1726     SCIM_KEY_Armenian_fe                        = 0x14fd,
1727     SCIM_KEY_Armenian_apostrophe                = 0x14fe,
1728     SCIM_KEY_Armenian_section_sign              = 0x14ff,
1729 
1730     /*
1731      * Georgian
1732      * Byte 3 = 0x15
1733      */
1734 
1735     SCIM_KEY_Georgian_an                        = 0x15d0,
1736     SCIM_KEY_Georgian_ban                       = 0x15d1,
1737     SCIM_KEY_Georgian_gan                       = 0x15d2,
1738     SCIM_KEY_Georgian_don                       = 0x15d3,
1739     SCIM_KEY_Georgian_en                        = 0x15d4,
1740     SCIM_KEY_Georgian_vin                       = 0x15d5,
1741     SCIM_KEY_Georgian_zen                       = 0x15d6,
1742     SCIM_KEY_Georgian_tan                       = 0x15d7,
1743     SCIM_KEY_Georgian_in                        = 0x15d8,
1744     SCIM_KEY_Georgian_kan                       = 0x15d9,
1745     SCIM_KEY_Georgian_las                       = 0x15da,
1746     SCIM_KEY_Georgian_man                       = 0x15db,
1747     SCIM_KEY_Georgian_nar                       = 0x15dc,
1748     SCIM_KEY_Georgian_on                        = 0x15dd,
1749     SCIM_KEY_Georgian_par                       = 0x15de,
1750     SCIM_KEY_Georgian_zhar                      = 0x15df,
1751     SCIM_KEY_Georgian_rae                       = 0x15e0,
1752     SCIM_KEY_Georgian_san                       = 0x15e1,
1753     SCIM_KEY_Georgian_tar                       = 0x15e2,
1754     SCIM_KEY_Georgian_un                        = 0x15e3,
1755     SCIM_KEY_Georgian_phar                      = 0x15e4,
1756     SCIM_KEY_Georgian_khar                      = 0x15e5,
1757     SCIM_KEY_Georgian_ghan                      = 0x15e6,
1758     SCIM_KEY_Georgian_qar                       = 0x15e7,
1759     SCIM_KEY_Georgian_shin                      = 0x15e8,
1760     SCIM_KEY_Georgian_chin                      = 0x15e9,
1761     SCIM_KEY_Georgian_can                       = 0x15ea,
1762     SCIM_KEY_Georgian_jil                       = 0x15eb,
1763     SCIM_KEY_Georgian_cil                       = 0x15ec,
1764     SCIM_KEY_Georgian_char                      = 0x15ed,
1765     SCIM_KEY_Georgian_xan                       = 0x15ee,
1766     SCIM_KEY_Georgian_jhan                      = 0x15ef,
1767     SCIM_KEY_Georgian_hae                       = 0x15f0,
1768     SCIM_KEY_Georgian_he                        = 0x15f1,
1769     SCIM_KEY_Georgian_hie                       = 0x15f2,
1770     SCIM_KEY_Georgian_we                        = 0x15f3,
1771     SCIM_KEY_Georgian_har                       = 0x15f4,
1772     SCIM_KEY_Georgian_hoe                       = 0x15f5,
1773     SCIM_KEY_Georgian_fi                        = 0x15f6,
1774 
1775     /*
1776      * Azeri (and other Turkic or Caucasian languages of ex-USSR)
1777      * Byte 3 = 0x16
1778      */
1779 
1780     /* latin */
1781     SCIM_KEY_Ccedillaabovedot                   = 0x16a2,
1782     SCIM_KEY_Xabovedot                          = 0x16a3,
1783     SCIM_KEY_Qabovedot                          = 0x16a5,
1784     SCIM_KEY_Ibreve                             = 0x16a6,
1785     SCIM_KEY_IE                                 = 0x16a7,
1786     SCIM_KEY_UO                                 = 0x16a8,
1787     SCIM_KEY_Zstroke                            = 0x16a9,
1788     SCIM_KEY_Gcaron                             = 0x16aa,
1789     SCIM_KEY_Obarred                            = 0x16af,
1790     SCIM_KEY_ccedillaabovedot                   = 0x16b2,
1791     SCIM_KEY_xabovedot                          = 0x16b3,
1792     SCIM_KEY_Ocaron                             = 0x16b4,
1793     SCIM_KEY_qabovedot                          = 0x16b5,
1794     SCIM_KEY_ibreve                             = 0x16b6,
1795     SCIM_KEY_ie                                 = 0x16b7,
1796     SCIM_KEY_uo                                 = 0x16b8,
1797     SCIM_KEY_zstroke                            = 0x16b9,
1798     SCIM_KEY_gcaron                             = 0x16ba,
1799     SCIM_KEY_ocaron                             = 0x16bd,
1800     SCIM_KEY_obarred                            = 0x16bf,
1801     SCIM_KEY_SCHWA                              = 0x16c6,
1802     SCIM_KEY_schwa                              = 0x16f6,
1803     /* those are not really Caucasus, but I put them here for now */
1804     /* For Inupiak */
1805     SCIM_KEY_Lbelowdot                          = 0x16d1,
1806     SCIM_KEY_Lstrokebelowdot                    = 0x16d2,
1807     SCIM_KEY_lbelowdot                          = 0x16e1,
1808     SCIM_KEY_lstrokebelowdot                    = 0x16e2,
1809     /* For Guarani */
1810     SCIM_KEY_Gtilde                             = 0x16d3,
1811     SCIM_KEY_gtilde                             = 0x16e3,
1812 
1813     /*
1814      * Vietnamese
1815      * Byte 3 = 0x1e
1816      */
1817 
1818     SCIM_KEY_Abelowdot                          = 0x1ea0,
1819     SCIM_KEY_abelowdot                          = 0x1ea1,
1820     SCIM_KEY_Ahook                              = 0x1ea2,
1821     SCIM_KEY_ahook                              = 0x1ea3,
1822     SCIM_KEY_Acircumflexacute                   = 0x1ea4,
1823     SCIM_KEY_acircumflexacute                   = 0x1ea5,
1824     SCIM_KEY_Acircumflexgrave                   = 0x1ea6,
1825     SCIM_KEY_acircumflexgrave                   = 0x1ea7,
1826     SCIM_KEY_Acircumflexhook                    = 0x1ea8,
1827     SCIM_KEY_acircumflexhook                    = 0x1ea9,
1828     SCIM_KEY_Acircumflextilde                   = 0x1eaa,
1829     SCIM_KEY_acircumflextilde                   = 0x1eab,
1830     SCIM_KEY_Acircumflexbelowdot                = 0x1eac,
1831     SCIM_KEY_acircumflexbelowdot                = 0x1ead,
1832     SCIM_KEY_Abreveacute                        = 0x1eae,
1833     SCIM_KEY_abreveacute                        = 0x1eaf,
1834     SCIM_KEY_Abrevegrave                        = 0x1eb0,
1835     SCIM_KEY_abrevegrave                        = 0x1eb1,
1836     SCIM_KEY_Abrevehook                         = 0x1eb2,
1837     SCIM_KEY_abrevehook                         = 0x1eb3,
1838     SCIM_KEY_Abrevetilde                        = 0x1eb4,
1839     SCIM_KEY_abrevetilde                        = 0x1eb5,
1840     SCIM_KEY_Abrevebelowdot                     = 0x1eb6,
1841     SCIM_KEY_abrevebelowdot                     = 0x1eb7,
1842     SCIM_KEY_Ebelowdot                          = 0x1eb8,
1843     SCIM_KEY_ebelowdot                          = 0x1eb9,
1844     SCIM_KEY_Ehook                              = 0x1eba,
1845     SCIM_KEY_ehook                              = 0x1ebb,
1846     SCIM_KEY_Etilde                             = 0x1ebc,
1847     SCIM_KEY_etilde                             = 0x1ebd,
1848     SCIM_KEY_Ecircumflexacute                   = 0x1ebe,
1849     SCIM_KEY_ecircumflexacute                   = 0x1ebf,
1850     SCIM_KEY_Ecircumflexgrave                   = 0x1ec0,
1851     SCIM_KEY_ecircumflexgrave                   = 0x1ec1,
1852     SCIM_KEY_Ecircumflexhook                    = 0x1ec2,
1853     SCIM_KEY_ecircumflexhook                    = 0x1ec3,
1854     SCIM_KEY_Ecircumflextilde                   = 0x1ec4,
1855     SCIM_KEY_ecircumflextilde                   = 0x1ec5,
1856     SCIM_KEY_Ecircumflexbelowdot                = 0x1ec6,
1857     SCIM_KEY_ecircumflexbelowdot                = 0x1ec7,
1858     SCIM_KEY_Ihook                              = 0x1ec8,
1859     SCIM_KEY_ihook                              = 0x1ec9,
1860     SCIM_KEY_Ibelowdot                          = 0x1eca,
1861     SCIM_KEY_ibelowdot                          = 0x1ecb,
1862     SCIM_KEY_Obelowdot                          = 0x1ecc,
1863     SCIM_KEY_obelowdot                          = 0x1ecd,
1864     SCIM_KEY_Ohook                              = 0x1ece,
1865     SCIM_KEY_ohook                              = 0x1ecf,
1866     SCIM_KEY_Ocircumflexacute                   = 0x1ed0,
1867     SCIM_KEY_ocircumflexacute                   = 0x1ed1,
1868     SCIM_KEY_Ocircumflexgrave                   = 0x1ed2,
1869     SCIM_KEY_ocircumflexgrave                   = 0x1ed3,
1870     SCIM_KEY_Ocircumflexhook                    = 0x1ed4,
1871     SCIM_KEY_ocircumflexhook                    = 0x1ed5,
1872     SCIM_KEY_Ocircumflextilde                   = 0x1ed6,
1873     SCIM_KEY_ocircumflextilde                   = 0x1ed7,
1874     SCIM_KEY_Ocircumflexbelowdot                = 0x1ed8,
1875     SCIM_KEY_ocircumflexbelowdot                = 0x1ed9,
1876     SCIM_KEY_Ohornacute                         = 0x1eda,
1877     SCIM_KEY_ohornacute                         = 0x1edb,
1878     SCIM_KEY_Ohorngrave                         = 0x1edc,
1879     SCIM_KEY_ohorngrave                         = 0x1edd,
1880     SCIM_KEY_Ohornhook                          = 0x1ede,
1881     SCIM_KEY_ohornhook                          = 0x1edf,
1882     SCIM_KEY_Ohorntilde                         = 0x1ee0,
1883     SCIM_KEY_ohorntilde                         = 0x1ee1,
1884     SCIM_KEY_Ohornbelowdot                      = 0x1ee2,
1885     SCIM_KEY_ohornbelowdot                      = 0x1ee3,
1886     SCIM_KEY_Ubelowdot                          = 0x1ee4,
1887     SCIM_KEY_ubelowdot                          = 0x1ee5,
1888     SCIM_KEY_Uhook                              = 0x1ee6,
1889     SCIM_KEY_uhook                              = 0x1ee7,
1890     SCIM_KEY_Uhornacute                         = 0x1ee8,
1891     SCIM_KEY_uhornacute                         = 0x1ee9,
1892     SCIM_KEY_Uhorngrave                         = 0x1eea,
1893     SCIM_KEY_uhorngrave                         = 0x1eeb,
1894     SCIM_KEY_Uhornhook                          = 0x1eec,
1895     SCIM_KEY_uhornhook                          = 0x1eed,
1896     SCIM_KEY_Uhorntilde                         = 0x1eee,
1897     SCIM_KEY_uhorntilde                         = 0x1eef,
1898     SCIM_KEY_Uhornbelowdot                      = 0x1ef0,
1899     SCIM_KEY_uhornbelowdot                      = 0x1ef1,
1900     SCIM_KEY_Ybelowdot                          = 0x1ef4,
1901     SCIM_KEY_ybelowdot                          = 0x1ef5,
1902     SCIM_KEY_Yhook                              = 0x1ef6,
1903     SCIM_KEY_yhook                              = 0x1ef7,
1904     SCIM_KEY_Ytilde                             = 0x1ef8,
1905     SCIM_KEY_ytilde                             = 0x1ef9,
1906     SCIM_KEY_Ohorn                              = 0x1efa, /* U+01a0 */
1907     SCIM_KEY_ohorn                              = 0x1efb, /* U+01a1 */
1908     SCIM_KEY_Uhorn                              = 0x1efc, /* U+01af */
1909     SCIM_KEY_uhorn                              = 0x1efd, /* U+01b0 */
1910 
1911     SCIM_KEY_combining_tilde                    = 0x1e9f, /* U+0303 */
1912     SCIM_KEY_combining_grave                    = 0x1ef2, /* U+0300 */
1913     SCIM_KEY_combining_acute                    = 0x1ef3, /* U+0301 */
1914     SCIM_KEY_combining_hook                     = 0x1efe, /* U+0309 */
1915     SCIM_KEY_combining_belowdot                 = 0x1eff, /* U+0323 */
1916 
1917     SCIM_KEY_EcuSign                            = 0x20a0,
1918     SCIM_KEY_ColonSign                          = 0x20a1,
1919     SCIM_KEY_CruzeiroSign                       = 0x20a2,
1920     SCIM_KEY_FFrancSign                         = 0x20a3,
1921     SCIM_KEY_LiraSign                           = 0x20a4,
1922     SCIM_KEY_MillSign                           = 0x20a5,
1923     SCIM_KEY_NairaSign                          = 0x20a6,
1924     SCIM_KEY_PesetaSign                         = 0x20a7,
1925     SCIM_KEY_RupeeSign                          = 0x20a8,
1926     SCIM_KEY_WonSign                            = 0x20a9,
1927     SCIM_KEY_NewSheqelSign                      = 0x20aa,
1928     SCIM_KEY_DongSign                           = 0x20ab,
1929     SCIM_KEY_EuroSign                           = 0x20ac
1930 };
1931 
1932 /**
1933  * @brief Enum values of all valid Keyboard Layout type.
1934  *
1935  * This types are used by the Keyboard Layout mapping
1936  * function of KeyEvent class to map a KeyEvent of a
1937  * certain Keyboard Layout to another.
1938  *
1939  * But this function only covers the key range of
1940  * default US PC keyboard. All additional keys
1941  * in other layouts will never be mapped.
1942  *
1943  * The default layout is standard US PC keyboard.
1944  *
1945  * If the layout of a KeyEvent is Unknown, then it'll never
1946  * be mapped.
1947  */
1948 enum KeyboardLayout
1949 {
1950     SCIM_KEYBOARD_Unknown                       = 0,
1951     SCIM_KEYBOARD_Default                       = 1,
1952     SCIM_KEYBOARD_US                            = 1,
1953     SCIM_KEYBOARD_Belgian                       = 2,
1954     SCIM_KEYBOARD_Croatian                      = 3,
1955     SCIM_KEYBOARD_Czech                         = 4,
1956     SCIM_KEYBOARD_Czech_Qwerty                  = 5,
1957     SCIM_KEYBOARD_Danish                        = 6,
1958     SCIM_KEYBOARD_Dutch                         = 7,
1959     SCIM_KEYBOARD_Dvorak                        = 8,
1960     SCIM_KEYBOARD_Estonian                      = 9,
1961     SCIM_KEYBOARD_Finnish                       = 10,
1962     SCIM_KEYBOARD_French                        = 11,
1963     SCIM_KEYBOARD_French_Canadian               = 12,
1964     SCIM_KEYBOARD_French_Switzerland            = 13,
1965     SCIM_KEYBOARD_German                        = 14,
1966     SCIM_KEYBOARD_German_Deadkeys               = 15,
1967     SCIM_KEYBOARD_German_Swiss                  = 16,
1968     SCIM_KEYBOARD_Greek                         = 17,
1969     SCIM_KEYBOARD_Hungarian                     = 18,
1970     SCIM_KEYBOARD_Italian                       = 19,
1971     SCIM_KEYBOARD_Japanese                      = 20,
1972     SCIM_KEYBOARD_Norwegian                     = 21,
1973     SCIM_KEYBOARD_Polish                        = 22,
1974     SCIM_KEYBOARD_Portuguese                    = 23,
1975     SCIM_KEYBOARD_Portuguese_Brazil             = 24,
1976     SCIM_KEYBOARD_Portuguese_Brazil_US_Accents  = 25,
1977     SCIM_KEYBOARD_Russian                       = 26,
1978     SCIM_KEYBOARD_Slovak                        = 27,
1979     SCIM_KEYBOARD_Slovak_Qwerty                 = 28,
1980     SCIM_KEYBOARD_Slovene                       = 29,
1981     SCIM_KEYBOARD_Spanish                       = 30,
1982     SCIM_KEYBOARD_Spanish_CP850                 = 31,
1983     SCIM_KEYBOARD_Spanish_Latin_America         = 32,
1984     SCIM_KEYBOARD_Swedish                       = 33,
1985     SCIM_KEYBOARD_Turkish                       = 34,
1986     SCIM_KEYBOARD_UK                            = 35,
1987     SCIM_KEYBOARD_Icelandic                     = 36,
1988     SCIM_KEYBOARD_Lithuanian                    = 37,
1989     SCIM_KEYBOARD_Ukrainian                     = 38,
1990     SCIM_KEYBOARD_NUM_LAYOUTS                   = 39
1991 };
1992 
1993 struct KeyEvent;
1994 
1995 /**
1996  * @typedef typedef std::vector<KeyEvent> KeyEventList
1997  * @brief The container to store a set of KeyEvent objects.
1998  *
1999  * You should use the STL container methods to manipulate its objects.
2000  */
2001 typedef std::vector<KeyEvent> KeyEventList;
2002 
2003 /**
2004  * @brief Convert a key event to a string.
2005  * @param str - the result string will be stored here.
2006  * @param key - the KeyEvent to be converted.
2007  * @return true if success.
2008  */
2009 bool scim_key_to_string (String &str, const KeyEvent & key);
2010 
2011 /**
2012  * @brief Convert a string to a KeyEvent.
2013  * @param key - the result KeyEvent will be stored here.
2014  * @param str - the string to be converted.
2015  * @return true if success.
2016  */
2017 bool scim_string_to_key (KeyEvent &key, const String & str);
2018 
2019 /**
2020  * @brief Convert a set of KeyEvents to a string.
2021  * @param str - the result string will be stored here.
2022  * @param keylist - the keys to be converted.
2023  * @return true if success.
2024  */
2025 bool scim_key_list_to_string (String &str, const KeyEventList & keylist);
2026 
2027 /**
2028  * @brief Covnert a string to a set of KeyEvents.
2029  * @param keylist - the result KeyEvents will be stored here.
2030  * @param str - the string to be converted.
2031  * @return true if success.
2032  */
2033 bool scim_string_to_key_list (KeyEventList &keylist, const String &str);
2034 
2035 /**
2036  * @brief Convert a Keyboard Layout enum value to its String name.
2037  * @param layout The Keyboard Layout type.
2038  * @return The name of this layout.
2039  */
2040 String scim_keyboard_layout_to_string (KeyboardLayout layout);
2041 
2042 /**
2043  * @brief Convert a String name to the corresponding Keyboard Layout value.
2044  * @param str The Keyboard Layout name.
2045  * @return The Keyboard Layout type corresponding to this name, or SCIM_KEYBOARD_Unknown.
2046  */
2047 KeyboardLayout scim_string_to_keyboard_layout (const String &str);
2048 
2049 /**
2050  * @brief Get the display name of a Keyboard Layout enum value.
2051  * @param layout The Keyboard Layout type.
2052  * @return The localized display name of this layout.
2053  */
2054 String scim_keyboard_layout_get_display_name (KeyboardLayout layout);
2055 
2056 /**
2057  * @brief Get default Keyboard Layout setting.
2058  *
2059  * This function return the Keyboard Layout setting stored
2060  * in global config repository as /DefaultKeyboardLayout key.
2061  *
2062  * This function is mainly used by FrontEnds and Setup tools.
2063  * IMEngines should not use it.
2064  */
2065 KeyboardLayout scim_get_default_keyboard_layout ();
2066 
2067 /**
2068  * @brief Change the default Keyboard Layout setting.
2069  *
2070  * The default layout setting will be stored in global config
2071  * repository as /DefaultKeyboardLayout key.
2072  *
2073  * This function is mainly used by FrontEnds and Setup tools.
2074  * IMEngines should not use it.
2075  */
2076 void scim_set_default_keyboard_layout (KeyboardLayout layout);
2077 
2078 /**
2079  * @brief The class to store a keyboard event.
2080  *
2081  * A keyboard event contains a key code and a set of key masks.
2082  * The key masks indicate which modifier keys are pressed down and
2083  * if it's a key release event.
2084  *
2085  * It also contains the Keyboard Layout information. IMEngines can
2086  * map a KeyEvent to another layout by calling method #map_to_layout().
2087  */
2088 struct KeyEvent
2089 {
2090     uint32 code;    /**< key code */
2091     uint16 mask;    /**< modifier keys' mask */
2092     uint16 layout;  /**< keyboard layout identifier */
2093 
2094     /**
2095      * @brief Default constructor.
2096      * @param c - the key code.
2097      * @param m - the key masks.
2098      * @param l - the keyboard layout
2099      */
2100     KeyEvent (uint32 c = 0, uint16 m = 0, uint16 l = 0)
codeKeyEvent2101         : code (c), mask (m), layout (l) { }
2102 
2103     /**
2104      * @brief Constructor, construct a key event from a string.
2105      *
2106      * @param str the key string, eg. "Control+space"
2107      */
KeyEventKeyEvent2108     KeyEvent (const String &str)
2109         : code (0), mask (0), layout (0) { scim_string_to_key (*this, str); }
2110 
2111     /**
2112      * @brief Check if this KeyEvent is empty.
2113      * @return true if this is a empty event.
2114      */
emptyKeyEvent2115     bool empty () const { return mask == 0 && code == 0; }
2116 
2117     /**
2118      * @brief Get the ascii code of this key event.
2119      *
2120      * Not all key events have ascii codes.
2121      *
2122      * @return the ascii code of this key event.
2123      *         Zero means no ascii code.
2124      */
2125     char get_ascii_code () const;
2126 
2127     /**
2128      * @brief Get the Unicode code of this key event.
2129      *
2130      * Not all key events have unicode codes.
2131      *
2132      * @return The Unicode code of this key event.
2133      *         Zero means no unicode code.
2134      */
2135     ucs4_t get_unicode_code () const;
2136 
2137     /**
2138      * @brief Get the string of this key event.
2139      *
2140      * Not all key events can be converted to string.
2141      *
2142      * @return The string of this key event.
2143      */
2144     String get_key_string () const;
2145 
2146     /**
2147      * @brief Map this KeyEvent to another Keyboard Layout.
2148      *
2149      * This function only covers the key range of
2150      * default US PC keyboard. All additional keys
2151      * in other layouts will never be mapped.
2152      *
2153      * If the current layout is Unknown or the new_layout is
2154      * invalid or it's an Unicode embedded KeyEvent,
2155      * then it'll not be mapped and the identical KeyEvent
2156      * will be returned.
2157      *
2158      * If you want to check if the mapping is successful,
2159      * just compare the layout of returned KeyEvent and new_layout
2160      * to see if they are equal.
2161      *
2162      * @param new_layout The Keyboard Layout to be mapped to.
2163      *
2164      * @return The new KeyEvent according to the given layout.
2165      */
2166     KeyEvent map_to_layout (KeyboardLayout new_layout) const;
2167 
2168     /**
2169      * @brief Check if the Shift key is pressed down.
2170      */
is_shift_downKeyEvent2171     bool is_shift_down () const { return (mask & SCIM_KEY_ShiftMask) != 0; }
2172 
2173     /**
2174      * @brief Check if the CapsLock key is pressed down.
2175      */
is_caps_lock_downKeyEvent2176     bool is_caps_lock_down () const { return (mask & SCIM_KEY_CapsLockMask) != 0; }
2177 
2178     /**
2179      * @brief Check if the Ctrl key is pressed down.
2180      */
is_control_downKeyEvent2181     bool is_control_down () const { return (mask & SCIM_KEY_ControlMask) != 0; }
2182 
2183     /**
2184      * @brief Check if the Alt key is pressed down.
2185      */
is_alt_downKeyEvent2186     bool is_alt_down () const { return (mask & SCIM_KEY_AltMask) != 0; }
2187 
2188     /**
2189      * @brief Check if the Meta key is pressed down.
2190      */
is_meta_downKeyEvent2191     bool is_meta_down () const { return (mask & SCIM_KEY_MetaMask) != 0; }
2192 
2193     /**
2194      * @brief Check if the Super key is pressed down.
2195      */
is_super_downKeyEvent2196     bool is_super_down () const { return (mask & SCIM_KEY_SuperMask) != 0; }
2197 
2198     /**
2199      * @brief Check if the Hyper key is pressed down.
2200      */
is_hyper_downKeyEvent2201     bool is_hyper_down () const { return (mask & SCIM_KEY_HyperMask) != 0; }
2202 
2203     /**
2204      * @brief Check if the num lock key is pressed down.
2205      */
is_num_lock_downKeyEvent2206     bool is_num_lock_down () const { return (mask & SCIM_KEY_NumLockMask) != 0; }
2207 
2208     /**
2209      * @brief Check if it's a key press event.
2210      */
is_key_pressKeyEvent2211     bool is_key_press () const { return (mask & SCIM_KEY_ReleaseMask) == 0; }
2212 
2213     /**
2214      * @brief Check if it's a key release event.
2215      */
is_key_releaseKeyEvent2216     bool is_key_release () const { return (mask & SCIM_KEY_ReleaseMask) != 0; }
2217 
2218     /**
2219      * @brief Compare two key events.
2220      * @return true if they are equal.
2221      */
2222     bool operator == (const KeyEvent & key) const {
2223         return code == key.code && mask == key.mask;
2224     }
2225 
2226     /**
2227      * @brief Compare two key events.
2228      * @return true if they are not equal.
2229      */
2230     bool operator != (const KeyEvent & key) const {
2231         return code != key.code || mask != key.mask;
2232     }
2233 
2234     /**
2235      * @brief Compare two key events.
2236      *
2237      * This operator is mainly for sorting.
2238      *
2239      * @return true if the first is smaller.
2240      */
2241     bool operator < (const KeyEvent & key) const {
2242         return code < key.code || (code == key.code && mask < key.mask);
2243     }
2244 
2245 
2246     /**
2247      * @brief Check if the lock key is pressed down.
2248      *
2249      * For backward API compatibility, do not use it in new code.
2250      */
is_lock_downKeyEvent2251     bool is_lock_down () const { return (mask & SCIM_KEY_LockMask) != 0; }
2252 
2253     /**
2254      * @brief Check if the mod1 key is pressed down.
2255      *
2256      * For backward API compatibility, do not use it in new code.
2257      */
is_mod1_downKeyEvent2258     bool is_mod1_down () const { return (mask & SCIM_KEY_Mod1Mask) != 0; }
2259 
2260     /**
2261      * @brief Check if the mod2 key is pressed down.
2262      *
2263      * For backward API compatibility, do not use it in new code.
2264      */
is_mod2_downKeyEvent2265     bool is_mod2_down () const { return (mask & SCIM_KEY_Mod2Mask) != 0; }
2266 
2267     /**
2268      * @brief Check if the mod3 key is pressed down.
2269      *
2270      * For backward API compatibility, do not use it in new code.
2271      */
is_mod3_downKeyEvent2272     bool is_mod3_down () const { return (mask & SCIM_KEY_Mod3Mask) != 0; }
2273 
2274     /**
2275      * @brief Check if the mod4 key is pressed down.
2276      *
2277      * For backward API compatibility, do not use it in new code.
2278      */
is_mod4_downKeyEvent2279     bool is_mod4_down () const { return (mask & SCIM_KEY_Mod4Mask) != 0; }
2280 
2281     /**
2282      * @brief Check if the mod5 key is pressed down.
2283      *
2284      * For backward API compatibility, do not use it in new code.
2285      */
is_mod5_downKeyEvent2286     bool is_mod5_down () const { return (mask & SCIM_KEY_Mod5Mask) != 0; }
2287 
2288     /**
2289      * @brief Check if the scroll lock key is pressed down.
2290      *
2291      * For backward API compatibility, do not use it in new code.
2292      */
is_scroll_lock_downKeyEvent2293     bool is_scroll_lock_down () const { return (mask & SCIM_KEY_ScrollLockMask) != 0; }
2294 
2295 };
2296 
2297 /** @} */
2298 
2299 } // namespace scim
2300 
2301 #endif //__SCIM_EVENT_H
2302 
2303 /*
2304 vi:ts=4:nowrap:ai:expandtab
2305 */
2306 
2307