1 /*
2    (c) Copyright 2001-2009  The world wide DirectFB Open Source Community (directfb.org)
3    (c) Copyright 2000-2004  Convergence (integrated media) GmbH
4 
5    All rights reserved.
6 
7    Written by Denis Oliver Kropp <dok@directfb.org>,
8               Andreas Hundt <andi@fischlustig.de>,
9               Sven Neumann <neo@directfb.org>,
10               Ville Syrjälä <syrjala@sci.fi> and
11               Claudio Ciccani <klan@users.sf.net>.
12 
13    This library is free software; you can redistribute it and/or
14    modify it under the terms of the GNU Lesser General Public
15    License as published by the Free Software Foundation; either
16    version 2 of the License, or (at your option) any later version.
17 
18    This library is distributed in the hope that it will be useful,
19    but WITHOUT ANY WARRANTY; without even the implied warranty of
20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21    Lesser General Public License for more details.
22 
23    You should have received a copy of the GNU Lesser General Public
24    License along with this library; if not, write to the
25    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
26    Boston, MA 02111-1307, USA.
27 */
28 
29 #ifndef __DIRECTFB_KEYBOARD_H__
30 #define __DIRECTFB_KEYBOARD_H__
31 
32 #ifdef __cplusplus
33 extern "C"
34 {
35 #endif
36 
37 
38 /*
39  * DirectFB key types (for advanced mapping)
40  */
41 typedef enum {
42      DIKT_UNICODE        = 0x0000,     /* Unicode 3.x character
43                                            (compatible to Latin-1) */
44      DIKT_SPECIAL        = 0xF000,     /* Special key (e.g. Cursor Up or Menu) */
45      DIKT_FUNCTION       = 0xF100,     /* Function key (F1 - Fn) */
46      DIKT_MODIFIER       = 0xF200,     /* Modifier key */
47      DIKT_LOCK           = 0xF300,     /* Lock key (e.g. CapsLock) */
48      DIKT_DEAD           = 0xF400,     /* Dead key (e.g. dead grave) */
49      DIKT_CUSTOM         = 0xF500,     /* Custom key (vendor specific) */
50      DIKT_IDENTIFIER     = 0xF600      /* DirectFB key identifier */
51 } DFBInputDeviceKeyType;
52 
53 #define DFB_KEY(type,index)        ((DIKT_##type) | (index))
54 
55 #define DFB_KEY_TYPE(symbol)       ((((symbol) & ~0xFFF) == 0xF000) ? (symbol) & 0xFF00 : DIKT_UNICODE)
56 #define DFB_KEY_INDEX(symbol)      ((symbol) & 0x00FF)
57 
58 #define DFB_KEY_IS_ASCII(symbol)   ((symbol) < 128)
59 
60 #define DFB_FUNCTION_KEY(n)        (DFB_KEY( FUNCTION, n ))
61 #define DFB_MODIFIER_KEY(i)        (DFB_KEY( MODIFIER, (1 << i) ))
62 #define DFB_CUSTOM_KEY(n)          (DFB_KEY( CUSTOM, n ))
63 
64 #define DFB_LOWER_CASE(symbol)     (((symbol) >= 'A' && (symbol) <= 'Z') ?\
65                                     ((symbol) | 0x20) : (symbol))
66 #define DFB_UPPER_CASE(symbol)     (((symbol) >= 'a' && (symbol) <= 'z') ?\
67                                     ((symbol) & ~0x20) : (symbol))
68 
69 /*
70  * DirectFB modifier key identifiers (for advanced mapping)
71  */
72 typedef enum {
73      DIMKI_SHIFT,                       /* Shift modifier key */
74      DIMKI_CONTROL,                     /* Control modifier key */
75      DIMKI_ALT,                         /* Alt modifier key */
76      DIMKI_ALTGR,                       /* AltGr modifier key */
77      DIMKI_META,                        /* Meta modifier key */
78      DIMKI_SUPER,                       /* Super modifier key */
79      DIMKI_HYPER,                       /* Hyper modifier key */
80 
81      DIMKI_FIRST    = DIMKI_SHIFT,
82      DIMKI_LAST     = DIMKI_HYPER
83 } DFBInputDeviceModifierKeyIdentifier;
84 
85 /*
86  * DirectFB key identifiers (for basic mapping)
87  */
88 typedef enum {
89      DIKI_UNKNOWN = DFB_KEY( IDENTIFIER, 0 ),
90 
91      DIKI_A,
92      DIKI_B,
93      DIKI_C,
94      DIKI_D,
95      DIKI_E,
96      DIKI_F,
97      DIKI_G,
98      DIKI_H,
99      DIKI_I,
100      DIKI_J,
101      DIKI_K,
102      DIKI_L,
103      DIKI_M,
104      DIKI_N,
105      DIKI_O,
106      DIKI_P,
107      DIKI_Q,
108      DIKI_R,
109      DIKI_S,
110      DIKI_T,
111      DIKI_U,
112      DIKI_V,
113      DIKI_W,
114      DIKI_X,
115      DIKI_Y,
116      DIKI_Z,
117 
118      DIKI_0,
119      DIKI_1,
120      DIKI_2,
121      DIKI_3,
122      DIKI_4,
123      DIKI_5,
124      DIKI_6,
125      DIKI_7,
126      DIKI_8,
127      DIKI_9,
128 
129      DIKI_F1,
130      DIKI_F2,
131      DIKI_F3,
132      DIKI_F4,
133      DIKI_F5,
134      DIKI_F6,
135      DIKI_F7,
136      DIKI_F8,
137      DIKI_F9,
138      DIKI_F10,
139      DIKI_F11,
140      DIKI_F12,
141 
142      DIKI_SHIFT_L,
143      DIKI_SHIFT_R,
144      DIKI_CONTROL_L,
145      DIKI_CONTROL_R,
146      DIKI_ALT_L,
147      DIKI_ALT_R,
148      DIKI_META_L,
149      DIKI_META_R,
150      DIKI_SUPER_L,
151      DIKI_SUPER_R,
152      DIKI_HYPER_L,
153      DIKI_HYPER_R,
154 
155      DIKI_CAPS_LOCK,
156      DIKI_NUM_LOCK,
157      DIKI_SCROLL_LOCK,
158 
159      DIKI_ESCAPE,
160      DIKI_LEFT,
161      DIKI_RIGHT,
162      DIKI_UP,
163      DIKI_DOWN,
164      DIKI_TAB,
165      DIKI_ENTER,
166      DIKI_SPACE,
167      DIKI_BACKSPACE,
168      DIKI_INSERT,
169      DIKI_DELETE,
170      DIKI_HOME,
171      DIKI_END,
172      DIKI_PAGE_UP,
173      DIKI_PAGE_DOWN,
174      DIKI_PRINT,
175      DIKI_PAUSE,
176 
177      /*  The labels on these keys depend on the type of keyboard.
178       *  We've choosen the names from a US keyboard layout. The
179       *  comments refer to the ISO 9995 terminology.
180       */
181      DIKI_QUOTE_LEFT,    /*  TLDE  */
182      DIKI_MINUS_SIGN,    /*  AE11  */
183      DIKI_EQUALS_SIGN,   /*  AE12  */
184      DIKI_BRACKET_LEFT,  /*  AD11  */
185      DIKI_BRACKET_RIGHT, /*  AD12  */
186      DIKI_BACKSLASH,     /*  BKSL  */
187      DIKI_SEMICOLON,     /*  AC10  */
188      DIKI_QUOTE_RIGHT,   /*  AC11  */
189      DIKI_COMMA,         /*  AB08  */
190      DIKI_PERIOD,        /*  AB09  */
191      DIKI_SLASH,         /*  AB10  */
192 
193      DIKI_LESS_SIGN,     /*  103rd  */
194 
195      DIKI_KP_DIV,
196      DIKI_KP_MULT,
197      DIKI_KP_MINUS,
198      DIKI_KP_PLUS,
199      DIKI_KP_ENTER,
200      DIKI_KP_SPACE,
201      DIKI_KP_TAB,
202      DIKI_KP_F1,
203      DIKI_KP_F2,
204      DIKI_KP_F3,
205      DIKI_KP_F4,
206      DIKI_KP_EQUAL,
207      DIKI_KP_SEPARATOR,
208 
209      DIKI_KP_DECIMAL,
210      DIKI_KP_0,
211      DIKI_KP_1,
212      DIKI_KP_2,
213      DIKI_KP_3,
214      DIKI_KP_4,
215      DIKI_KP_5,
216      DIKI_KP_6,
217      DIKI_KP_7,
218      DIKI_KP_8,
219      DIKI_KP_9,
220 
221      DIKI_KEYDEF_END,
222      DIKI_NUMBER_OF_KEYS = DIKI_KEYDEF_END - DFB_KEY( IDENTIFIER, 0 )
223 
224 } DFBInputDeviceKeyIdentifier;
225 
226 /*
227  * DirectFB key symbols (for advanced mapping)
228  */
229 typedef enum {
230      /*
231       * Unicode excerpt - Controls and Basic Latin
232       *
233       * Any Unicode 3.x character can be used as a DirectFB key symbol,
234       * the values of this enum are compatible with Unicode.
235       */
236      DIKS_NULL                     = DFB_KEY( UNICODE, 0x00 ),
237      DIKS_BACKSPACE                = DFB_KEY( UNICODE, 0x08 ),
238      DIKS_TAB                      = DFB_KEY( UNICODE, 0x09 ),
239      DIKS_RETURN                   = DFB_KEY( UNICODE, 0x0D ),
240      DIKS_CANCEL                   = DFB_KEY( UNICODE, 0x18 ),
241      DIKS_ESCAPE                   = DFB_KEY( UNICODE, 0x1B ),
242      DIKS_SPACE                    = DFB_KEY( UNICODE, 0x20 ),
243      DIKS_EXCLAMATION_MARK         = DFB_KEY( UNICODE, 0x21 ),
244      DIKS_QUOTATION                = DFB_KEY( UNICODE, 0x22 ),
245      DIKS_NUMBER_SIGN              = DFB_KEY( UNICODE, 0x23 ),
246      DIKS_DOLLAR_SIGN              = DFB_KEY( UNICODE, 0x24 ),
247      DIKS_PERCENT_SIGN             = DFB_KEY( UNICODE, 0x25 ),
248      DIKS_AMPERSAND                = DFB_KEY( UNICODE, 0x26 ),
249      DIKS_APOSTROPHE               = DFB_KEY( UNICODE, 0x27 ),
250      DIKS_PARENTHESIS_LEFT         = DFB_KEY( UNICODE, 0x28 ),
251      DIKS_PARENTHESIS_RIGHT        = DFB_KEY( UNICODE, 0x29 ),
252      DIKS_ASTERISK                 = DFB_KEY( UNICODE, 0x2A ),
253      DIKS_PLUS_SIGN                = DFB_KEY( UNICODE, 0x2B ),
254      DIKS_COMMA                    = DFB_KEY( UNICODE, 0x2C ),
255      DIKS_MINUS_SIGN               = DFB_KEY( UNICODE, 0x2D ),
256      DIKS_PERIOD                   = DFB_KEY( UNICODE, 0x2E ),
257      DIKS_SLASH                    = DFB_KEY( UNICODE, 0x2F ),
258      DIKS_0                        = DFB_KEY( UNICODE, 0x30 ),
259      DIKS_1                        = DFB_KEY( UNICODE, 0x31 ),
260      DIKS_2                        = DFB_KEY( UNICODE, 0x32 ),
261      DIKS_3                        = DFB_KEY( UNICODE, 0x33 ),
262      DIKS_4                        = DFB_KEY( UNICODE, 0x34 ),
263      DIKS_5                        = DFB_KEY( UNICODE, 0x35 ),
264      DIKS_6                        = DFB_KEY( UNICODE, 0x36 ),
265      DIKS_7                        = DFB_KEY( UNICODE, 0x37 ),
266      DIKS_8                        = DFB_KEY( UNICODE, 0x38 ),
267      DIKS_9                        = DFB_KEY( UNICODE, 0x39 ),
268      DIKS_COLON                    = DFB_KEY( UNICODE, 0x3A ),
269      DIKS_SEMICOLON                = DFB_KEY( UNICODE, 0x3B ),
270      DIKS_LESS_THAN_SIGN           = DFB_KEY( UNICODE, 0x3C ),
271      DIKS_EQUALS_SIGN              = DFB_KEY( UNICODE, 0x3D ),
272      DIKS_GREATER_THAN_SIGN        = DFB_KEY( UNICODE, 0x3E ),
273      DIKS_QUESTION_MARK            = DFB_KEY( UNICODE, 0x3F ),
274      DIKS_AT                       = DFB_KEY( UNICODE, 0x40 ),
275      DIKS_CAPITAL_A                = DFB_KEY( UNICODE, 0x41 ),
276      DIKS_CAPITAL_B                = DFB_KEY( UNICODE, 0x42 ),
277      DIKS_CAPITAL_C                = DFB_KEY( UNICODE, 0x43 ),
278      DIKS_CAPITAL_D                = DFB_KEY( UNICODE, 0x44 ),
279      DIKS_CAPITAL_E                = DFB_KEY( UNICODE, 0x45 ),
280      DIKS_CAPITAL_F                = DFB_KEY( UNICODE, 0x46 ),
281      DIKS_CAPITAL_G                = DFB_KEY( UNICODE, 0x47 ),
282      DIKS_CAPITAL_H                = DFB_KEY( UNICODE, 0x48 ),
283      DIKS_CAPITAL_I                = DFB_KEY( UNICODE, 0x49 ),
284      DIKS_CAPITAL_J                = DFB_KEY( UNICODE, 0x4A ),
285      DIKS_CAPITAL_K                = DFB_KEY( UNICODE, 0x4B ),
286      DIKS_CAPITAL_L                = DFB_KEY( UNICODE, 0x4C ),
287      DIKS_CAPITAL_M                = DFB_KEY( UNICODE, 0x4D ),
288      DIKS_CAPITAL_N                = DFB_KEY( UNICODE, 0x4E ),
289      DIKS_CAPITAL_O                = DFB_KEY( UNICODE, 0x4F ),
290      DIKS_CAPITAL_P                = DFB_KEY( UNICODE, 0x50 ),
291      DIKS_CAPITAL_Q                = DFB_KEY( UNICODE, 0x51 ),
292      DIKS_CAPITAL_R                = DFB_KEY( UNICODE, 0x52 ),
293      DIKS_CAPITAL_S                = DFB_KEY( UNICODE, 0x53 ),
294      DIKS_CAPITAL_T                = DFB_KEY( UNICODE, 0x54 ),
295      DIKS_CAPITAL_U                = DFB_KEY( UNICODE, 0x55 ),
296      DIKS_CAPITAL_V                = DFB_KEY( UNICODE, 0x56 ),
297      DIKS_CAPITAL_W                = DFB_KEY( UNICODE, 0x57 ),
298      DIKS_CAPITAL_X                = DFB_KEY( UNICODE, 0x58 ),
299      DIKS_CAPITAL_Y                = DFB_KEY( UNICODE, 0x59 ),
300      DIKS_CAPITAL_Z                = DFB_KEY( UNICODE, 0x5A ),
301      DIKS_SQUARE_BRACKET_LEFT      = DFB_KEY( UNICODE, 0x5B ),
302      DIKS_BACKSLASH                = DFB_KEY( UNICODE, 0x5C ),
303      DIKS_SQUARE_BRACKET_RIGHT     = DFB_KEY( UNICODE, 0x5D ),
304      DIKS_CIRCUMFLEX_ACCENT        = DFB_KEY( UNICODE, 0x5E ),
305      DIKS_UNDERSCORE               = DFB_KEY( UNICODE, 0x5F ),
306      DIKS_GRAVE_ACCENT             = DFB_KEY( UNICODE, 0x60 ),
307      DIKS_SMALL_A                  = DFB_KEY( UNICODE, 0x61 ),
308      DIKS_SMALL_B                  = DFB_KEY( UNICODE, 0x62 ),
309      DIKS_SMALL_C                  = DFB_KEY( UNICODE, 0x63 ),
310      DIKS_SMALL_D                  = DFB_KEY( UNICODE, 0x64 ),
311      DIKS_SMALL_E                  = DFB_KEY( UNICODE, 0x65 ),
312      DIKS_SMALL_F                  = DFB_KEY( UNICODE, 0x66 ),
313      DIKS_SMALL_G                  = DFB_KEY( UNICODE, 0x67 ),
314      DIKS_SMALL_H                  = DFB_KEY( UNICODE, 0x68 ),
315      DIKS_SMALL_I                  = DFB_KEY( UNICODE, 0x69 ),
316      DIKS_SMALL_J                  = DFB_KEY( UNICODE, 0x6A ),
317      DIKS_SMALL_K                  = DFB_KEY( UNICODE, 0x6B ),
318      DIKS_SMALL_L                  = DFB_KEY( UNICODE, 0x6C ),
319      DIKS_SMALL_M                  = DFB_KEY( UNICODE, 0x6D ),
320      DIKS_SMALL_N                  = DFB_KEY( UNICODE, 0x6E ),
321      DIKS_SMALL_O                  = DFB_KEY( UNICODE, 0x6F ),
322      DIKS_SMALL_P                  = DFB_KEY( UNICODE, 0x70 ),
323      DIKS_SMALL_Q                  = DFB_KEY( UNICODE, 0x71 ),
324      DIKS_SMALL_R                  = DFB_KEY( UNICODE, 0x72 ),
325      DIKS_SMALL_S                  = DFB_KEY( UNICODE, 0x73 ),
326      DIKS_SMALL_T                  = DFB_KEY( UNICODE, 0x74 ),
327      DIKS_SMALL_U                  = DFB_KEY( UNICODE, 0x75 ),
328      DIKS_SMALL_V                  = DFB_KEY( UNICODE, 0x76 ),
329      DIKS_SMALL_W                  = DFB_KEY( UNICODE, 0x77 ),
330      DIKS_SMALL_X                  = DFB_KEY( UNICODE, 0x78 ),
331      DIKS_SMALL_Y                  = DFB_KEY( UNICODE, 0x79 ),
332      DIKS_SMALL_Z                  = DFB_KEY( UNICODE, 0x7A ),
333      DIKS_CURLY_BRACKET_LEFT       = DFB_KEY( UNICODE, 0x7B ),
334      DIKS_VERTICAL_BAR             = DFB_KEY( UNICODE, 0x7C ),
335      DIKS_CURLY_BRACKET_RIGHT      = DFB_KEY( UNICODE, 0x7D ),
336      DIKS_TILDE                    = DFB_KEY( UNICODE, 0x7E ),
337      DIKS_DELETE                   = DFB_KEY( UNICODE, 0x7F ),
338 
339      DIKS_ENTER                    = DIKS_RETURN,
340 
341      /*
342       * Unicode private area - DirectFB Special keys
343       */
344      DIKS_CURSOR_LEFT              = DFB_KEY( SPECIAL, 0x00 ),
345      DIKS_CURSOR_RIGHT             = DFB_KEY( SPECIAL, 0x01 ),
346      DIKS_CURSOR_UP                = DFB_KEY( SPECIAL, 0x02 ),
347      DIKS_CURSOR_DOWN              = DFB_KEY( SPECIAL, 0x03 ),
348      DIKS_INSERT                   = DFB_KEY( SPECIAL, 0x04 ),
349      DIKS_HOME                     = DFB_KEY( SPECIAL, 0x05 ),
350      DIKS_END                      = DFB_KEY( SPECIAL, 0x06 ),
351      DIKS_PAGE_UP                  = DFB_KEY( SPECIAL, 0x07 ),
352      DIKS_PAGE_DOWN                = DFB_KEY( SPECIAL, 0x08 ),
353      DIKS_PRINT                    = DFB_KEY( SPECIAL, 0x09 ),
354      DIKS_PAUSE                    = DFB_KEY( SPECIAL, 0x0A ),
355      DIKS_OK                       = DFB_KEY( SPECIAL, 0x0B ),
356      DIKS_SELECT                   = DFB_KEY( SPECIAL, 0x0C ),
357      DIKS_GOTO                     = DFB_KEY( SPECIAL, 0x0D ),
358      DIKS_CLEAR                    = DFB_KEY( SPECIAL, 0x0E ),
359      DIKS_POWER                    = DFB_KEY( SPECIAL, 0x0F ),
360      DIKS_POWER2                   = DFB_KEY( SPECIAL, 0x10 ),
361      DIKS_OPTION                   = DFB_KEY( SPECIAL, 0x11 ),
362      DIKS_MENU                     = DFB_KEY( SPECIAL, 0x12 ),
363      DIKS_HELP                     = DFB_KEY( SPECIAL, 0x13 ),
364      DIKS_INFO                     = DFB_KEY( SPECIAL, 0x14 ),
365      DIKS_TIME                     = DFB_KEY( SPECIAL, 0x15 ),
366      DIKS_VENDOR                   = DFB_KEY( SPECIAL, 0x16 ),
367 
368      DIKS_ARCHIVE                  = DFB_KEY( SPECIAL, 0x17 ),
369      DIKS_PROGRAM                  = DFB_KEY( SPECIAL, 0x18 ),
370      DIKS_CHANNEL                  = DFB_KEY( SPECIAL, 0x19 ),
371      DIKS_FAVORITES                = DFB_KEY( SPECIAL, 0x1A ),
372      DIKS_EPG                      = DFB_KEY( SPECIAL, 0x1B ),
373      DIKS_PVR                      = DFB_KEY( SPECIAL, 0x1C ),
374      DIKS_MHP                      = DFB_KEY( SPECIAL, 0x1D ),
375      DIKS_LANGUAGE                 = DFB_KEY( SPECIAL, 0x1E ),
376      DIKS_TITLE                    = DFB_KEY( SPECIAL, 0x1F ),
377      DIKS_SUBTITLE                 = DFB_KEY( SPECIAL, 0x20 ),
378      DIKS_ANGLE                    = DFB_KEY( SPECIAL, 0x21 ),
379      DIKS_ZOOM                     = DFB_KEY( SPECIAL, 0x22 ),
380      DIKS_MODE                     = DFB_KEY( SPECIAL, 0x23 ),
381      DIKS_KEYBOARD                 = DFB_KEY( SPECIAL, 0x24 ),
382      DIKS_PC                       = DFB_KEY( SPECIAL, 0x25 ),
383      DIKS_SCREEN                   = DFB_KEY( SPECIAL, 0x26 ),
384 
385      DIKS_TV                       = DFB_KEY( SPECIAL, 0x27 ),
386      DIKS_TV2                      = DFB_KEY( SPECIAL, 0x28 ),
387      DIKS_VCR                      = DFB_KEY( SPECIAL, 0x29 ),
388      DIKS_VCR2                     = DFB_KEY( SPECIAL, 0x2A ),
389      DIKS_SAT                      = DFB_KEY( SPECIAL, 0x2B ),
390      DIKS_SAT2                     = DFB_KEY( SPECIAL, 0x2C ),
391      DIKS_CD                       = DFB_KEY( SPECIAL, 0x2D ),
392      DIKS_TAPE                     = DFB_KEY( SPECIAL, 0x2E ),
393      DIKS_RADIO                    = DFB_KEY( SPECIAL, 0x2F ),
394      DIKS_TUNER                    = DFB_KEY( SPECIAL, 0x30 ),
395      DIKS_PLAYER                   = DFB_KEY( SPECIAL, 0x31 ),
396      DIKS_TEXT                     = DFB_KEY( SPECIAL, 0x32 ),
397      DIKS_DVD                      = DFB_KEY( SPECIAL, 0x33 ),
398      DIKS_AUX                      = DFB_KEY( SPECIAL, 0x34 ),
399      DIKS_MP3                      = DFB_KEY( SPECIAL, 0x35 ),
400      DIKS_PHONE                    = DFB_KEY( SPECIAL, 0x36 ),
401      DIKS_AUDIO                    = DFB_KEY( SPECIAL, 0x37 ),
402      DIKS_VIDEO                    = DFB_KEY( SPECIAL, 0x38 ),
403 
404      DIKS_INTERNET                 = DFB_KEY( SPECIAL, 0x39 ),
405      DIKS_MAIL                     = DFB_KEY( SPECIAL, 0x3A ),
406      DIKS_NEWS                     = DFB_KEY( SPECIAL, 0x3B ),
407      DIKS_DIRECTORY                = DFB_KEY( SPECIAL, 0x3C ),
408      DIKS_LIST                     = DFB_KEY( SPECIAL, 0x3D ),
409      DIKS_CALCULATOR               = DFB_KEY( SPECIAL, 0x3E ),
410      DIKS_MEMO                     = DFB_KEY( SPECIAL, 0x3F ),
411      DIKS_CALENDAR                 = DFB_KEY( SPECIAL, 0x40 ),
412      DIKS_EDITOR                   = DFB_KEY( SPECIAL, 0x41 ),
413 
414      DIKS_RED                      = DFB_KEY( SPECIAL, 0x42 ),
415      DIKS_GREEN                    = DFB_KEY( SPECIAL, 0x43 ),
416      DIKS_YELLOW                   = DFB_KEY( SPECIAL, 0x44 ),
417      DIKS_BLUE                     = DFB_KEY( SPECIAL, 0x45 ),
418 
419      DIKS_CHANNEL_UP               = DFB_KEY( SPECIAL, 0x46 ),
420      DIKS_CHANNEL_DOWN             = DFB_KEY( SPECIAL, 0x47 ),
421      DIKS_BACK                     = DFB_KEY( SPECIAL, 0x48 ),
422      DIKS_FORWARD                  = DFB_KEY( SPECIAL, 0x49 ),
423      DIKS_FIRST                    = DFB_KEY( SPECIAL, 0x4A ),
424      DIKS_LAST                     = DFB_KEY( SPECIAL, 0x4B ),
425      DIKS_VOLUME_UP                = DFB_KEY( SPECIAL, 0x4C ),
426      DIKS_VOLUME_DOWN              = DFB_KEY( SPECIAL, 0x4D ),
427      DIKS_MUTE                     = DFB_KEY( SPECIAL, 0x4E ),
428      DIKS_AB                       = DFB_KEY( SPECIAL, 0x4F ),
429      DIKS_PLAYPAUSE                = DFB_KEY( SPECIAL, 0x50 ),
430      DIKS_PLAY                     = DFB_KEY( SPECIAL, 0x51 ),
431      DIKS_STOP                     = DFB_KEY( SPECIAL, 0x52 ),
432      DIKS_RESTART                  = DFB_KEY( SPECIAL, 0x53 ),
433      DIKS_SLOW                     = DFB_KEY( SPECIAL, 0x54 ),
434      DIKS_FAST                     = DFB_KEY( SPECIAL, 0x55 ),
435      DIKS_RECORD                   = DFB_KEY( SPECIAL, 0x56 ),
436      DIKS_EJECT                    = DFB_KEY( SPECIAL, 0x57 ),
437      DIKS_SHUFFLE                  = DFB_KEY( SPECIAL, 0x58 ),
438      DIKS_REWIND                   = DFB_KEY( SPECIAL, 0x59 ),
439      DIKS_FASTFORWARD              = DFB_KEY( SPECIAL, 0x5A ),
440      DIKS_PREVIOUS                 = DFB_KEY( SPECIAL, 0x5B ),
441      DIKS_NEXT                     = DFB_KEY( SPECIAL, 0x5C ),
442      DIKS_BEGIN                    = DFB_KEY( SPECIAL, 0x5D ),
443 
444      DIKS_DIGITS                   = DFB_KEY( SPECIAL, 0x5E ),
445      DIKS_TEEN                     = DFB_KEY( SPECIAL, 0x5F ),
446      DIKS_TWEN                     = DFB_KEY( SPECIAL, 0x60 ),
447 
448      DIKS_BREAK                    = DFB_KEY( SPECIAL, 0x61 ),
449      DIKS_EXIT                     = DFB_KEY( SPECIAL, 0x62 ),
450      DIKS_SETUP                    = DFB_KEY( SPECIAL, 0x63 ),
451 
452      DIKS_CURSOR_LEFT_UP           = DFB_KEY( SPECIAL, 0x64 ),
453      DIKS_CURSOR_LEFT_DOWN         = DFB_KEY( SPECIAL, 0x65 ),
454      DIKS_CURSOR_UP_RIGHT          = DFB_KEY( SPECIAL, 0x66 ),
455      DIKS_CURSOR_DOWN_RIGHT        = DFB_KEY( SPECIAL, 0x67 ),
456 
457      /*
458       * Unicode private area - DirectFB Function keys
459       *
460       * More function keys are available via DFB_FUNCTION_KEY(n).
461       */
462      DIKS_F1                       = DFB_FUNCTION_KEY(  1 ),
463      DIKS_F2                       = DFB_FUNCTION_KEY(  2 ),
464      DIKS_F3                       = DFB_FUNCTION_KEY(  3 ),
465      DIKS_F4                       = DFB_FUNCTION_KEY(  4 ),
466      DIKS_F5                       = DFB_FUNCTION_KEY(  5 ),
467      DIKS_F6                       = DFB_FUNCTION_KEY(  6 ),
468      DIKS_F7                       = DFB_FUNCTION_KEY(  7 ),
469      DIKS_F8                       = DFB_FUNCTION_KEY(  8 ),
470      DIKS_F9                       = DFB_FUNCTION_KEY(  9 ),
471      DIKS_F10                      = DFB_FUNCTION_KEY( 10 ),
472      DIKS_F11                      = DFB_FUNCTION_KEY( 11 ),
473      DIKS_F12                      = DFB_FUNCTION_KEY( 12 ),
474 
475      /*
476       * Unicode private area - DirectFB Modifier keys
477       */
478      DIKS_SHIFT                    = DFB_MODIFIER_KEY( DIMKI_SHIFT ),
479      DIKS_CONTROL                  = DFB_MODIFIER_KEY( DIMKI_CONTROL ),
480      DIKS_ALT                      = DFB_MODIFIER_KEY( DIMKI_ALT ),
481      DIKS_ALTGR                    = DFB_MODIFIER_KEY( DIMKI_ALTGR ),
482      DIKS_META                     = DFB_MODIFIER_KEY( DIMKI_META ),
483      DIKS_SUPER                    = DFB_MODIFIER_KEY( DIMKI_SUPER ),
484      DIKS_HYPER                    = DFB_MODIFIER_KEY( DIMKI_HYPER ),
485 
486      /*
487       * Unicode private area - DirectFB Lock keys
488       */
489      DIKS_CAPS_LOCK                = DFB_KEY( LOCK, 0x00 ),
490      DIKS_NUM_LOCK                 = DFB_KEY( LOCK, 0x01 ),
491      DIKS_SCROLL_LOCK              = DFB_KEY( LOCK, 0x02 ),
492 
493      /*
494       * Unicode private area - DirectFB Dead keys
495       */
496      DIKS_DEAD_ABOVEDOT            = DFB_KEY( DEAD, 0x00 ),
497      DIKS_DEAD_ABOVERING           = DFB_KEY( DEAD, 0x01 ),
498      DIKS_DEAD_ACUTE               = DFB_KEY( DEAD, 0x02 ),
499      DIKS_DEAD_BREVE               = DFB_KEY( DEAD, 0x03 ),
500      DIKS_DEAD_CARON               = DFB_KEY( DEAD, 0x04 ),
501      DIKS_DEAD_CEDILLA             = DFB_KEY( DEAD, 0x05 ),
502      DIKS_DEAD_CIRCUMFLEX          = DFB_KEY( DEAD, 0x06 ),
503      DIKS_DEAD_DIAERESIS           = DFB_KEY( DEAD, 0x07 ),
504      DIKS_DEAD_DOUBLEACUTE         = DFB_KEY( DEAD, 0x08 ),
505      DIKS_DEAD_GRAVE               = DFB_KEY( DEAD, 0x09 ),
506      DIKS_DEAD_IOTA                = DFB_KEY( DEAD, 0x0A ),
507      DIKS_DEAD_MACRON              = DFB_KEY( DEAD, 0x0B ),
508      DIKS_DEAD_OGONEK              = DFB_KEY( DEAD, 0x0C ),
509      DIKS_DEAD_SEMIVOICED_SOUND    = DFB_KEY( DEAD, 0x0D ),
510      DIKS_DEAD_TILDE               = DFB_KEY( DEAD, 0x0E ),
511      DIKS_DEAD_VOICED_SOUND        = DFB_KEY( DEAD, 0x0F ),
512 
513      /*
514       * Unicode private area - DirectFB Custom keys
515       *
516       * More custom keys are available via DFB_CUSTOM_KEY(n).
517       */
518      DIKS_CUSTOM0                  = DFB_CUSTOM_KEY( 0 ),
519      DIKS_CUSTOM1                  = DFB_CUSTOM_KEY( 1 ),
520      DIKS_CUSTOM2                  = DFB_CUSTOM_KEY( 2 ),
521      DIKS_CUSTOM3                  = DFB_CUSTOM_KEY( 3 ),
522      DIKS_CUSTOM4                  = DFB_CUSTOM_KEY( 4 ),
523      DIKS_CUSTOM5                  = DFB_CUSTOM_KEY( 5 ),
524      DIKS_CUSTOM6                  = DFB_CUSTOM_KEY( 6 ),
525      DIKS_CUSTOM7                  = DFB_CUSTOM_KEY( 7 ),
526      DIKS_CUSTOM8                  = DFB_CUSTOM_KEY( 8 ),
527      DIKS_CUSTOM9                  = DFB_CUSTOM_KEY( 9 ),
528      DIKS_CUSTOM10                 = DFB_CUSTOM_KEY( 10 ),
529      DIKS_CUSTOM11                 = DFB_CUSTOM_KEY( 11 ),
530      DIKS_CUSTOM12                 = DFB_CUSTOM_KEY( 12 ),
531      DIKS_CUSTOM13                 = DFB_CUSTOM_KEY( 13 ),
532      DIKS_CUSTOM14                 = DFB_CUSTOM_KEY( 14 ),
533      DIKS_CUSTOM15                 = DFB_CUSTOM_KEY( 15 ),
534      DIKS_CUSTOM16                 = DFB_CUSTOM_KEY( 16 ),
535      DIKS_CUSTOM17                 = DFB_CUSTOM_KEY( 17 ),
536      DIKS_CUSTOM18                 = DFB_CUSTOM_KEY( 18 ),
537      DIKS_CUSTOM19                 = DFB_CUSTOM_KEY( 19 ),
538      DIKS_CUSTOM20                 = DFB_CUSTOM_KEY( 20 ),
539      DIKS_CUSTOM21                 = DFB_CUSTOM_KEY( 21 ),
540      DIKS_CUSTOM22                 = DFB_CUSTOM_KEY( 22 ),
541      DIKS_CUSTOM23                 = DFB_CUSTOM_KEY( 23 ),
542      DIKS_CUSTOM24                 = DFB_CUSTOM_KEY( 24 ),
543      DIKS_CUSTOM25                 = DFB_CUSTOM_KEY( 25 ),
544      DIKS_CUSTOM26                 = DFB_CUSTOM_KEY( 26 ),
545      DIKS_CUSTOM27                 = DFB_CUSTOM_KEY( 27 ),
546      DIKS_CUSTOM28                 = DFB_CUSTOM_KEY( 28 ),
547      DIKS_CUSTOM29                 = DFB_CUSTOM_KEY( 29 ),
548      DIKS_CUSTOM30                 = DFB_CUSTOM_KEY( 30 ),
549      DIKS_CUSTOM31                 = DFB_CUSTOM_KEY( 31 ),
550      DIKS_CUSTOM32                 = DFB_CUSTOM_KEY( 32 ),
551      DIKS_CUSTOM33                 = DFB_CUSTOM_KEY( 33 ),
552      DIKS_CUSTOM34                 = DFB_CUSTOM_KEY( 34 ),
553      DIKS_CUSTOM35                 = DFB_CUSTOM_KEY( 35 ),
554      DIKS_CUSTOM36                 = DFB_CUSTOM_KEY( 36 ),
555      DIKS_CUSTOM37                 = DFB_CUSTOM_KEY( 37 ),
556      DIKS_CUSTOM38                 = DFB_CUSTOM_KEY( 38 ),
557      DIKS_CUSTOM39                 = DFB_CUSTOM_KEY( 39 ),
558      DIKS_CUSTOM40                 = DFB_CUSTOM_KEY( 40 ),
559      DIKS_CUSTOM41                 = DFB_CUSTOM_KEY( 41 ),
560      DIKS_CUSTOM42                 = DFB_CUSTOM_KEY( 42 ),
561      DIKS_CUSTOM43                 = DFB_CUSTOM_KEY( 43 ),
562      DIKS_CUSTOM44                 = DFB_CUSTOM_KEY( 44 ),
563      DIKS_CUSTOM45                 = DFB_CUSTOM_KEY( 45 ),
564      DIKS_CUSTOM46                 = DFB_CUSTOM_KEY( 46 ),
565      DIKS_CUSTOM47                 = DFB_CUSTOM_KEY( 47 ),
566      DIKS_CUSTOM48                 = DFB_CUSTOM_KEY( 48 ),
567      DIKS_CUSTOM49                 = DFB_CUSTOM_KEY( 49 ),
568      DIKS_CUSTOM50                 = DFB_CUSTOM_KEY( 50 ),
569      DIKS_CUSTOM51                 = DFB_CUSTOM_KEY( 51 ),
570      DIKS_CUSTOM52                 = DFB_CUSTOM_KEY( 52 ),
571      DIKS_CUSTOM53                 = DFB_CUSTOM_KEY( 53 ),
572      DIKS_CUSTOM54                 = DFB_CUSTOM_KEY( 54 ),
573      DIKS_CUSTOM55                 = DFB_CUSTOM_KEY( 55 ),
574      DIKS_CUSTOM56                 = DFB_CUSTOM_KEY( 56 ),
575      DIKS_CUSTOM57                 = DFB_CUSTOM_KEY( 57 ),
576      DIKS_CUSTOM58                 = DFB_CUSTOM_KEY( 58 ),
577      DIKS_CUSTOM59                 = DFB_CUSTOM_KEY( 59 ),
578      DIKS_CUSTOM60                 = DFB_CUSTOM_KEY( 60 ),
579      DIKS_CUSTOM61                 = DFB_CUSTOM_KEY( 61 ),
580      DIKS_CUSTOM62                 = DFB_CUSTOM_KEY( 62 ),
581      DIKS_CUSTOM63                 = DFB_CUSTOM_KEY( 63 ),
582      DIKS_CUSTOM64                 = DFB_CUSTOM_KEY( 64 ),
583      DIKS_CUSTOM65                 = DFB_CUSTOM_KEY( 65 ),
584      DIKS_CUSTOM66                 = DFB_CUSTOM_KEY( 66 ),
585      DIKS_CUSTOM67                 = DFB_CUSTOM_KEY( 67 ),
586      DIKS_CUSTOM68                 = DFB_CUSTOM_KEY( 68 ),
587      DIKS_CUSTOM69                 = DFB_CUSTOM_KEY( 69 ),
588      DIKS_CUSTOM70                 = DFB_CUSTOM_KEY( 70 ),
589      DIKS_CUSTOM71                 = DFB_CUSTOM_KEY( 71 ),
590      DIKS_CUSTOM72                 = DFB_CUSTOM_KEY( 72 ),
591      DIKS_CUSTOM73                 = DFB_CUSTOM_KEY( 73 ),
592      DIKS_CUSTOM74                 = DFB_CUSTOM_KEY( 74 ),
593      DIKS_CUSTOM75                 = DFB_CUSTOM_KEY( 75 ),
594      DIKS_CUSTOM76                 = DFB_CUSTOM_KEY( 76 ),
595      DIKS_CUSTOM77                 = DFB_CUSTOM_KEY( 77 ),
596      DIKS_CUSTOM78                 = DFB_CUSTOM_KEY( 78 ),
597      DIKS_CUSTOM79                 = DFB_CUSTOM_KEY( 79 ),
598      DIKS_CUSTOM80                 = DFB_CUSTOM_KEY( 80 ),
599      DIKS_CUSTOM81                 = DFB_CUSTOM_KEY( 81 ),
600      DIKS_CUSTOM82                 = DFB_CUSTOM_KEY( 82 ),
601      DIKS_CUSTOM83                 = DFB_CUSTOM_KEY( 83 ),
602      DIKS_CUSTOM84                 = DFB_CUSTOM_KEY( 84 ),
603      DIKS_CUSTOM85                 = DFB_CUSTOM_KEY( 85 ),
604      DIKS_CUSTOM86                 = DFB_CUSTOM_KEY( 86 ),
605      DIKS_CUSTOM87                 = DFB_CUSTOM_KEY( 87 ),
606      DIKS_CUSTOM88                 = DFB_CUSTOM_KEY( 88 ),
607      DIKS_CUSTOM89                 = DFB_CUSTOM_KEY( 89 ),
608      DIKS_CUSTOM90                 = DFB_CUSTOM_KEY( 90 ),
609      DIKS_CUSTOM91                 = DFB_CUSTOM_KEY( 91 ),
610      DIKS_CUSTOM92                 = DFB_CUSTOM_KEY( 92 ),
611      DIKS_CUSTOM93                 = DFB_CUSTOM_KEY( 93 ),
612      DIKS_CUSTOM94                 = DFB_CUSTOM_KEY( 94 ),
613      DIKS_CUSTOM95                 = DFB_CUSTOM_KEY( 95 ),
614      DIKS_CUSTOM96                 = DFB_CUSTOM_KEY( 96 ),
615      DIKS_CUSTOM97                 = DFB_CUSTOM_KEY( 97 ),
616      DIKS_CUSTOM98                 = DFB_CUSTOM_KEY( 98 ),
617      DIKS_CUSTOM99                 = DFB_CUSTOM_KEY( 99 ),
618      DIKS_CUSTOM100                = DFB_CUSTOM_KEY( 100 ),
619      DIKS_CUSTOM101                = DFB_CUSTOM_KEY( 101 ),
620      DIKS_CUSTOM102                = DFB_CUSTOM_KEY( 102 ),
621      DIKS_CUSTOM103                = DFB_CUSTOM_KEY( 103 ),
622      DIKS_CUSTOM104                = DFB_CUSTOM_KEY( 104 ),
623      DIKS_CUSTOM105                = DFB_CUSTOM_KEY( 105 ),
624      DIKS_CUSTOM106                = DFB_CUSTOM_KEY( 106 ),
625      DIKS_CUSTOM107                = DFB_CUSTOM_KEY( 107 ),
626      DIKS_CUSTOM108                = DFB_CUSTOM_KEY( 108 ),
627      DIKS_CUSTOM109                = DFB_CUSTOM_KEY( 109 ),
628      DIKS_CUSTOM110                = DFB_CUSTOM_KEY( 110 ),
629      DIKS_CUSTOM111                = DFB_CUSTOM_KEY( 111 ),
630      DIKS_CUSTOM112                = DFB_CUSTOM_KEY( 112 ),
631      DIKS_CUSTOM113                = DFB_CUSTOM_KEY( 113 ),
632      DIKS_CUSTOM114                = DFB_CUSTOM_KEY( 114 ),
633      DIKS_CUSTOM115                = DFB_CUSTOM_KEY( 115 ),
634      DIKS_CUSTOM116                = DFB_CUSTOM_KEY( 116 ),
635      DIKS_CUSTOM117                = DFB_CUSTOM_KEY( 117 ),
636      DIKS_CUSTOM118                = DFB_CUSTOM_KEY( 118 ),
637      DIKS_CUSTOM119                = DFB_CUSTOM_KEY( 119 ),
638      DIKS_CUSTOM120                = DFB_CUSTOM_KEY( 120 ),
639      DIKS_CUSTOM121                = DFB_CUSTOM_KEY( 121 ),
640      DIKS_CUSTOM122                = DFB_CUSTOM_KEY( 122 ),
641      DIKS_CUSTOM123                = DFB_CUSTOM_KEY( 123 ),
642      DIKS_CUSTOM124                = DFB_CUSTOM_KEY( 124 ),
643      DIKS_CUSTOM125                = DFB_CUSTOM_KEY( 125 ),
644      DIKS_CUSTOM126                = DFB_CUSTOM_KEY( 126 ),
645      DIKS_CUSTOM127                = DFB_CUSTOM_KEY( 127 ),
646      DIKS_CUSTOM128                = DFB_CUSTOM_KEY( 128 ),
647      DIKS_CUSTOM129                = DFB_CUSTOM_KEY( 129 ),
648      DIKS_CUSTOM130                = DFB_CUSTOM_KEY( 130 ),
649      DIKS_CUSTOM131                = DFB_CUSTOM_KEY( 131 ),
650      DIKS_CUSTOM132                = DFB_CUSTOM_KEY( 132 ),
651      DIKS_CUSTOM133                = DFB_CUSTOM_KEY( 133 ),
652      DIKS_CUSTOM134                = DFB_CUSTOM_KEY( 134 ),
653      DIKS_CUSTOM135                = DFB_CUSTOM_KEY( 135 ),
654      DIKS_CUSTOM136                = DFB_CUSTOM_KEY( 136 ),
655      DIKS_CUSTOM137                = DFB_CUSTOM_KEY( 137 ),
656      DIKS_CUSTOM138                = DFB_CUSTOM_KEY( 138 ),
657      DIKS_CUSTOM139                = DFB_CUSTOM_KEY( 139 ),
658      DIKS_CUSTOM140                = DFB_CUSTOM_KEY( 140 ),
659      DIKS_CUSTOM141                = DFB_CUSTOM_KEY( 141 ),
660      DIKS_CUSTOM142                = DFB_CUSTOM_KEY( 142 ),
661      DIKS_CUSTOM143                = DFB_CUSTOM_KEY( 143 ),
662      DIKS_CUSTOM144                = DFB_CUSTOM_KEY( 144 ),
663      DIKS_CUSTOM145                = DFB_CUSTOM_KEY( 145 ),
664      DIKS_CUSTOM146                = DFB_CUSTOM_KEY( 146 ),
665      DIKS_CUSTOM147                = DFB_CUSTOM_KEY( 147 ),
666      DIKS_CUSTOM148                = DFB_CUSTOM_KEY( 148 ),
667      DIKS_CUSTOM149                = DFB_CUSTOM_KEY( 149 ),
668      DIKS_CUSTOM150                = DFB_CUSTOM_KEY( 150 ),
669      DIKS_CUSTOM151                = DFB_CUSTOM_KEY( 151 ),
670      DIKS_CUSTOM152                = DFB_CUSTOM_KEY( 152 ),
671      DIKS_CUSTOM153                = DFB_CUSTOM_KEY( 153 ),
672      DIKS_CUSTOM154                = DFB_CUSTOM_KEY( 154 ),
673      DIKS_CUSTOM155                = DFB_CUSTOM_KEY( 155 ),
674      DIKS_CUSTOM156                = DFB_CUSTOM_KEY( 156 ),
675      DIKS_CUSTOM157                = DFB_CUSTOM_KEY( 157 ),
676      DIKS_CUSTOM158                = DFB_CUSTOM_KEY( 158 ),
677      DIKS_CUSTOM159                = DFB_CUSTOM_KEY( 159 ),
678      DIKS_CUSTOM160                = DFB_CUSTOM_KEY( 160 ),
679      DIKS_CUSTOM161                = DFB_CUSTOM_KEY( 161 ),
680      DIKS_CUSTOM162                = DFB_CUSTOM_KEY( 162 ),
681      DIKS_CUSTOM163                = DFB_CUSTOM_KEY( 163 ),
682      DIKS_CUSTOM164                = DFB_CUSTOM_KEY( 164 ),
683      DIKS_CUSTOM165                = DFB_CUSTOM_KEY( 165 ),
684      DIKS_CUSTOM166                = DFB_CUSTOM_KEY( 166 ),
685      DIKS_CUSTOM167                = DFB_CUSTOM_KEY( 167 ),
686      DIKS_CUSTOM168                = DFB_CUSTOM_KEY( 168 ),
687      DIKS_CUSTOM169                = DFB_CUSTOM_KEY( 169 ),
688      DIKS_CUSTOM170                = DFB_CUSTOM_KEY( 170 ),
689      DIKS_CUSTOM171                = DFB_CUSTOM_KEY( 171 ),
690      DIKS_CUSTOM172                = DFB_CUSTOM_KEY( 172 ),
691      DIKS_CUSTOM173                = DFB_CUSTOM_KEY( 173 ),
692      DIKS_CUSTOM174                = DFB_CUSTOM_KEY( 174 ),
693      DIKS_CUSTOM175                = DFB_CUSTOM_KEY( 175 ),
694      DIKS_CUSTOM176                = DFB_CUSTOM_KEY( 176 ),
695      DIKS_CUSTOM177                = DFB_CUSTOM_KEY( 177 ),
696      DIKS_CUSTOM178                = DFB_CUSTOM_KEY( 178 ),
697      DIKS_CUSTOM179                = DFB_CUSTOM_KEY( 179 ),
698      DIKS_CUSTOM180                = DFB_CUSTOM_KEY( 180 ),
699      DIKS_CUSTOM181                = DFB_CUSTOM_KEY( 181 ),
700      DIKS_CUSTOM182                = DFB_CUSTOM_KEY( 182 ),
701      DIKS_CUSTOM183                = DFB_CUSTOM_KEY( 183 ),
702      DIKS_CUSTOM184                = DFB_CUSTOM_KEY( 184 ),
703      DIKS_CUSTOM185                = DFB_CUSTOM_KEY( 185 ),
704      DIKS_CUSTOM186                = DFB_CUSTOM_KEY( 186 ),
705      DIKS_CUSTOM187                = DFB_CUSTOM_KEY( 187 ),
706      DIKS_CUSTOM188                = DFB_CUSTOM_KEY( 188 ),
707      DIKS_CUSTOM189                = DFB_CUSTOM_KEY( 189 ),
708      DIKS_CUSTOM190                = DFB_CUSTOM_KEY( 190 ),
709      DIKS_CUSTOM191                = DFB_CUSTOM_KEY( 191 ),
710      DIKS_CUSTOM192                = DFB_CUSTOM_KEY( 192 ),
711      DIKS_CUSTOM193                = DFB_CUSTOM_KEY( 193 ),
712      DIKS_CUSTOM194                = DFB_CUSTOM_KEY( 194 ),
713      DIKS_CUSTOM195                = DFB_CUSTOM_KEY( 195 ),
714      DIKS_CUSTOM196                = DFB_CUSTOM_KEY( 196 ),
715      DIKS_CUSTOM197                = DFB_CUSTOM_KEY( 197 ),
716      DIKS_CUSTOM198                = DFB_CUSTOM_KEY( 198 ),
717      DIKS_CUSTOM199                = DFB_CUSTOM_KEY( 199 ),
718      DIKS_CUSTOM200                = DFB_CUSTOM_KEY( 200 ),
719      DIKS_CUSTOM201                = DFB_CUSTOM_KEY( 201 ),
720      DIKS_CUSTOM202                = DFB_CUSTOM_KEY( 202 ),
721      DIKS_CUSTOM203                = DFB_CUSTOM_KEY( 203 ),
722      DIKS_CUSTOM204                = DFB_CUSTOM_KEY( 204 ),
723      DIKS_CUSTOM205                = DFB_CUSTOM_KEY( 205 ),
724      DIKS_CUSTOM206                = DFB_CUSTOM_KEY( 206 ),
725      DIKS_CUSTOM207                = DFB_CUSTOM_KEY( 207 ),
726      DIKS_CUSTOM208                = DFB_CUSTOM_KEY( 208 ),
727      DIKS_CUSTOM209                = DFB_CUSTOM_KEY( 209 ),
728      DIKS_CUSTOM210                = DFB_CUSTOM_KEY( 210 ),
729      DIKS_CUSTOM211                = DFB_CUSTOM_KEY( 211 ),
730      DIKS_CUSTOM212                = DFB_CUSTOM_KEY( 212 ),
731      DIKS_CUSTOM213                = DFB_CUSTOM_KEY( 213 ),
732      DIKS_CUSTOM214                = DFB_CUSTOM_KEY( 214 ),
733      DIKS_CUSTOM215                = DFB_CUSTOM_KEY( 215 ),
734      DIKS_CUSTOM216                = DFB_CUSTOM_KEY( 216 ),
735      DIKS_CUSTOM217                = DFB_CUSTOM_KEY( 217 ),
736      DIKS_CUSTOM218                = DFB_CUSTOM_KEY( 218 ),
737      DIKS_CUSTOM219                = DFB_CUSTOM_KEY( 219 ),
738      DIKS_CUSTOM220                = DFB_CUSTOM_KEY( 220 ),
739      DIKS_CUSTOM221                = DFB_CUSTOM_KEY( 221 ),
740      DIKS_CUSTOM222                = DFB_CUSTOM_KEY( 222 ),
741      DIKS_CUSTOM223                = DFB_CUSTOM_KEY( 223 ),
742      DIKS_CUSTOM224                = DFB_CUSTOM_KEY( 224 ),
743      DIKS_CUSTOM225                = DFB_CUSTOM_KEY( 225 ),
744      DIKS_CUSTOM226                = DFB_CUSTOM_KEY( 226 ),
745      DIKS_CUSTOM227                = DFB_CUSTOM_KEY( 227 ),
746      DIKS_CUSTOM228                = DFB_CUSTOM_KEY( 228 ),
747      DIKS_CUSTOM229                = DFB_CUSTOM_KEY( 229 ),
748      DIKS_CUSTOM230                = DFB_CUSTOM_KEY( 230 ),
749      DIKS_CUSTOM231                = DFB_CUSTOM_KEY( 231 ),
750      DIKS_CUSTOM232                = DFB_CUSTOM_KEY( 232 ),
751      DIKS_CUSTOM233                = DFB_CUSTOM_KEY( 233 ),
752      DIKS_CUSTOM234                = DFB_CUSTOM_KEY( 234 ),
753      DIKS_CUSTOM235                = DFB_CUSTOM_KEY( 235 ),
754      DIKS_CUSTOM236                = DFB_CUSTOM_KEY( 236 ),
755      DIKS_CUSTOM237                = DFB_CUSTOM_KEY( 237 ),
756      DIKS_CUSTOM238                = DFB_CUSTOM_KEY( 238 ),
757      DIKS_CUSTOM239                = DFB_CUSTOM_KEY( 239 ),
758      DIKS_CUSTOM240                = DFB_CUSTOM_KEY( 240 ),
759      DIKS_CUSTOM241                = DFB_CUSTOM_KEY( 241 ),
760      DIKS_CUSTOM242                = DFB_CUSTOM_KEY( 242 ),
761      DIKS_CUSTOM243                = DFB_CUSTOM_KEY( 243 ),
762      DIKS_CUSTOM244                = DFB_CUSTOM_KEY( 244 ),
763      DIKS_CUSTOM245                = DFB_CUSTOM_KEY( 245 ),
764      DIKS_CUSTOM246                = DFB_CUSTOM_KEY( 246 ),
765      DIKS_CUSTOM247                = DFB_CUSTOM_KEY( 247 ),
766      DIKS_CUSTOM248                = DFB_CUSTOM_KEY( 248 ),
767      DIKS_CUSTOM249                = DFB_CUSTOM_KEY( 249 ),
768      DIKS_CUSTOM250                = DFB_CUSTOM_KEY( 250 ),
769      DIKS_CUSTOM251                = DFB_CUSTOM_KEY( 251 ),
770      DIKS_CUSTOM252                = DFB_CUSTOM_KEY( 252 ),
771      DIKS_CUSTOM253                = DFB_CUSTOM_KEY( 253 ),
772      DIKS_CUSTOM254                = DFB_CUSTOM_KEY( 254 ),
773      DIKS_CUSTOM255                = DFB_CUSTOM_KEY( 255 )
774 } DFBInputDeviceKeySymbol;
775 
776 /*
777  * Flags specifying the key locks that are currently active.
778  */
779 typedef enum {
780      DILS_SCROLL         = 0x00000001,  /* scroll-lock active? */
781      DILS_NUM            = 0x00000002,  /* num-lock active? */
782      DILS_CAPS           = 0x00000004   /* caps-lock active? */
783 } DFBInputDeviceLockState;
784 
785 /*
786  * Groups and levels as an index to the symbol array.
787  */
788 typedef enum {
789      DIKSI_BASE          = 0x00,   /* base group, base level
790                                       (no modifier pressed) */
791      DIKSI_BASE_SHIFT    = 0x01,   /* base group, shifted level
792                                       (with Shift pressed) */
793      DIKSI_ALT           = 0x02,   /* alternative group, base level
794                                       (with AltGr pressed) */
795      DIKSI_ALT_SHIFT     = 0x03,   /* alternative group, shifted level
796                                       (with AltGr and Shift pressed) */
797 
798      DIKSI_LAST          = DIKSI_ALT_SHIFT
799 } DFBInputDeviceKeymapSymbolIndex;
800 
801 /*
802  * One entry in the keymap of an input device.
803  */
804 typedef struct {
805      int                         code;                  /* hardware
806                                                            key code */
807      DFBInputDeviceLockState     locks;                 /* locks activating
808                                                            shifted level */
809      DFBInputDeviceKeyIdentifier identifier;            /* basic mapping */
810      DFBInputDeviceKeySymbol     symbols[DIKSI_LAST+1]; /* advanced key
811                                                            mapping */
812 } DFBInputDeviceKeymapEntry;
813 
814 
815 #ifdef __cplusplus
816 }
817 #endif
818 
819 #endif
820 
821