~canonical-dx-team/ubuntu/maverick/gtk+2.0/menuproxy

« back to all changes in this revision

Viewing changes to gdk/directfb/gdkkeys-directfb.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2007-05-04 12:24:25 UTC
  • mfrom: (1.1.21 upstream)
  • Revision ID: james.westby@ubuntu.com-20070504122425-0m8midgzrp40y8w2
Tags: 2.10.12-1ubuntu1
* Sync with Debian
* New upstream version:
  Fixed bugs:
  - 379414 file chooser warnings when changing path in the entry
  - 418585 GtkFileChooserDefault sizing code is not DPI independent
  - 419568 Crash in search if start with special letter
  - 435062 build dies with icon cache validation
  - 379399 Segfault to call gtk_print_operation_run twice.
  - 387889 cups backend has problems when there are too many printers
  - 418531 invalid read to gtkicontheme.c gtk_icon_theme_lookup_icon...
  - 423916 crash in color scheme code
  - 424042 Segmentation fault while quickly pressing Alt+arrows
  - 415260 Protect against negative indices when setting values in G...
  - 419171 XGetVisualInfo() may not set nxvisuals
  - 128852 Gdk cursors don't look good on win32
  - 344657 Ctrl-H doesn't toggle "Show Hidden Files" setting
  - 345345 PrintOperation::paginate is not emitted for class handler
  - 347567 GtkPrintOperation::end-print is not emitted if it's cance...
  - 369112 gtk_ui_manager_add_ui should accept unnamed separator
  - 392015 Selected menu item invisible on Windows Vista
  - 399253 MS-Windows Theme Bottom Tab placement rendering glitches
  - 399425 gtk_input_dialog_fill_axes() adds child to gtkscrolledwin...
  - 403251 [patch] little memory leak in GtkPrintJob
  - 403267 [patch] memory leak in GtkPageSetupUnixDialog
  - 403470 MS-Windows Theme tab placement other than on top leaks a ...
  - 404506 Windows system fonts that have multi-byte font names cann...
  - 405089 Incorrect window placement for GtkEventBox private window
  - 405515 Minor leak in gtkfilesystemmodel.c
  - 405539 gdk_pixbuf_save() for PNG saver can return FALSE without ...
  - 415681 gdk_window_clear_area includes an extra line and column o...
  - 418219 GtkRecentChooser should apply filter before sorting and c...
  - 418403 Scroll to printer after selecting it from settings
  - 421985 _gtk_print_operation_platform_backend_launch_preview
  - 421990 gtk_print_job_get_surface
  - 421993 gtk_print_operation_init
  - 423064 Conditional jump or move depends on uninitialised value(s...
  - 423722 Fix printing header in gtk-demo
  - 424168 gtk_print_operation_run on async preview
  - 425655 Don't install gtk+-unix-print-2.0.pc on non-UNIX platforms
  - 425786 GDK segfaults if XineramaQueryScreens fails
  - 428665 Lpr Backend gets stuck in infinite loop during gtk_enumer...
  - 429902 GtkPrintOperation leaks cairo contextes
  - 431997 First delay of GdkPixbufAnimationIter is wrong
  - 433242 Inconsistent scroll arrow position calculations
  - 433972 Placing gtk.Expander inside a gtk.TextView() changes gtk....
  - 434261 _gtk_toolbar_elide_underscores incorrectly handles some s...
  - 383354 ctrl-L should make 'Location' entry disappear
  - 418673 gtk_recent_manager_add_item
  - 429732 gtk_accel_group_finalize accesses invalid memory
  - 435028 WM_CLIENT_LEADER is wrong on the leader_window
  - 431067 Background of the header window is not updated
  - 338843 add recent files support inside the ui manager
  - 148535 add drop shadow to menus, tooltips, etc. under Windows XP
* debian/control.in:
  - Conflicts on ubuntulooks (<= 0.9.11-1)
* debian/patches/15_default-fallback-icon-theme.patch:
  - patch from Debian, fallback on gnome icon theme

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* GDK - The GIMP Drawing Kit
 
2
 * Copyright (C) 2000 Red Hat, Inc.
 
3
 *
 
4
 * This library is free software; you can redistribute it and/or
 
5
 * modify it under the terms of the GNU Lesser General Public
 
6
 * License as published by the Free Software Foundation; either
 
7
 * version 2 of the License, or (at your option) any later version.
 
8
 *
 
9
 * This library is distributed in the hope that it will be useful,
 
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
 * Lesser General Public License for more details.
 
13
 *
 
14
 * You should have received a copy of the GNU Lesser General Public
 
15
 * License along with this library; if not, write to the
 
16
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 
17
 * Boston, MA 02111-1307, USA.
 
18
 */
 
19
 
 
20
/*
 
21
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
 
22
 * file for a list of people on the GTK+ Team.
 
23
 */
 
24
 
 
25
/*
 
26
 * GTK+ DirectFB backend
 
27
 * Copyright (C) 2001-2002  convergence integrated media GmbH
 
28
 * Copyright (C) 2002       convergence GmbH
 
29
 * Written by Denis Oliver Kropp <dok@convergence.de> and
 
30
 *            Sven Neumann <sven@convergence.de>
 
31
 */
 
32
 
 
33
#include <config.h>
 
34
#include "gdk.h"
 
35
 
 
36
#include <stdlib.h>
 
37
#include <string.h>
 
38
 
 
39
 
 
40
#include "gdkdirectfb.h"
 
41
#include "gdkprivate-directfb.h"
 
42
 
 
43
#include "gdkkeysyms.h"
 
44
#include "gdkalias.h"
 
45
 
 
46
static struct gdk_key *gdk_keys_by_name = NULL;
 
47
 
 
48
GdkModifierType  _gdk_directfb_modifiers = 0;
 
49
 
 
50
static guint     *directfb_keymap        = NULL;
 
51
static gint       directfb_min_keycode   = 0;
 
52
static gint       directfb_max_keycode   = 0;
 
53
 
 
54
 
 
55
/* 
 
56
 *  This array needs to be sorted by key values. It can be generated
 
57
 *  from gdkkeysyms.h using a few lines of Perl. This is a bit more
 
58
 *  complex as one would expect since GDK defines multiple names for a
 
59
 *  few key values. We throw the most akward of them away (GDK_Ln and
 
60
 *  GDK_Rn).  This code seems to do the trick:
 
61
 *
 
62
 *      while (<>) {
 
63
 *          if (/^\#define GDK\_(\w+) 0x([0-9|a-f|A-F|]+)/) {
 
64
 *              push @{ $names{hex $2} }, $1;
 
65
 *          }
 
66
 *      }
 
67
 *      foreach $value (sort { $a <=> $b } keys %names) {
 
68
 *          for (@{ $names{$value} } ) {
 
69
 *              next if (/^[R|L]\d+/);
 
70
 *              print "  { GDK_$_, \"$_\" },\n";
 
71
 *          }
 
72
 *      }
 
73
 */
 
74
static const struct gdk_key
 
75
{
 
76
  guint        keyval;
 
77
  const gchar *name;
 
78
} gdk_keys_by_keyval[] = {
 
79
  { GDK_space, "space" },
 
80
  { GDK_exclam, "exclam" },
 
81
  { GDK_quotedbl, "quotedbl" },
 
82
  { GDK_numbersign, "numbersign" },
 
83
  { GDK_dollar, "dollar" },
 
84
  { GDK_percent, "percent" },
 
85
  { GDK_ampersand, "ampersand" },
 
86
  { GDK_apostrophe, "apostrophe" },
 
87
  { GDK_quoteright, "quoteright" },
 
88
  { GDK_parenleft, "parenleft" },
 
89
  { GDK_parenright, "parenright" },
 
90
  { GDK_asterisk, "asterisk" },
 
91
  { GDK_plus, "plus" },
 
92
  { GDK_comma, "comma" },
 
93
  { GDK_minus, "minus" },
 
94
  { GDK_period, "period" },
 
95
  { GDK_slash, "slash" },
 
96
  { GDK_0, "0" },
 
97
  { GDK_1, "1" },
 
98
  { GDK_2, "2" },
 
99
  { GDK_3, "3" },
 
100
  { GDK_4, "4" },
 
101
  { GDK_5, "5" },
 
102
  { GDK_6, "6" },
 
103
  { GDK_7, "7" },
 
104
  { GDK_8, "8" },
 
105
  { GDK_9, "9" },
 
106
  { GDK_colon, "colon" },
 
107
  { GDK_semicolon, "semicolon" },
 
108
  { GDK_less, "less" },
 
109
  { GDK_equal, "equal" },
 
110
  { GDK_greater, "greater" },
 
111
  { GDK_question, "question" },
 
112
  { GDK_at, "at" },
 
113
  { GDK_A, "A" },
 
114
  { GDK_B, "B" },
 
115
  { GDK_C, "C" },
 
116
  { GDK_D, "D" },
 
117
  { GDK_E, "E" },
 
118
  { GDK_F, "F" },
 
119
  { GDK_G, "G" },
 
120
  { GDK_H, "H" },
 
121
  { GDK_I, "I" },
 
122
  { GDK_J, "J" },
 
123
  { GDK_K, "K" },
 
124
  { GDK_L, "L" },
 
125
  { GDK_M, "M" },
 
126
  { GDK_N, "N" },
 
127
  { GDK_O, "O" },
 
128
  { GDK_P, "P" },
 
129
  { GDK_Q, "Q" },
 
130
  { GDK_R, "R" },
 
131
  { GDK_S, "S" },
 
132
  { GDK_T, "T" },
 
133
  { GDK_U, "U" },
 
134
  { GDK_V, "V" },
 
135
  { GDK_W, "W" },
 
136
  { GDK_X, "X" },
 
137
  { GDK_Y, "Y" },
 
138
  { GDK_Z, "Z" },
 
139
  { GDK_bracketleft, "bracketleft" },
 
140
  { GDK_backslash, "backslash" },
 
141
  { GDK_bracketright, "bracketright" },
 
142
  { GDK_asciicircum, "asciicircum" },
 
143
  { GDK_underscore, "underscore" },
 
144
  { GDK_grave, "grave" },
 
145
  { GDK_quoteleft, "quoteleft" },
 
146
  { GDK_a, "a" },
 
147
  { GDK_b, "b" },
 
148
  { GDK_c, "c" },
 
149
  { GDK_d, "d" },
 
150
  { GDK_e, "e" },
 
151
  { GDK_f, "f" },
 
152
  { GDK_g, "g" },
 
153
  { GDK_h, "h" },
 
154
  { GDK_i, "i" },
 
155
  { GDK_j, "j" },
 
156
  { GDK_k, "k" },
 
157
  { GDK_l, "l" },
 
158
  { GDK_m, "m" },
 
159
  { GDK_n, "n" },
 
160
  { GDK_o, "o" },
 
161
  { GDK_p, "p" },
 
162
  { GDK_q, "q" },
 
163
  { GDK_r, "r" },
 
164
  { GDK_s, "s" },
 
165
  { GDK_t, "t" },
 
166
  { GDK_u, "u" },
 
167
  { GDK_v, "v" },
 
168
  { GDK_w, "w" },
 
169
  { GDK_x, "x" },
 
170
  { GDK_y, "y" },
 
171
  { GDK_z, "z" },
 
172
  { GDK_braceleft, "braceleft" },
 
173
  { GDK_bar, "bar" },
 
174
  { GDK_braceright, "braceright" },
 
175
  { GDK_asciitilde, "asciitilde" },
 
176
  { GDK_nobreakspace, "nobreakspace" },
 
177
  { GDK_exclamdown, "exclamdown" },
 
178
  { GDK_cent, "cent" },
 
179
  { GDK_sterling, "sterling" },
 
180
  { GDK_currency, "currency" },
 
181
  { GDK_yen, "yen" },
 
182
  { GDK_brokenbar, "brokenbar" },
 
183
  { GDK_section, "section" },
 
184
  { GDK_diaeresis, "diaeresis" },
 
185
  { GDK_copyright, "copyright" },
 
186
  { GDK_ordfeminine, "ordfeminine" },
 
187
  { GDK_guillemotleft, "guillemotleft" },
 
188
  { GDK_notsign, "notsign" },
 
189
  { GDK_hyphen, "hyphen" },
 
190
  { GDK_registered, "registered" },
 
191
  { GDK_macron, "macron" },
 
192
  { GDK_degree, "degree" },
 
193
  { GDK_plusminus, "plusminus" },
 
194
  { GDK_twosuperior, "twosuperior" },
 
195
  { GDK_threesuperior, "threesuperior" },
 
196
  { GDK_acute, "acute" },
 
197
  { GDK_mu, "mu" },
 
198
  { GDK_paragraph, "paragraph" },
 
199
  { GDK_periodcentered, "periodcentered" },
 
200
  { GDK_cedilla, "cedilla" },
 
201
  { GDK_onesuperior, "onesuperior" },
 
202
  { GDK_masculine, "masculine" },
 
203
  { GDK_guillemotright, "guillemotright" },
 
204
  { GDK_onequarter, "onequarter" },
 
205
  { GDK_onehalf, "onehalf" },
 
206
  { GDK_threequarters, "threequarters" },
 
207
  { GDK_questiondown, "questiondown" },
 
208
  { GDK_Agrave, "Agrave" },
 
209
  { GDK_Aacute, "Aacute" },
 
210
  { GDK_Acircumflex, "Acircumflex" },
 
211
  { GDK_Atilde, "Atilde" },
 
212
  { GDK_Adiaeresis, "Adiaeresis" },
 
213
  { GDK_Aring, "Aring" },
 
214
  { GDK_AE, "AE" },
 
215
  { GDK_Ccedilla, "Ccedilla" },
 
216
  { GDK_Egrave, "Egrave" },
 
217
  { GDK_Eacute, "Eacute" },
 
218
  { GDK_Ecircumflex, "Ecircumflex" },
 
219
  { GDK_Ediaeresis, "Ediaeresis" },
 
220
  { GDK_Igrave, "Igrave" },
 
221
  { GDK_Iacute, "Iacute" },
 
222
  { GDK_Icircumflex, "Icircumflex" },
 
223
  { GDK_Idiaeresis, "Idiaeresis" },
 
224
  { GDK_ETH, "ETH" },
 
225
  { GDK_Eth, "Eth" },
 
226
  { GDK_Ntilde, "Ntilde" },
 
227
  { GDK_Ograve, "Ograve" },
 
228
  { GDK_Oacute, "Oacute" },
 
229
  { GDK_Ocircumflex, "Ocircumflex" },
 
230
  { GDK_Otilde, "Otilde" },
 
231
  { GDK_Odiaeresis, "Odiaeresis" },
 
232
  { GDK_multiply, "multiply" },
 
233
  { GDK_Ooblique, "Ooblique" },
 
234
  { GDK_Ugrave, "Ugrave" },
 
235
  { GDK_Uacute, "Uacute" },
 
236
  { GDK_Ucircumflex, "Ucircumflex" },
 
237
  { GDK_Udiaeresis, "Udiaeresis" },
 
238
  { GDK_Yacute, "Yacute" },
 
239
  { GDK_THORN, "THORN" },
 
240
  { GDK_Thorn, "Thorn" },
 
241
  { GDK_ssharp, "ssharp" },
 
242
  { GDK_agrave, "agrave" },
 
243
  { GDK_aacute, "aacute" },
 
244
  { GDK_acircumflex, "acircumflex" },
 
245
  { GDK_atilde, "atilde" },
 
246
  { GDK_adiaeresis, "adiaeresis" },
 
247
  { GDK_aring, "aring" },
 
248
  { GDK_ae, "ae" },
 
249
  { GDK_ccedilla, "ccedilla" },
 
250
  { GDK_egrave, "egrave" },
 
251
  { GDK_eacute, "eacute" },
 
252
  { GDK_ecircumflex, "ecircumflex" },
 
253
  { GDK_ediaeresis, "ediaeresis" },
 
254
  { GDK_igrave, "igrave" },
 
255
  { GDK_iacute, "iacute" },
 
256
  { GDK_icircumflex, "icircumflex" },
 
257
  { GDK_idiaeresis, "idiaeresis" },
 
258
  { GDK_eth, "eth" },
 
259
  { GDK_ntilde, "ntilde" },
 
260
  { GDK_ograve, "ograve" },
 
261
  { GDK_oacute, "oacute" },
 
262
  { GDK_ocircumflex, "ocircumflex" },
 
263
  { GDK_otilde, "otilde" },
 
264
  { GDK_odiaeresis, "odiaeresis" },
 
265
  { GDK_division, "division" },
 
266
  { GDK_oslash, "oslash" },
 
267
  { GDK_ugrave, "ugrave" },
 
268
  { GDK_uacute, "uacute" },
 
269
  { GDK_ucircumflex, "ucircumflex" },
 
270
  { GDK_udiaeresis, "udiaeresis" },
 
271
  { GDK_yacute, "yacute" },
 
272
  { GDK_thorn, "thorn" },
 
273
  { GDK_ydiaeresis, "ydiaeresis" },
 
274
  { GDK_Aogonek, "Aogonek" },
 
275
  { GDK_breve, "breve" },
 
276
  { GDK_Lstroke, "Lstroke" },
 
277
  { GDK_Lcaron, "Lcaron" },
 
278
  { GDK_Sacute, "Sacute" },
 
279
  { GDK_Scaron, "Scaron" },
 
280
  { GDK_Scedilla, "Scedilla" },
 
281
  { GDK_Tcaron, "Tcaron" },
 
282
  { GDK_Zacute, "Zacute" },
 
283
  { GDK_Zcaron, "Zcaron" },
 
284
  { GDK_Zabovedot, "Zabovedot" },
 
285
  { GDK_aogonek, "aogonek" },
 
286
  { GDK_ogonek, "ogonek" },
 
287
  { GDK_lstroke, "lstroke" },
 
288
  { GDK_lcaron, "lcaron" },
 
289
  { GDK_sacute, "sacute" },
 
290
  { GDK_caron, "caron" },
 
291
  { GDK_scaron, "scaron" },
 
292
  { GDK_scedilla, "scedilla" },
 
293
  { GDK_tcaron, "tcaron" },
 
294
  { GDK_zacute, "zacute" },
 
295
  { GDK_doubleacute, "doubleacute" },
 
296
  { GDK_zcaron, "zcaron" },
 
297
  { GDK_zabovedot, "zabovedot" },
 
298
  { GDK_Racute, "Racute" },
 
299
  { GDK_Abreve, "Abreve" },
 
300
  { GDK_Lacute, "Lacute" },
 
301
  { GDK_Cacute, "Cacute" },
 
302
  { GDK_Ccaron, "Ccaron" },
 
303
  { GDK_Eogonek, "Eogonek" },
 
304
  { GDK_Ecaron, "Ecaron" },
 
305
  { GDK_Dcaron, "Dcaron" },
 
306
  { GDK_Dstroke, "Dstroke" },
 
307
  { GDK_Nacute, "Nacute" },
 
308
  { GDK_Ncaron, "Ncaron" },
 
309
  { GDK_Odoubleacute, "Odoubleacute" },
 
310
  { GDK_Rcaron, "Rcaron" },
 
311
  { GDK_Uring, "Uring" },
 
312
  { GDK_Udoubleacute, "Udoubleacute" },
 
313
  { GDK_Tcedilla, "Tcedilla" },
 
314
  { GDK_racute, "racute" },
 
315
  { GDK_abreve, "abreve" },
 
316
  { GDK_lacute, "lacute" },
 
317
  { GDK_cacute, "cacute" },
 
318
  { GDK_ccaron, "ccaron" },
 
319
  { GDK_eogonek, "eogonek" },
 
320
  { GDK_ecaron, "ecaron" },
 
321
  { GDK_dcaron, "dcaron" },
 
322
  { GDK_dstroke, "dstroke" },
 
323
  { GDK_nacute, "nacute" },
 
324
  { GDK_ncaron, "ncaron" },
 
325
  { GDK_odoubleacute, "odoubleacute" },
 
326
  { GDK_rcaron, "rcaron" },
 
327
  { GDK_uring, "uring" },
 
328
  { GDK_udoubleacute, "udoubleacute" },
 
329
  { GDK_tcedilla, "tcedilla" },
 
330
  { GDK_abovedot, "abovedot" },
 
331
  { GDK_Hstroke, "Hstroke" },
 
332
  { GDK_Hcircumflex, "Hcircumflex" },
 
333
  { GDK_Iabovedot, "Iabovedot" },
 
334
  { GDK_Gbreve, "Gbreve" },
 
335
  { GDK_Jcircumflex, "Jcircumflex" },
 
336
  { GDK_hstroke, "hstroke" },
 
337
  { GDK_hcircumflex, "hcircumflex" },
 
338
  { GDK_idotless, "idotless" },
 
339
  { GDK_gbreve, "gbreve" },
 
340
  { GDK_jcircumflex, "jcircumflex" },
 
341
  { GDK_Cabovedot, "Cabovedot" },
 
342
  { GDK_Ccircumflex, "Ccircumflex" },
 
343
  { GDK_Gabovedot, "Gabovedot" },
 
344
  { GDK_Gcircumflex, "Gcircumflex" },
 
345
  { GDK_Ubreve, "Ubreve" },
 
346
  { GDK_Scircumflex, "Scircumflex" },
 
347
  { GDK_cabovedot, "cabovedot" },
 
348
  { GDK_ccircumflex, "ccircumflex" },
 
349
  { GDK_gabovedot, "gabovedot" },
 
350
  { GDK_gcircumflex, "gcircumflex" },
 
351
  { GDK_ubreve, "ubreve" },
 
352
  { GDK_scircumflex, "scircumflex" },
 
353
  { GDK_kra, "kra" },
 
354
  { GDK_kappa, "kappa" },
 
355
  { GDK_Rcedilla, "Rcedilla" },
 
356
  { GDK_Itilde, "Itilde" },
 
357
  { GDK_Lcedilla, "Lcedilla" },
 
358
  { GDK_Emacron, "Emacron" },
 
359
  { GDK_Gcedilla, "Gcedilla" },
 
360
  { GDK_Tslash, "Tslash" },
 
361
  { GDK_rcedilla, "rcedilla" },
 
362
  { GDK_itilde, "itilde" },
 
363
  { GDK_lcedilla, "lcedilla" },
 
364
  { GDK_emacron, "emacron" },
 
365
  { GDK_gcedilla, "gcedilla" },
 
366
  { GDK_tslash, "tslash" },
 
367
  { GDK_ENG, "ENG" },
 
368
  { GDK_eng, "eng" },
 
369
  { GDK_Amacron, "Amacron" },
 
370
  { GDK_Iogonek, "Iogonek" },
 
371
  { GDK_Eabovedot, "Eabovedot" },
 
372
  { GDK_Imacron, "Imacron" },
 
373
  { GDK_Ncedilla, "Ncedilla" },
 
374
  { GDK_Omacron, "Omacron" },
 
375
  { GDK_Kcedilla, "Kcedilla" },
 
376
  { GDK_Uogonek, "Uogonek" },
 
377
  { GDK_Utilde, "Utilde" },
 
378
  { GDK_Umacron, "Umacron" },
 
379
  { GDK_amacron, "amacron" },
 
380
  { GDK_iogonek, "iogonek" },
 
381
  { GDK_eabovedot, "eabovedot" },
 
382
  { GDK_imacron, "imacron" },
 
383
  { GDK_ncedilla, "ncedilla" },
 
384
  { GDK_omacron, "omacron" },
 
385
  { GDK_kcedilla, "kcedilla" },
 
386
  { GDK_uogonek, "uogonek" },
 
387
  { GDK_utilde, "utilde" },
 
388
  { GDK_umacron, "umacron" },
 
389
  { GDK_overline, "overline" },
 
390
  { GDK_kana_fullstop, "kana_fullstop" },
 
391
  { GDK_kana_openingbracket, "kana_openingbracket" },
 
392
  { GDK_kana_closingbracket, "kana_closingbracket" },
 
393
  { GDK_kana_comma, "kana_comma" },
 
394
  { GDK_kana_conjunctive, "kana_conjunctive" },
 
395
  { GDK_kana_middledot, "kana_middledot" },
 
396
  { GDK_kana_WO, "kana_WO" },
 
397
  { GDK_kana_a, "kana_a" },
 
398
  { GDK_kana_i, "kana_i" },
 
399
  { GDK_kana_u, "kana_u" },
 
400
  { GDK_kana_e, "kana_e" },
 
401
  { GDK_kana_o, "kana_o" },
 
402
  { GDK_kana_ya, "kana_ya" },
 
403
  { GDK_kana_yu, "kana_yu" },
 
404
  { GDK_kana_yo, "kana_yo" },
 
405
  { GDK_kana_tsu, "kana_tsu" },
 
406
  { GDK_kana_tu, "kana_tu" },
 
407
  { GDK_prolongedsound, "prolongedsound" },
 
408
  { GDK_kana_A, "kana_A" },
 
409
  { GDK_kana_I, "kana_I" },
 
410
  { GDK_kana_U, "kana_U" },
 
411
  { GDK_kana_E, "kana_E" },
 
412
  { GDK_kana_O, "kana_O" },
 
413
  { GDK_kana_KA, "kana_KA" },
 
414
  { GDK_kana_KI, "kana_KI" },
 
415
  { GDK_kana_KU, "kana_KU" },
 
416
  { GDK_kana_KE, "kana_KE" },
 
417
  { GDK_kana_KO, "kana_KO" },
 
418
  { GDK_kana_SA, "kana_SA" },
 
419
  { GDK_kana_SHI, "kana_SHI" },
 
420
  { GDK_kana_SU, "kana_SU" },
 
421
  { GDK_kana_SE, "kana_SE" },
 
422
  { GDK_kana_SO, "kana_SO" },
 
423
  { GDK_kana_TA, "kana_TA" },
 
424
  { GDK_kana_CHI, "kana_CHI" },
 
425
  { GDK_kana_TI, "kana_TI" },
 
426
  { GDK_kana_TSU, "kana_TSU" },
 
427
  { GDK_kana_TU, "kana_TU" },
 
428
  { GDK_kana_TE, "kana_TE" },
 
429
  { GDK_kana_TO, "kana_TO" },
 
430
  { GDK_kana_NA, "kana_NA" },
 
431
  { GDK_kana_NI, "kana_NI" },
 
432
  { GDK_kana_NU, "kana_NU" },
 
433
  { GDK_kana_NE, "kana_NE" },
 
434
  { GDK_kana_NO, "kana_NO" },
 
435
  { GDK_kana_HA, "kana_HA" },
 
436
  { GDK_kana_HI, "kana_HI" },
 
437
  { GDK_kana_FU, "kana_FU" },
 
438
  { GDK_kana_HU, "kana_HU" },
 
439
  { GDK_kana_HE, "kana_HE" },
 
440
  { GDK_kana_HO, "kana_HO" },
 
441
  { GDK_kana_MA, "kana_MA" },
 
442
  { GDK_kana_MI, "kana_MI" },
 
443
  { GDK_kana_MU, "kana_MU" },
 
444
  { GDK_kana_ME, "kana_ME" },
 
445
  { GDK_kana_MO, "kana_MO" },
 
446
  { GDK_kana_YA, "kana_YA" },
 
447
  { GDK_kana_YU, "kana_YU" },
 
448
  { GDK_kana_YO, "kana_YO" },
 
449
  { GDK_kana_RA, "kana_RA" },
 
450
  { GDK_kana_RI, "kana_RI" },
 
451
  { GDK_kana_RU, "kana_RU" },
 
452
  { GDK_kana_RE, "kana_RE" },
 
453
  { GDK_kana_RO, "kana_RO" },
 
454
  { GDK_kana_WA, "kana_WA" },
 
455
  { GDK_kana_N, "kana_N" },
 
456
  { GDK_voicedsound, "voicedsound" },
 
457
  { GDK_semivoicedsound, "semivoicedsound" },
 
458
  { GDK_Arabic_comma, "Arabic_comma" },
 
459
  { GDK_Arabic_semicolon, "Arabic_semicolon" },
 
460
  { GDK_Arabic_question_mark, "Arabic_question_mark" },
 
461
  { GDK_Arabic_hamza, "Arabic_hamza" },
 
462
  { GDK_Arabic_maddaonalef, "Arabic_maddaonalef" },
 
463
  { GDK_Arabic_hamzaonalef, "Arabic_hamzaonalef" },
 
464
  { GDK_Arabic_hamzaonwaw, "Arabic_hamzaonwaw" },
 
465
  { GDK_Arabic_hamzaunderalef, "Arabic_hamzaunderalef" },
 
466
  { GDK_Arabic_hamzaonyeh, "Arabic_hamzaonyeh" },
 
467
  { GDK_Arabic_alef, "Arabic_alef" },
 
468
  { GDK_Arabic_beh, "Arabic_beh" },
 
469
  { GDK_Arabic_tehmarbuta, "Arabic_tehmarbuta" },
 
470
  { GDK_Arabic_teh, "Arabic_teh" },
 
471
  { GDK_Arabic_theh, "Arabic_theh" },
 
472
  { GDK_Arabic_jeem, "Arabic_jeem" },
 
473
  { GDK_Arabic_hah, "Arabic_hah" },
 
474
  { GDK_Arabic_khah, "Arabic_khah" },
 
475
  { GDK_Arabic_dal, "Arabic_dal" },
 
476
  { GDK_Arabic_thal, "Arabic_thal" },
 
477
  { GDK_Arabic_ra, "Arabic_ra" },
 
478
  { GDK_Arabic_zain, "Arabic_zain" },
 
479
  { GDK_Arabic_seen, "Arabic_seen" },
 
480
  { GDK_Arabic_sheen, "Arabic_sheen" },
 
481
  { GDK_Arabic_sad, "Arabic_sad" },
 
482
  { GDK_Arabic_dad, "Arabic_dad" },
 
483
  { GDK_Arabic_tah, "Arabic_tah" },
 
484
  { GDK_Arabic_zah, "Arabic_zah" },
 
485
  { GDK_Arabic_ain, "Arabic_ain" },
 
486
  { GDK_Arabic_ghain, "Arabic_ghain" },
 
487
  { GDK_Arabic_tatweel, "Arabic_tatweel" },
 
488
  { GDK_Arabic_feh, "Arabic_feh" },
 
489
  { GDK_Arabic_qaf, "Arabic_qaf" },
 
490
  { GDK_Arabic_kaf, "Arabic_kaf" },
 
491
  { GDK_Arabic_lam, "Arabic_lam" },
 
492
  { GDK_Arabic_meem, "Arabic_meem" },
 
493
  { GDK_Arabic_noon, "Arabic_noon" },
 
494
  { GDK_Arabic_ha, "Arabic_ha" },
 
495
  { GDK_Arabic_heh, "Arabic_heh" },
 
496
  { GDK_Arabic_waw, "Arabic_waw" },
 
497
  { GDK_Arabic_alefmaksura, "Arabic_alefmaksura" },
 
498
  { GDK_Arabic_yeh, "Arabic_yeh" },
 
499
  { GDK_Arabic_fathatan, "Arabic_fathatan" },
 
500
  { GDK_Arabic_dammatan, "Arabic_dammatan" },
 
501
  { GDK_Arabic_kasratan, "Arabic_kasratan" },
 
502
  { GDK_Arabic_fatha, "Arabic_fatha" },
 
503
  { GDK_Arabic_damma, "Arabic_damma" },
 
504
  { GDK_Arabic_kasra, "Arabic_kasra" },
 
505
  { GDK_Arabic_shadda, "Arabic_shadda" },
 
506
  { GDK_Arabic_sukun, "Arabic_sukun" },
 
507
  { GDK_Serbian_dje, "Serbian_dje" },
 
508
  { GDK_Macedonia_gje, "Macedonia_gje" },
 
509
  { GDK_Cyrillic_io, "Cyrillic_io" },
 
510
  { GDK_Ukrainian_ie, "Ukrainian_ie" },
 
511
  { GDK_Ukranian_je, "Ukranian_je" },
 
512
  { GDK_Macedonia_dse, "Macedonia_dse" },
 
513
  { GDK_Ukrainian_i, "Ukrainian_i" },
 
514
  { GDK_Ukranian_i, "Ukranian_i" },
 
515
  { GDK_Ukrainian_yi, "Ukrainian_yi" },
 
516
  { GDK_Ukranian_yi, "Ukranian_yi" },
 
517
  { GDK_Cyrillic_je, "Cyrillic_je" },
 
518
  { GDK_Serbian_je, "Serbian_je" },
 
519
  { GDK_Cyrillic_lje, "Cyrillic_lje" },
 
520
  { GDK_Serbian_lje, "Serbian_lje" },
 
521
  { GDK_Cyrillic_nje, "Cyrillic_nje" },
 
522
  { GDK_Serbian_nje, "Serbian_nje" },
 
523
  { GDK_Serbian_tshe, "Serbian_tshe" },
 
524
  { GDK_Macedonia_kje, "Macedonia_kje" },
 
525
  { GDK_Byelorussian_shortu, "Byelorussian_shortu" },
 
526
  { GDK_Cyrillic_dzhe, "Cyrillic_dzhe" },
 
527
  { GDK_Serbian_dze, "Serbian_dze" },
 
528
  { GDK_numerosign, "numerosign" },
 
529
  { GDK_Serbian_DJE, "Serbian_DJE" },
 
530
  { GDK_Macedonia_GJE, "Macedonia_GJE" },
 
531
  { GDK_Cyrillic_IO, "Cyrillic_IO" },
 
532
  { GDK_Ukrainian_IE, "Ukrainian_IE" },
 
533
  { GDK_Ukranian_JE, "Ukranian_JE" },
 
534
  { GDK_Macedonia_DSE, "Macedonia_DSE" },
 
535
  { GDK_Ukrainian_I, "Ukrainian_I" },
 
536
  { GDK_Ukranian_I, "Ukranian_I" },
 
537
  { GDK_Ukrainian_YI, "Ukrainian_YI" },
 
538
  { GDK_Ukranian_YI, "Ukranian_YI" },
 
539
  { GDK_Cyrillic_JE, "Cyrillic_JE" },
 
540
  { GDK_Serbian_JE, "Serbian_JE" },
 
541
  { GDK_Cyrillic_LJE, "Cyrillic_LJE" },
 
542
  { GDK_Serbian_LJE, "Serbian_LJE" },
 
543
  { GDK_Cyrillic_NJE, "Cyrillic_NJE" },
 
544
  { GDK_Serbian_NJE, "Serbian_NJE" },
 
545
  { GDK_Serbian_TSHE, "Serbian_TSHE" },
 
546
  { GDK_Macedonia_KJE, "Macedonia_KJE" },
 
547
  { GDK_Byelorussian_SHORTU, "Byelorussian_SHORTU" },
 
548
  { GDK_Cyrillic_DZHE, "Cyrillic_DZHE" },
 
549
  { GDK_Serbian_DZE, "Serbian_DZE" },
 
550
  { GDK_Cyrillic_yu, "Cyrillic_yu" },
 
551
  { GDK_Cyrillic_a, "Cyrillic_a" },
 
552
  { GDK_Cyrillic_be, "Cyrillic_be" },
 
553
  { GDK_Cyrillic_tse, "Cyrillic_tse" },
 
554
  { GDK_Cyrillic_de, "Cyrillic_de" },
 
555
  { GDK_Cyrillic_ie, "Cyrillic_ie" },
 
556
  { GDK_Cyrillic_ef, "Cyrillic_ef" },
 
557
  { GDK_Cyrillic_ghe, "Cyrillic_ghe" },
 
558
  { GDK_Cyrillic_ha, "Cyrillic_ha" },
 
559
  { GDK_Cyrillic_i, "Cyrillic_i" },
 
560
  { GDK_Cyrillic_shorti, "Cyrillic_shorti" },
 
561
  { GDK_Cyrillic_ka, "Cyrillic_ka" },
 
562
  { GDK_Cyrillic_el, "Cyrillic_el" },
 
563
  { GDK_Cyrillic_em, "Cyrillic_em" },
 
564
  { GDK_Cyrillic_en, "Cyrillic_en" },
 
565
  { GDK_Cyrillic_o, "Cyrillic_o" },
 
566
  { GDK_Cyrillic_pe, "Cyrillic_pe" },
 
567
  { GDK_Cyrillic_ya, "Cyrillic_ya" },
 
568
  { GDK_Cyrillic_er, "Cyrillic_er" },
 
569
  { GDK_Cyrillic_es, "Cyrillic_es" },
 
570
  { GDK_Cyrillic_te, "Cyrillic_te" },
 
571
  { GDK_Cyrillic_u, "Cyrillic_u" },
 
572
  { GDK_Cyrillic_zhe, "Cyrillic_zhe" },
 
573
  { GDK_Cyrillic_ve, "Cyrillic_ve" },
 
574
  { GDK_Cyrillic_softsign, "Cyrillic_softsign" },
 
575
  { GDK_Cyrillic_yeru, "Cyrillic_yeru" },
 
576
  { GDK_Cyrillic_ze, "Cyrillic_ze" },
 
577
  { GDK_Cyrillic_sha, "Cyrillic_sha" },
 
578
  { GDK_Cyrillic_e, "Cyrillic_e" },
 
579
  { GDK_Cyrillic_shcha, "Cyrillic_shcha" },
 
580
  { GDK_Cyrillic_che, "Cyrillic_che" },
 
581
  { GDK_Cyrillic_hardsign, "Cyrillic_hardsign" },
 
582
  { GDK_Cyrillic_YU, "Cyrillic_YU" },
 
583
  { GDK_Cyrillic_A, "Cyrillic_A" },
 
584
  { GDK_Cyrillic_BE, "Cyrillic_BE" },
 
585
  { GDK_Cyrillic_TSE, "Cyrillic_TSE" },
 
586
  { GDK_Cyrillic_DE, "Cyrillic_DE" },
 
587
  { GDK_Cyrillic_IE, "Cyrillic_IE" },
 
588
  { GDK_Cyrillic_EF, "Cyrillic_EF" },
 
589
  { GDK_Cyrillic_GHE, "Cyrillic_GHE" },
 
590
  { GDK_Cyrillic_HA, "Cyrillic_HA" },
 
591
  { GDK_Cyrillic_I, "Cyrillic_I" },
 
592
  { GDK_Cyrillic_SHORTI, "Cyrillic_SHORTI" },
 
593
  { GDK_Cyrillic_KA, "Cyrillic_KA" },
 
594
  { GDK_Cyrillic_EL, "Cyrillic_EL" },
 
595
  { GDK_Cyrillic_EM, "Cyrillic_EM" },
 
596
  { GDK_Cyrillic_EN, "Cyrillic_EN" },
 
597
  { GDK_Cyrillic_O, "Cyrillic_O" },
 
598
  { GDK_Cyrillic_PE, "Cyrillic_PE" },
 
599
  { GDK_Cyrillic_YA, "Cyrillic_YA" },
 
600
  { GDK_Cyrillic_ER, "Cyrillic_ER" },
 
601
  { GDK_Cyrillic_ES, "Cyrillic_ES" },
 
602
  { GDK_Cyrillic_TE, "Cyrillic_TE" },
 
603
  { GDK_Cyrillic_U, "Cyrillic_U" },
 
604
  { GDK_Cyrillic_ZHE, "Cyrillic_ZHE" },
 
605
  { GDK_Cyrillic_VE, "Cyrillic_VE" },
 
606
  { GDK_Cyrillic_SOFTSIGN, "Cyrillic_SOFTSIGN" },
 
607
  { GDK_Cyrillic_YERU, "Cyrillic_YERU" },
 
608
  { GDK_Cyrillic_ZE, "Cyrillic_ZE" },
 
609
  { GDK_Cyrillic_SHA, "Cyrillic_SHA" },
 
610
  { GDK_Cyrillic_E, "Cyrillic_E" },
 
611
  { GDK_Cyrillic_SHCHA, "Cyrillic_SHCHA" },
 
612
  { GDK_Cyrillic_CHE, "Cyrillic_CHE" },
 
613
  { GDK_Cyrillic_HARDSIGN, "Cyrillic_HARDSIGN" },
 
614
  { GDK_Greek_ALPHAaccent, "Greek_ALPHAaccent" },
 
615
  { GDK_Greek_EPSILONaccent, "Greek_EPSILONaccent" },
 
616
  { GDK_Greek_ETAaccent, "Greek_ETAaccent" },
 
617
  { GDK_Greek_IOTAaccent, "Greek_IOTAaccent" },
 
618
  { GDK_Greek_IOTAdiaeresis, "Greek_IOTAdiaeresis" },
 
619
  { GDK_Greek_OMICRONaccent, "Greek_OMICRONaccent" },
 
620
  { GDK_Greek_UPSILONaccent, "Greek_UPSILONaccent" },
 
621
  { GDK_Greek_UPSILONdieresis, "Greek_UPSILONdieresis" },
 
622
  { GDK_Greek_OMEGAaccent, "Greek_OMEGAaccent" },
 
623
  { GDK_Greek_accentdieresis, "Greek_accentdieresis" },
 
624
  { GDK_Greek_horizbar, "Greek_horizbar" },
 
625
  { GDK_Greek_alphaaccent, "Greek_alphaaccent" },
 
626
  { GDK_Greek_epsilonaccent, "Greek_epsilonaccent" },
 
627
  { GDK_Greek_etaaccent, "Greek_etaaccent" },
 
628
  { GDK_Greek_iotaaccent, "Greek_iotaaccent" },
 
629
  { GDK_Greek_iotadieresis, "Greek_iotadieresis" },
 
630
  { GDK_Greek_iotaaccentdieresis, "Greek_iotaaccentdieresis" },
 
631
  { GDK_Greek_omicronaccent, "Greek_omicronaccent" },
 
632
  { GDK_Greek_upsilonaccent, "Greek_upsilonaccent" },
 
633
  { GDK_Greek_upsilondieresis, "Greek_upsilondieresis" },
 
634
  { GDK_Greek_upsilonaccentdieresis, "Greek_upsilonaccentdieresis" },
 
635
  { GDK_Greek_omegaaccent, "Greek_omegaaccent" },
 
636
  { GDK_Greek_ALPHA, "Greek_ALPHA" },
 
637
  { GDK_Greek_BETA, "Greek_BETA" },
 
638
  { GDK_Greek_GAMMA, "Greek_GAMMA" },
 
639
  { GDK_Greek_DELTA, "Greek_DELTA" },
 
640
  { GDK_Greek_EPSILON, "Greek_EPSILON" },
 
641
  { GDK_Greek_ZETA, "Greek_ZETA" },
 
642
  { GDK_Greek_ETA, "Greek_ETA" },
 
643
  { GDK_Greek_THETA, "Greek_THETA" },
 
644
  { GDK_Greek_IOTA, "Greek_IOTA" },
 
645
  { GDK_Greek_KAPPA, "Greek_KAPPA" },
 
646
  { GDK_Greek_LAMDA, "Greek_LAMDA" },
 
647
  { GDK_Greek_LAMBDA, "Greek_LAMBDA" },
 
648
  { GDK_Greek_MU, "Greek_MU" },
 
649
  { GDK_Greek_NU, "Greek_NU" },
 
650
  { GDK_Greek_XI, "Greek_XI" },
 
651
  { GDK_Greek_OMICRON, "Greek_OMICRON" },
 
652
  { GDK_Greek_PI, "Greek_PI" },
 
653
  { GDK_Greek_RHO, "Greek_RHO" },
 
654
  { GDK_Greek_SIGMA, "Greek_SIGMA" },
 
655
  { GDK_Greek_TAU, "Greek_TAU" },
 
656
  { GDK_Greek_UPSILON, "Greek_UPSILON" },
 
657
  { GDK_Greek_PHI, "Greek_PHI" },
 
658
  { GDK_Greek_CHI, "Greek_CHI" },
 
659
  { GDK_Greek_PSI, "Greek_PSI" },
 
660
  { GDK_Greek_OMEGA, "Greek_OMEGA" },
 
661
  { GDK_Greek_alpha, "Greek_alpha" },
 
662
  { GDK_Greek_beta, "Greek_beta" },
 
663
  { GDK_Greek_gamma, "Greek_gamma" },
 
664
  { GDK_Greek_delta, "Greek_delta" },
 
665
  { GDK_Greek_epsilon, "Greek_epsilon" },
 
666
  { GDK_Greek_zeta, "Greek_zeta" },
 
667
  { GDK_Greek_eta, "Greek_eta" },
 
668
  { GDK_Greek_theta, "Greek_theta" },
 
669
  { GDK_Greek_iota, "Greek_iota" },
 
670
  { GDK_Greek_kappa, "Greek_kappa" },
 
671
  { GDK_Greek_lamda, "Greek_lamda" },
 
672
  { GDK_Greek_lambda, "Greek_lambda" },
 
673
  { GDK_Greek_mu, "Greek_mu" },
 
674
  { GDK_Greek_nu, "Greek_nu" },
 
675
  { GDK_Greek_xi, "Greek_xi" },
 
676
  { GDK_Greek_omicron, "Greek_omicron" },
 
677
  { GDK_Greek_pi, "Greek_pi" },
 
678
  { GDK_Greek_rho, "Greek_rho" },
 
679
  { GDK_Greek_sigma, "Greek_sigma" },
 
680
  { GDK_Greek_finalsmallsigma, "Greek_finalsmallsigma" },
 
681
  { GDK_Greek_tau, "Greek_tau" },
 
682
  { GDK_Greek_upsilon, "Greek_upsilon" },
 
683
  { GDK_Greek_phi, "Greek_phi" },
 
684
  { GDK_Greek_chi, "Greek_chi" },
 
685
  { GDK_Greek_psi, "Greek_psi" },
 
686
  { GDK_Greek_omega, "Greek_omega" },
 
687
  { GDK_leftradical, "leftradical" },
 
688
  { GDK_topleftradical, "topleftradical" },
 
689
  { GDK_horizconnector, "horizconnector" },
 
690
  { GDK_topintegral, "topintegral" },
 
691
  { GDK_botintegral, "botintegral" },
 
692
  { GDK_vertconnector, "vertconnector" },
 
693
  { GDK_topleftsqbracket, "topleftsqbracket" },
 
694
  { GDK_botleftsqbracket, "botleftsqbracket" },
 
695
  { GDK_toprightsqbracket, "toprightsqbracket" },
 
696
  { GDK_botrightsqbracket, "botrightsqbracket" },
 
697
  { GDK_topleftparens, "topleftparens" },
 
698
  { GDK_botleftparens, "botleftparens" },
 
699
  { GDK_toprightparens, "toprightparens" },
 
700
  { GDK_botrightparens, "botrightparens" },
 
701
  { GDK_leftmiddlecurlybrace, "leftmiddlecurlybrace" },
 
702
  { GDK_rightmiddlecurlybrace, "rightmiddlecurlybrace" },
 
703
  { GDK_topleftsummation, "topleftsummation" },
 
704
  { GDK_botleftsummation, "botleftsummation" },
 
705
  { GDK_topvertsummationconnector, "topvertsummationconnector" },
 
706
  { GDK_botvertsummationconnector, "botvertsummationconnector" },
 
707
  { GDK_toprightsummation, "toprightsummation" },
 
708
  { GDK_botrightsummation, "botrightsummation" },
 
709
  { GDK_rightmiddlesummation, "rightmiddlesummation" },
 
710
  { GDK_lessthanequal, "lessthanequal" },
 
711
  { GDK_notequal, "notequal" },
 
712
  { GDK_greaterthanequal, "greaterthanequal" },
 
713
  { GDK_integral, "integral" },
 
714
  { GDK_therefore, "therefore" },
 
715
  { GDK_variation, "variation" },
 
716
  { GDK_infinity, "infinity" },
 
717
  { GDK_nabla, "nabla" },
 
718
  { GDK_approximate, "approximate" },
 
719
  { GDK_similarequal, "similarequal" },
 
720
  { GDK_ifonlyif, "ifonlyif" },
 
721
  { GDK_implies, "implies" },
 
722
  { GDK_identical, "identical" },
 
723
  { GDK_radical, "radical" },
 
724
  { GDK_includedin, "includedin" },
 
725
  { GDK_includes, "includes" },
 
726
  { GDK_intersection, "intersection" },
 
727
  { GDK_union, "union" },
 
728
  { GDK_logicaland, "logicaland" },
 
729
  { GDK_logicalor, "logicalor" },
 
730
  { GDK_partialderivative, "partialderivative" },
 
731
  { GDK_function, "function" },
 
732
  { GDK_leftarrow, "leftarrow" },
 
733
  { GDK_uparrow, "uparrow" },
 
734
  { GDK_rightarrow, "rightarrow" },
 
735
  { GDK_downarrow, "downarrow" },
 
736
  { GDK_blank, "blank" },
 
737
  { GDK_soliddiamond, "soliddiamond" },
 
738
  { GDK_checkerboard, "checkerboard" },
 
739
  { GDK_ht, "ht" },
 
740
  { GDK_ff, "ff" },
 
741
  { GDK_cr, "cr" },
 
742
  { GDK_lf, "lf" },
 
743
  { GDK_nl, "nl" },
 
744
  { GDK_vt, "vt" },
 
745
  { GDK_lowrightcorner, "lowrightcorner" },
 
746
  { GDK_uprightcorner, "uprightcorner" },
 
747
  { GDK_upleftcorner, "upleftcorner" },
 
748
  { GDK_lowleftcorner, "lowleftcorner" },
 
749
  { GDK_crossinglines, "crossinglines" },
 
750
  { GDK_horizlinescan1, "horizlinescan1" },
 
751
  { GDK_horizlinescan3, "horizlinescan3" },
 
752
  { GDK_horizlinescan5, "horizlinescan5" },
 
753
  { GDK_horizlinescan7, "horizlinescan7" },
 
754
  { GDK_horizlinescan9, "horizlinescan9" },
 
755
  { GDK_leftt, "leftt" },
 
756
  { GDK_rightt, "rightt" },
 
757
  { GDK_bott, "bott" },
 
758
  { GDK_topt, "topt" },
 
759
  { GDK_vertbar, "vertbar" },
 
760
  { GDK_emspace, "emspace" },
 
761
  { GDK_enspace, "enspace" },
 
762
  { GDK_em3space, "em3space" },
 
763
  { GDK_em4space, "em4space" },
 
764
  { GDK_digitspace, "digitspace" },
 
765
  { GDK_punctspace, "punctspace" },
 
766
  { GDK_thinspace, "thinspace" },
 
767
  { GDK_hairspace, "hairspace" },
 
768
  { GDK_emdash, "emdash" },
 
769
  { GDK_endash, "endash" },
 
770
  { GDK_signifblank, "signifblank" },
 
771
  { GDK_ellipsis, "ellipsis" },
 
772
  { GDK_doubbaselinedot, "doubbaselinedot" },
 
773
  { GDK_onethird, "onethird" },
 
774
  { GDK_twothirds, "twothirds" },
 
775
  { GDK_onefifth, "onefifth" },
 
776
  { GDK_twofifths, "twofifths" },
 
777
  { GDK_threefifths, "threefifths" },
 
778
  { GDK_fourfifths, "fourfifths" },
 
779
  { GDK_onesixth, "onesixth" },
 
780
  { GDK_fivesixths, "fivesixths" },
 
781
  { GDK_careof, "careof" },
 
782
  { GDK_figdash, "figdash" },
 
783
  { GDK_leftanglebracket, "leftanglebracket" },
 
784
  { GDK_decimalpoint, "decimalpoint" },
 
785
  { GDK_rightanglebracket, "rightanglebracket" },
 
786
  { GDK_marker, "marker" },
 
787
  { GDK_oneeighth, "oneeighth" },
 
788
  { GDK_threeeighths, "threeeighths" },
 
789
  { GDK_fiveeighths, "fiveeighths" },
 
790
  { GDK_seveneighths, "seveneighths" },
 
791
  { GDK_trademark, "trademark" },
 
792
  { GDK_signaturemark, "signaturemark" },
 
793
  { GDK_trademarkincircle, "trademarkincircle" },
 
794
  { GDK_leftopentriangle, "leftopentriangle" },
 
795
  { GDK_rightopentriangle, "rightopentriangle" },
 
796
  { GDK_emopencircle, "emopencircle" },
 
797
  { GDK_emopenrectangle, "emopenrectangle" },
 
798
  { GDK_leftsinglequotemark, "leftsinglequotemark" },
 
799
  { GDK_rightsinglequotemark, "rightsinglequotemark" },
 
800
  { GDK_leftdoublequotemark, "leftdoublequotemark" },
 
801
  { GDK_rightdoublequotemark, "rightdoublequotemark" },
 
802
  { GDK_prescription, "prescription" },
 
803
  { GDK_minutes, "minutes" },
 
804
  { GDK_seconds, "seconds" },
 
805
  { GDK_latincross, "latincross" },
 
806
  { GDK_hexagram, "hexagram" },
 
807
  { GDK_filledrectbullet, "filledrectbullet" },
 
808
  { GDK_filledlefttribullet, "filledlefttribullet" },
 
809
  { GDK_filledrighttribullet, "filledrighttribullet" },
 
810
  { GDK_emfilledcircle, "emfilledcircle" },
 
811
  { GDK_emfilledrect, "emfilledrect" },
 
812
  { GDK_enopencircbullet, "enopencircbullet" },
 
813
  { GDK_enopensquarebullet, "enopensquarebullet" },
 
814
  { GDK_openrectbullet, "openrectbullet" },
 
815
  { GDK_opentribulletup, "opentribulletup" },
 
816
  { GDK_opentribulletdown, "opentribulletdown" },
 
817
  { GDK_openstar, "openstar" },
 
818
  { GDK_enfilledcircbullet, "enfilledcircbullet" },
 
819
  { GDK_enfilledsqbullet, "enfilledsqbullet" },
 
820
  { GDK_filledtribulletup, "filledtribulletup" },
 
821
  { GDK_filledtribulletdown, "filledtribulletdown" },
 
822
  { GDK_leftpointer, "leftpointer" },
 
823
  { GDK_rightpointer, "rightpointer" },
 
824
  { GDK_club, "club" },
 
825
  { GDK_diamond, "diamond" },
 
826
  { GDK_heart, "heart" },
 
827
  { GDK_maltesecross, "maltesecross" },
 
828
  { GDK_dagger, "dagger" },
 
829
  { GDK_doubledagger, "doubledagger" },
 
830
  { GDK_checkmark, "checkmark" },
 
831
  { GDK_ballotcross, "ballotcross" },
 
832
  { GDK_musicalsharp, "musicalsharp" },
 
833
  { GDK_musicalflat, "musicalflat" },
 
834
  { GDK_malesymbol, "malesymbol" },
 
835
  { GDK_femalesymbol, "femalesymbol" },
 
836
  { GDK_telephone, "telephone" },
 
837
  { GDK_telephonerecorder, "telephonerecorder" },
 
838
  { GDK_phonographcopyright, "phonographcopyright" },
 
839
  { GDK_caret, "caret" },
 
840
  { GDK_singlelowquotemark, "singlelowquotemark" },
 
841
  { GDK_doublelowquotemark, "doublelowquotemark" },
 
842
  { GDK_cursor, "cursor" },
 
843
  { GDK_leftcaret, "leftcaret" },
 
844
  { GDK_rightcaret, "rightcaret" },
 
845
  { GDK_downcaret, "downcaret" },
 
846
  { GDK_upcaret, "upcaret" },
 
847
  { GDK_overbar, "overbar" },
 
848
  { GDK_downtack, "downtack" },
 
849
  { GDK_upshoe, "upshoe" },
 
850
  { GDK_downstile, "downstile" },
 
851
  { GDK_underbar, "underbar" },
 
852
  { GDK_jot, "jot" },
 
853
  { GDK_quad, "quad" },
 
854
  { GDK_uptack, "uptack" },
 
855
  { GDK_circle, "circle" },
 
856
  { GDK_upstile, "upstile" },
 
857
  { GDK_downshoe, "downshoe" },
 
858
  { GDK_rightshoe, "rightshoe" },
 
859
  { GDK_leftshoe, "leftshoe" },
 
860
  { GDK_lefttack, "lefttack" },
 
861
  { GDK_righttack, "righttack" },
 
862
  { GDK_hebrew_doublelowline, "hebrew_doublelowline" },
 
863
  { GDK_hebrew_aleph, "hebrew_aleph" },
 
864
  { GDK_hebrew_bet, "hebrew_bet" },
 
865
  { GDK_hebrew_beth, "hebrew_beth" },
 
866
  { GDK_hebrew_gimel, "hebrew_gimel" },
 
867
  { GDK_hebrew_gimmel, "hebrew_gimmel" },
 
868
  { GDK_hebrew_dalet, "hebrew_dalet" },
 
869
  { GDK_hebrew_daleth, "hebrew_daleth" },
 
870
  { GDK_hebrew_he, "hebrew_he" },
 
871
  { GDK_hebrew_waw, "hebrew_waw" },
 
872
  { GDK_hebrew_zain, "hebrew_zain" },
 
873
  { GDK_hebrew_zayin, "hebrew_zayin" },
 
874
  { GDK_hebrew_chet, "hebrew_chet" },
 
875
  { GDK_hebrew_het, "hebrew_het" },
 
876
  { GDK_hebrew_tet, "hebrew_tet" },
 
877
  { GDK_hebrew_teth, "hebrew_teth" },
 
878
  { GDK_hebrew_yod, "hebrew_yod" },
 
879
  { GDK_hebrew_finalkaph, "hebrew_finalkaph" },
 
880
  { GDK_hebrew_kaph, "hebrew_kaph" },
 
881
  { GDK_hebrew_lamed, "hebrew_lamed" },
 
882
  { GDK_hebrew_finalmem, "hebrew_finalmem" },
 
883
  { GDK_hebrew_mem, "hebrew_mem" },
 
884
  { GDK_hebrew_finalnun, "hebrew_finalnun" },
 
885
  { GDK_hebrew_nun, "hebrew_nun" },
 
886
  { GDK_hebrew_samech, "hebrew_samech" },
 
887
  { GDK_hebrew_samekh, "hebrew_samekh" },
 
888
  { GDK_hebrew_ayin, "hebrew_ayin" },
 
889
  { GDK_hebrew_finalpe, "hebrew_finalpe" },
 
890
  { GDK_hebrew_pe, "hebrew_pe" },
 
891
  { GDK_hebrew_finalzade, "hebrew_finalzade" },
 
892
  { GDK_hebrew_finalzadi, "hebrew_finalzadi" },
 
893
  { GDK_hebrew_zade, "hebrew_zade" },
 
894
  { GDK_hebrew_zadi, "hebrew_zadi" },
 
895
  { GDK_hebrew_qoph, "hebrew_qoph" },
 
896
  { GDK_hebrew_kuf, "hebrew_kuf" },
 
897
  { GDK_hebrew_resh, "hebrew_resh" },
 
898
  { GDK_hebrew_shin, "hebrew_shin" },
 
899
  { GDK_hebrew_taw, "hebrew_taw" },
 
900
  { GDK_hebrew_taf, "hebrew_taf" },
 
901
  { GDK_Thai_kokai, "Thai_kokai" },
 
902
  { GDK_Thai_khokhai, "Thai_khokhai" },
 
903
  { GDK_Thai_khokhuat, "Thai_khokhuat" },
 
904
  { GDK_Thai_khokhwai, "Thai_khokhwai" },
 
905
  { GDK_Thai_khokhon, "Thai_khokhon" },
 
906
  { GDK_Thai_khorakhang, "Thai_khorakhang" },
 
907
  { GDK_Thai_ngongu, "Thai_ngongu" },
 
908
  { GDK_Thai_chochan, "Thai_chochan" },
 
909
  { GDK_Thai_choching, "Thai_choching" },
 
910
  { GDK_Thai_chochang, "Thai_chochang" },
 
911
  { GDK_Thai_soso, "Thai_soso" },
 
912
  { GDK_Thai_chochoe, "Thai_chochoe" },
 
913
  { GDK_Thai_yoying, "Thai_yoying" },
 
914
  { GDK_Thai_dochada, "Thai_dochada" },
 
915
  { GDK_Thai_topatak, "Thai_topatak" },
 
916
  { GDK_Thai_thothan, "Thai_thothan" },
 
917
  { GDK_Thai_thonangmontho, "Thai_thonangmontho" },
 
918
  { GDK_Thai_thophuthao, "Thai_thophuthao" },
 
919
  { GDK_Thai_nonen, "Thai_nonen" },
 
920
  { GDK_Thai_dodek, "Thai_dodek" },
 
921
  { GDK_Thai_totao, "Thai_totao" },
 
922
  { GDK_Thai_thothung, "Thai_thothung" },
 
923
  { GDK_Thai_thothahan, "Thai_thothahan" },
 
924
  { GDK_Thai_thothong, "Thai_thothong" },
 
925
  { GDK_Thai_nonu, "Thai_nonu" },
 
926
  { GDK_Thai_bobaimai, "Thai_bobaimai" },
 
927
  { GDK_Thai_popla, "Thai_popla" },
 
928
  { GDK_Thai_phophung, "Thai_phophung" },
 
929
  { GDK_Thai_fofa, "Thai_fofa" },
 
930
  { GDK_Thai_phophan, "Thai_phophan" },
 
931
  { GDK_Thai_fofan, "Thai_fofan" },
 
932
  { GDK_Thai_phosamphao, "Thai_phosamphao" },
 
933
  { GDK_Thai_moma, "Thai_moma" },
 
934
  { GDK_Thai_yoyak, "Thai_yoyak" },
 
935
  { GDK_Thai_rorua, "Thai_rorua" },
 
936
  { GDK_Thai_ru, "Thai_ru" },
 
937
  { GDK_Thai_loling, "Thai_loling" },
 
938
  { GDK_Thai_lu, "Thai_lu" },
 
939
  { GDK_Thai_wowaen, "Thai_wowaen" },
 
940
  { GDK_Thai_sosala, "Thai_sosala" },
 
941
  { GDK_Thai_sorusi, "Thai_sorusi" },
 
942
  { GDK_Thai_sosua, "Thai_sosua" },
 
943
  { GDK_Thai_hohip, "Thai_hohip" },
 
944
  { GDK_Thai_lochula, "Thai_lochula" },
 
945
  { GDK_Thai_oang, "Thai_oang" },
 
946
  { GDK_Thai_honokhuk, "Thai_honokhuk" },
 
947
  { GDK_Thai_paiyannoi, "Thai_paiyannoi" },
 
948
  { GDK_Thai_saraa, "Thai_saraa" },
 
949
  { GDK_Thai_maihanakat, "Thai_maihanakat" },
 
950
  { GDK_Thai_saraaa, "Thai_saraaa" },
 
951
  { GDK_Thai_saraam, "Thai_saraam" },
 
952
  { GDK_Thai_sarai, "Thai_sarai" },
 
953
  { GDK_Thai_saraii, "Thai_saraii" },
 
954
  { GDK_Thai_saraue, "Thai_saraue" },
 
955
  { GDK_Thai_sarauee, "Thai_sarauee" },
 
956
  { GDK_Thai_sarau, "Thai_sarau" },
 
957
  { GDK_Thai_sarauu, "Thai_sarauu" },
 
958
  { GDK_Thai_phinthu, "Thai_phinthu" },
 
959
  { GDK_Thai_maihanakat_maitho, "Thai_maihanakat_maitho" },
 
960
  { GDK_Thai_baht, "Thai_baht" },
 
961
  { GDK_Thai_sarae, "Thai_sarae" },
 
962
  { GDK_Thai_saraae, "Thai_saraae" },
 
963
  { GDK_Thai_sarao, "Thai_sarao" },
 
964
  { GDK_Thai_saraaimaimuan, "Thai_saraaimaimuan" },
 
965
  { GDK_Thai_saraaimaimalai, "Thai_saraaimaimalai" },
 
966
  { GDK_Thai_lakkhangyao, "Thai_lakkhangyao" },
 
967
  { GDK_Thai_maiyamok, "Thai_maiyamok" },
 
968
  { GDK_Thai_maitaikhu, "Thai_maitaikhu" },
 
969
  { GDK_Thai_maiek, "Thai_maiek" },
 
970
  { GDK_Thai_maitho, "Thai_maitho" },
 
971
  { GDK_Thai_maitri, "Thai_maitri" },
 
972
  { GDK_Thai_maichattawa, "Thai_maichattawa" },
 
973
  { GDK_Thai_thanthakhat, "Thai_thanthakhat" },
 
974
  { GDK_Thai_nikhahit, "Thai_nikhahit" },
 
975
  { GDK_Thai_leksun, "Thai_leksun" },
 
976
  { GDK_Thai_leknung, "Thai_leknung" },
 
977
  { GDK_Thai_leksong, "Thai_leksong" },
 
978
  { GDK_Thai_leksam, "Thai_leksam" },
 
979
  { GDK_Thai_leksi, "Thai_leksi" },
 
980
  { GDK_Thai_lekha, "Thai_lekha" },
 
981
  { GDK_Thai_lekhok, "Thai_lekhok" },
 
982
  { GDK_Thai_lekchet, "Thai_lekchet" },
 
983
  { GDK_Thai_lekpaet, "Thai_lekpaet" },
 
984
  { GDK_Thai_lekkao, "Thai_lekkao" },
 
985
  { GDK_Hangul_Kiyeog, "Hangul_Kiyeog" },
 
986
  { GDK_Hangul_SsangKiyeog, "Hangul_SsangKiyeog" },
 
987
  { GDK_Hangul_KiyeogSios, "Hangul_KiyeogSios" },
 
988
  { GDK_Hangul_Nieun, "Hangul_Nieun" },
 
989
  { GDK_Hangul_NieunJieuj, "Hangul_NieunJieuj" },
 
990
  { GDK_Hangul_NieunHieuh, "Hangul_NieunHieuh" },
 
991
  { GDK_Hangul_Dikeud, "Hangul_Dikeud" },
 
992
  { GDK_Hangul_SsangDikeud, "Hangul_SsangDikeud" },
 
993
  { GDK_Hangul_Rieul, "Hangul_Rieul" },
 
994
  { GDK_Hangul_RieulKiyeog, "Hangul_RieulKiyeog" },
 
995
  { GDK_Hangul_RieulMieum, "Hangul_RieulMieum" },
 
996
  { GDK_Hangul_RieulPieub, "Hangul_RieulPieub" },
 
997
  { GDK_Hangul_RieulSios, "Hangul_RieulSios" },
 
998
  { GDK_Hangul_RieulTieut, "Hangul_RieulTieut" },
 
999
  { GDK_Hangul_RieulPhieuf, "Hangul_RieulPhieuf" },
 
1000
  { GDK_Hangul_RieulHieuh, "Hangul_RieulHieuh" },
 
1001
  { GDK_Hangul_Mieum, "Hangul_Mieum" },
 
1002
  { GDK_Hangul_Pieub, "Hangul_Pieub" },
 
1003
  { GDK_Hangul_SsangPieub, "Hangul_SsangPieub" },
 
1004
  { GDK_Hangul_PieubSios, "Hangul_PieubSios" },
 
1005
  { GDK_Hangul_Sios, "Hangul_Sios" },
 
1006
  { GDK_Hangul_SsangSios, "Hangul_SsangSios" },
 
1007
  { GDK_Hangul_Ieung, "Hangul_Ieung" },
 
1008
  { GDK_Hangul_Jieuj, "Hangul_Jieuj" },
 
1009
  { GDK_Hangul_SsangJieuj, "Hangul_SsangJieuj" },
 
1010
  { GDK_Hangul_Cieuc, "Hangul_Cieuc" },
 
1011
  { GDK_Hangul_Khieuq, "Hangul_Khieuq" },
 
1012
  { GDK_Hangul_Tieut, "Hangul_Tieut" },
 
1013
  { GDK_Hangul_Phieuf, "Hangul_Phieuf" },
 
1014
  { GDK_Hangul_Hieuh, "Hangul_Hieuh" },
 
1015
  { GDK_Hangul_A, "Hangul_A" },
 
1016
  { GDK_Hangul_AE, "Hangul_AE" },
 
1017
  { GDK_Hangul_YA, "Hangul_YA" },
 
1018
  { GDK_Hangul_YAE, "Hangul_YAE" },
 
1019
  { GDK_Hangul_EO, "Hangul_EO" },
 
1020
  { GDK_Hangul_E, "Hangul_E" },
 
1021
  { GDK_Hangul_YEO, "Hangul_YEO" },
 
1022
  { GDK_Hangul_YE, "Hangul_YE" },
 
1023
  { GDK_Hangul_O, "Hangul_O" },
 
1024
  { GDK_Hangul_WA, "Hangul_WA" },
 
1025
  { GDK_Hangul_WAE, "Hangul_WAE" },
 
1026
  { GDK_Hangul_OE, "Hangul_OE" },
 
1027
  { GDK_Hangul_YO, "Hangul_YO" },
 
1028
  { GDK_Hangul_U, "Hangul_U" },
 
1029
  { GDK_Hangul_WEO, "Hangul_WEO" },
 
1030
  { GDK_Hangul_WE, "Hangul_WE" },
 
1031
  { GDK_Hangul_WI, "Hangul_WI" },
 
1032
  { GDK_Hangul_YU, "Hangul_YU" },
 
1033
  { GDK_Hangul_EU, "Hangul_EU" },
 
1034
  { GDK_Hangul_YI, "Hangul_YI" },
 
1035
  { GDK_Hangul_I, "Hangul_I" },
 
1036
  { GDK_Hangul_J_Kiyeog, "Hangul_J_Kiyeog" },
 
1037
  { GDK_Hangul_J_SsangKiyeog, "Hangul_J_SsangKiyeog" },
 
1038
  { GDK_Hangul_J_KiyeogSios, "Hangul_J_KiyeogSios" },
 
1039
  { GDK_Hangul_J_Nieun, "Hangul_J_Nieun" },
 
1040
  { GDK_Hangul_J_NieunJieuj, "Hangul_J_NieunJieuj" },
 
1041
  { GDK_Hangul_J_NieunHieuh, "Hangul_J_NieunHieuh" },
 
1042
  { GDK_Hangul_J_Dikeud, "Hangul_J_Dikeud" },
 
1043
  { GDK_Hangul_J_Rieul, "Hangul_J_Rieul" },
 
1044
  { GDK_Hangul_J_RieulKiyeog, "Hangul_J_RieulKiyeog" },
 
1045
  { GDK_Hangul_J_RieulMieum, "Hangul_J_RieulMieum" },
 
1046
  { GDK_Hangul_J_RieulPieub, "Hangul_J_RieulPieub" },
 
1047
  { GDK_Hangul_J_RieulSios, "Hangul_J_RieulSios" },
 
1048
  { GDK_Hangul_J_RieulTieut, "Hangul_J_RieulTieut" },
 
1049
  { GDK_Hangul_J_RieulPhieuf, "Hangul_J_RieulPhieuf" },
 
1050
  { GDK_Hangul_J_RieulHieuh, "Hangul_J_RieulHieuh" },
 
1051
  { GDK_Hangul_J_Mieum, "Hangul_J_Mieum" },
 
1052
  { GDK_Hangul_J_Pieub, "Hangul_J_Pieub" },
 
1053
  { GDK_Hangul_J_PieubSios, "Hangul_J_PieubSios" },
 
1054
  { GDK_Hangul_J_Sios, "Hangul_J_Sios" },
 
1055
  { GDK_Hangul_J_SsangSios, "Hangul_J_SsangSios" },
 
1056
  { GDK_Hangul_J_Ieung, "Hangul_J_Ieung" },
 
1057
  { GDK_Hangul_J_Jieuj, "Hangul_J_Jieuj" },
 
1058
  { GDK_Hangul_J_Cieuc, "Hangul_J_Cieuc" },
 
1059
  { GDK_Hangul_J_Khieuq, "Hangul_J_Khieuq" },
 
1060
  { GDK_Hangul_J_Tieut, "Hangul_J_Tieut" },
 
1061
  { GDK_Hangul_J_Phieuf, "Hangul_J_Phieuf" },
 
1062
  { GDK_Hangul_J_Hieuh, "Hangul_J_Hieuh" },
 
1063
  { GDK_Hangul_RieulYeorinHieuh, "Hangul_RieulYeorinHieuh" },
 
1064
  { GDK_Hangul_SunkyeongeumMieum, "Hangul_SunkyeongeumMieum" },
 
1065
  { GDK_Hangul_SunkyeongeumPieub, "Hangul_SunkyeongeumPieub" },
 
1066
  { GDK_Hangul_PanSios, "Hangul_PanSios" },
 
1067
  { GDK_Hangul_KkogjiDalrinIeung, "Hangul_KkogjiDalrinIeung" },
 
1068
  { GDK_Hangul_SunkyeongeumPhieuf, "Hangul_SunkyeongeumPhieuf" },
 
1069
  { GDK_Hangul_YeorinHieuh, "Hangul_YeorinHieuh" },
 
1070
  { GDK_Hangul_AraeA, "Hangul_AraeA" },
 
1071
  { GDK_Hangul_AraeAE, "Hangul_AraeAE" },
 
1072
  { GDK_Hangul_J_PanSios, "Hangul_J_PanSios" },
 
1073
  { GDK_Hangul_J_KkogjiDalrinIeung, "Hangul_J_KkogjiDalrinIeung" },
 
1074
  { GDK_Hangul_J_YeorinHieuh, "Hangul_J_YeorinHieuh" },
 
1075
  { GDK_Korean_Won, "Korean_Won" },
 
1076
  { GDK_OE, "OE" },
 
1077
  { GDK_oe, "oe" },
 
1078
  { GDK_Ydiaeresis, "Ydiaeresis" },
 
1079
  { GDK_EcuSign, "EcuSign" },
 
1080
  { GDK_ColonSign, "ColonSign" },
 
1081
  { GDK_CruzeiroSign, "CruzeiroSign" },
 
1082
  { GDK_FFrancSign, "FFrancSign" },
 
1083
  { GDK_LiraSign, "LiraSign" },
 
1084
  { GDK_MillSign, "MillSign" },
 
1085
  { GDK_NairaSign, "NairaSign" },
 
1086
  { GDK_PesetaSign, "PesetaSign" },
 
1087
  { GDK_RupeeSign, "RupeeSign" },
 
1088
  { GDK_WonSign, "WonSign" },
 
1089
  { GDK_NewSheqelSign, "NewSheqelSign" },
 
1090
  { GDK_DongSign, "DongSign" },
 
1091
  { GDK_EuroSign, "EuroSign" },
 
1092
  { GDK_3270_Duplicate, "3270_Duplicate" },
 
1093
  { GDK_3270_FieldMark, "3270_FieldMark" },
 
1094
  { GDK_3270_Right2, "3270_Right2" },
 
1095
  { GDK_3270_Left2, "3270_Left2" },
 
1096
  { GDK_3270_BackTab, "3270_BackTab" },
 
1097
  { GDK_3270_EraseEOF, "3270_EraseEOF" },
 
1098
  { GDK_3270_EraseInput, "3270_EraseInput" },
 
1099
  { GDK_3270_Reset, "3270_Reset" },
 
1100
  { GDK_3270_Quit, "3270_Quit" },
 
1101
  { GDK_3270_PA1, "3270_PA1" },
 
1102
  { GDK_3270_PA2, "3270_PA2" },
 
1103
  { GDK_3270_PA3, "3270_PA3" },
 
1104
  { GDK_3270_Test, "3270_Test" },
 
1105
  { GDK_3270_Attn, "3270_Attn" },
 
1106
  { GDK_3270_CursorBlink, "3270_CursorBlink" },
 
1107
  { GDK_3270_AltCursor, "3270_AltCursor" },
 
1108
  { GDK_3270_KeyClick, "3270_KeyClick" },
 
1109
  { GDK_3270_Jump, "3270_Jump" },
 
1110
  { GDK_3270_Ident, "3270_Ident" },
 
1111
  { GDK_3270_Rule, "3270_Rule" },
 
1112
  { GDK_3270_Copy, "3270_Copy" },
 
1113
  { GDK_3270_Play, "3270_Play" },
 
1114
  { GDK_3270_Setup, "3270_Setup" },
 
1115
  { GDK_3270_Record, "3270_Record" },
 
1116
  { GDK_3270_ChangeScreen, "3270_ChangeScreen" },
 
1117
  { GDK_3270_DeleteWord, "3270_DeleteWord" },
 
1118
  { GDK_3270_ExSelect, "3270_ExSelect" },
 
1119
  { GDK_3270_CursorSelect, "3270_CursorSelect" },
 
1120
  { GDK_3270_PrintScreen, "3270_PrintScreen" },
 
1121
  { GDK_3270_Enter, "3270_Enter" },
 
1122
  { GDK_ISO_Lock, "ISO_Lock" },
 
1123
  { GDK_ISO_Level2_Latch, "ISO_Level2_Latch" },
 
1124
  { GDK_ISO_Level3_Shift, "ISO_Level3_Shift" },
 
1125
  { GDK_ISO_Level3_Latch, "ISO_Level3_Latch" },
 
1126
  { GDK_ISO_Level3_Lock, "ISO_Level3_Lock" },
 
1127
  { GDK_ISO_Group_Latch, "ISO_Group_Latch" },
 
1128
  { GDK_ISO_Group_Lock, "ISO_Group_Lock" },
 
1129
  { GDK_ISO_Next_Group, "ISO_Next_Group" },
 
1130
  { GDK_ISO_Next_Group_Lock, "ISO_Next_Group_Lock" },
 
1131
  { GDK_ISO_Prev_Group, "ISO_Prev_Group" },
 
1132
  { GDK_ISO_Prev_Group_Lock, "ISO_Prev_Group_Lock" },
 
1133
  { GDK_ISO_First_Group, "ISO_First_Group" },
 
1134
  { GDK_ISO_First_Group_Lock, "ISO_First_Group_Lock" },
 
1135
  { GDK_ISO_Last_Group, "ISO_Last_Group" },
 
1136
  { GDK_ISO_Last_Group_Lock, "ISO_Last_Group_Lock" },
 
1137
  { GDK_ISO_Left_Tab, "ISO_Left_Tab" },
 
1138
  { GDK_ISO_Move_Line_Up, "ISO_Move_Line_Up" },
 
1139
  { GDK_ISO_Move_Line_Down, "ISO_Move_Line_Down" },
 
1140
  { GDK_ISO_Partial_Line_Up, "ISO_Partial_Line_Up" },
 
1141
  { GDK_ISO_Partial_Line_Down, "ISO_Partial_Line_Down" },
 
1142
  { GDK_ISO_Partial_Space_Left, "ISO_Partial_Space_Left" },
 
1143
  { GDK_ISO_Partial_Space_Right, "ISO_Partial_Space_Right" },
 
1144
  { GDK_ISO_Set_Margin_Left, "ISO_Set_Margin_Left" },
 
1145
  { GDK_ISO_Set_Margin_Right, "ISO_Set_Margin_Right" },
 
1146
  { GDK_ISO_Release_Margin_Left, "ISO_Release_Margin_Left" },
 
1147
  { GDK_ISO_Release_Margin_Right, "ISO_Release_Margin_Right" },
 
1148
  { GDK_ISO_Release_Both_Margins, "ISO_Release_Both_Margins" },
 
1149
  { GDK_ISO_Fast_Cursor_Left, "ISO_Fast_Cursor_Left" },
 
1150
  { GDK_ISO_Fast_Cursor_Right, "ISO_Fast_Cursor_Right" },
 
1151
  { GDK_ISO_Fast_Cursor_Up, "ISO_Fast_Cursor_Up" },
 
1152
  { GDK_ISO_Fast_Cursor_Down, "ISO_Fast_Cursor_Down" },
 
1153
  { GDK_ISO_Continuous_Underline, "ISO_Continuous_Underline" },
 
1154
  { GDK_ISO_Discontinuous_Underline, "ISO_Discontinuous_Underline" },
 
1155
  { GDK_ISO_Emphasize, "ISO_Emphasize" },
 
1156
  { GDK_ISO_Center_Object, "ISO_Center_Object" },
 
1157
  { GDK_ISO_Enter, "ISO_Enter" },
 
1158
  { GDK_dead_grave, "dead_grave" },
 
1159
  { GDK_dead_acute, "dead_acute" },
 
1160
  { GDK_dead_circumflex, "dead_circumflex" },
 
1161
  { GDK_dead_tilde, "dead_tilde" },
 
1162
  { GDK_dead_macron, "dead_macron" },
 
1163
  { GDK_dead_breve, "dead_breve" },
 
1164
  { GDK_dead_abovedot, "dead_abovedot" },
 
1165
  { GDK_dead_diaeresis, "dead_diaeresis" },
 
1166
  { GDK_dead_abovering, "dead_abovering" },
 
1167
  { GDK_dead_doubleacute, "dead_doubleacute" },
 
1168
  { GDK_dead_caron, "dead_caron" },
 
1169
  { GDK_dead_cedilla, "dead_cedilla" },
 
1170
  { GDK_dead_ogonek, "dead_ogonek" },
 
1171
  { GDK_dead_iota, "dead_iota" },
 
1172
  { GDK_dead_voiced_sound, "dead_voiced_sound" },
 
1173
  { GDK_dead_semivoiced_sound, "dead_semivoiced_sound" },
 
1174
  { GDK_dead_belowdot, "dead_belowdot" },
 
1175
  { GDK_AccessX_Enable, "AccessX_Enable" },
 
1176
  { GDK_AccessX_Feedback_Enable, "AccessX_Feedback_Enable" },
 
1177
  { GDK_RepeatKeys_Enable, "RepeatKeys_Enable" },
 
1178
  { GDK_SlowKeys_Enable, "SlowKeys_Enable" },
 
1179
  { GDK_BounceKeys_Enable, "BounceKeys_Enable" },
 
1180
  { GDK_StickyKeys_Enable, "StickyKeys_Enable" },
 
1181
  { GDK_MouseKeys_Enable, "MouseKeys_Enable" },
 
1182
  { GDK_MouseKeys_Accel_Enable, "MouseKeys_Accel_Enable" },
 
1183
  { GDK_Overlay1_Enable, "Overlay1_Enable" },
 
1184
  { GDK_Overlay2_Enable, "Overlay2_Enable" },
 
1185
  { GDK_AudibleBell_Enable, "AudibleBell_Enable" },
 
1186
  { GDK_First_Virtual_Screen, "First_Virtual_Screen" },
 
1187
  { GDK_Prev_Virtual_Screen, "Prev_Virtual_Screen" },
 
1188
  { GDK_Next_Virtual_Screen, "Next_Virtual_Screen" },
 
1189
  { GDK_Last_Virtual_Screen, "Last_Virtual_Screen" },
 
1190
  { GDK_Terminate_Server, "Terminate_Server" },
 
1191
  { GDK_Pointer_Left, "Pointer_Left" },
 
1192
  { GDK_Pointer_Right, "Pointer_Right" },
 
1193
  { GDK_Pointer_Up, "Pointer_Up" },
 
1194
  { GDK_Pointer_Down, "Pointer_Down" },
 
1195
  { GDK_Pointer_UpLeft, "Pointer_UpLeft" },
 
1196
  { GDK_Pointer_UpRight, "Pointer_UpRight" },
 
1197
  { GDK_Pointer_DownLeft, "Pointer_DownLeft" },
 
1198
  { GDK_Pointer_DownRight, "Pointer_DownRight" },
 
1199
  { GDK_Pointer_Button_Dflt, "Pointer_Button_Dflt" },
 
1200
  { GDK_Pointer_Button1, "Pointer_Button1" },
 
1201
  { GDK_Pointer_Button2, "Pointer_Button2" },
 
1202
  { GDK_Pointer_Button3, "Pointer_Button3" },
 
1203
  { GDK_Pointer_Button4, "Pointer_Button4" },
 
1204
  { GDK_Pointer_Button5, "Pointer_Button5" },
 
1205
  { GDK_Pointer_DblClick_Dflt, "Pointer_DblClick_Dflt" },
 
1206
  { GDK_Pointer_DblClick1, "Pointer_DblClick1" },
 
1207
  { GDK_Pointer_DblClick2, "Pointer_DblClick2" },
 
1208
  { GDK_Pointer_DblClick3, "Pointer_DblClick3" },
 
1209
  { GDK_Pointer_DblClick4, "Pointer_DblClick4" },
 
1210
  { GDK_Pointer_DblClick5, "Pointer_DblClick5" },
 
1211
  { GDK_Pointer_Drag_Dflt, "Pointer_Drag_Dflt" },
 
1212
  { GDK_Pointer_Drag1, "Pointer_Drag1" },
 
1213
  { GDK_Pointer_Drag2, "Pointer_Drag2" },
 
1214
  { GDK_Pointer_Drag3, "Pointer_Drag3" },
 
1215
  { GDK_Pointer_Drag4, "Pointer_Drag4" },
 
1216
  { GDK_Pointer_EnableKeys, "Pointer_EnableKeys" },
 
1217
  { GDK_Pointer_Accelerate, "Pointer_Accelerate" },
 
1218
  { GDK_Pointer_DfltBtnNext, "Pointer_DfltBtnNext" },
 
1219
  { GDK_Pointer_DfltBtnPrev, "Pointer_DfltBtnPrev" },
 
1220
  { GDK_Pointer_Drag5, "Pointer_Drag5" },
 
1221
  { GDK_BackSpace, "BackSpace" },
 
1222
  { GDK_Tab, "Tab" },
 
1223
  { GDK_Linefeed, "Linefeed" },
 
1224
  { GDK_Clear, "Clear" },
 
1225
  { GDK_Return, "Return" },
 
1226
  { GDK_Pause, "Pause" },
 
1227
  { GDK_Scroll_Lock, "Scroll_Lock" },
 
1228
  { GDK_Sys_Req, "Sys_Req" },
 
1229
  { GDK_Escape, "Escape" },
 
1230
  { GDK_Multi_key, "Multi_key" },
 
1231
  { GDK_Kanji, "Kanji" },
 
1232
  { GDK_Muhenkan, "Muhenkan" },
 
1233
  { GDK_Henkan_Mode, "Henkan_Mode" },
 
1234
  { GDK_Henkan, "Henkan" },
 
1235
  { GDK_Romaji, "Romaji" },
 
1236
  { GDK_Hiragana, "Hiragana" },
 
1237
  { GDK_Katakana, "Katakana" },
 
1238
  { GDK_Hiragana_Katakana, "Hiragana_Katakana" },
 
1239
  { GDK_Zenkaku, "Zenkaku" },
 
1240
  { GDK_Hankaku, "Hankaku" },
 
1241
  { GDK_Zenkaku_Hankaku, "Zenkaku_Hankaku" },
 
1242
  { GDK_Touroku, "Touroku" },
 
1243
  { GDK_Massyo, "Massyo" },
 
1244
  { GDK_Kana_Lock, "Kana_Lock" },
 
1245
  { GDK_Kana_Shift, "Kana_Shift" },
 
1246
  { GDK_Eisu_Shift, "Eisu_Shift" },
 
1247
  { GDK_Eisu_toggle, "Eisu_toggle" },
 
1248
  { GDK_Hangul, "Hangul" },
 
1249
  { GDK_Hangul_Start, "Hangul_Start" },
 
1250
  { GDK_Hangul_End, "Hangul_End" },
 
1251
  { GDK_Hangul_Hanja, "Hangul_Hanja" },
 
1252
  { GDK_Hangul_Jamo, "Hangul_Jamo" },
 
1253
  { GDK_Hangul_Romaja, "Hangul_Romaja" },
 
1254
  { GDK_Codeinput, "Codeinput" },
 
1255
  { GDK_Kanji_Bangou, "Kanji_Bangou" },
 
1256
  { GDK_Hangul_Codeinput, "Hangul_Codeinput" },
 
1257
  { GDK_Hangul_Jeonja, "Hangul_Jeonja" },
 
1258
  { GDK_Hangul_Banja, "Hangul_Banja" },
 
1259
  { GDK_Hangul_PreHanja, "Hangul_PreHanja" },
 
1260
  { GDK_Hangul_PostHanja, "Hangul_PostHanja" },
 
1261
  { GDK_SingleCandidate, "SingleCandidate" },
 
1262
  { GDK_Hangul_SingleCandidate, "Hangul_SingleCandidate" },
 
1263
  { GDK_MultipleCandidate, "MultipleCandidate" },
 
1264
  { GDK_Zen_Koho, "Zen_Koho" },
 
1265
  { GDK_Hangul_MultipleCandidate, "Hangul_MultipleCandidate" },
 
1266
  { GDK_PreviousCandidate, "PreviousCandidate" },
 
1267
  { GDK_Mae_Koho, "Mae_Koho" },
 
1268
  { GDK_Hangul_PreviousCandidate, "Hangul_PreviousCandidate" },
 
1269
  { GDK_Hangul_Special, "Hangul_Special" },
 
1270
  { GDK_Home, "Home" },
 
1271
  { GDK_Left, "Left" },
 
1272
  { GDK_Up, "Up" },
 
1273
  { GDK_Right, "Right" },
 
1274
  { GDK_Down, "Down" },
 
1275
  { GDK_Prior, "Prior" },
 
1276
  { GDK_Page_Up, "Page_Up" },
 
1277
  { GDK_Next, "Next" },
 
1278
  { GDK_Page_Down, "Page_Down" },
 
1279
  { GDK_End, "End" },
 
1280
  { GDK_Begin, "Begin" },
 
1281
  { GDK_Select, "Select" },
 
1282
  { GDK_Print, "Print" },
 
1283
  { GDK_Execute, "Execute" },
 
1284
  { GDK_Insert, "Insert" },
 
1285
  { GDK_Undo, "Undo" },
 
1286
  { GDK_Redo, "Redo" },
 
1287
  { GDK_Menu, "Menu" },
 
1288
  { GDK_Find, "Find" },
 
1289
  { GDK_Cancel, "Cancel" },
 
1290
  { GDK_Help, "Help" },
 
1291
  { GDK_Break, "Break" },
 
1292
  { GDK_Mode_switch, "Mode_switch" },
 
1293
  { GDK_script_switch, "script_switch" },
 
1294
  { GDK_ISO_Group_Shift, "ISO_Group_Shift" },
 
1295
  { GDK_kana_switch, "kana_switch" },
 
1296
  { GDK_Arabic_switch, "Arabic_switch" },
 
1297
  { GDK_Greek_switch, "Greek_switch" },
 
1298
  { GDK_Hebrew_switch, "Hebrew_switch" },
 
1299
  { GDK_Hangul_switch, "Hangul_switch" },
 
1300
  { GDK_Num_Lock, "Num_Lock" },
 
1301
  { GDK_KP_Space, "KP_Space" },
 
1302
  { GDK_KP_Tab, "KP_Tab" },
 
1303
  { GDK_KP_Enter, "KP_Enter" },
 
1304
  { GDK_KP_F1, "KP_F1" },
 
1305
  { GDK_KP_F2, "KP_F2" },
 
1306
  { GDK_KP_F3, "KP_F3" },
 
1307
  { GDK_KP_F4, "KP_F4" },
 
1308
  { GDK_KP_Home, "KP_Home" },
 
1309
  { GDK_KP_Left, "KP_Left" },
 
1310
  { GDK_KP_Up, "KP_Up" },
 
1311
  { GDK_KP_Right, "KP_Right" },
 
1312
  { GDK_KP_Down, "KP_Down" },
 
1313
  { GDK_KP_Prior, "KP_Prior" },
 
1314
  { GDK_KP_Page_Up, "KP_Page_Up" },
 
1315
  { GDK_KP_Next, "KP_Next" },
 
1316
  { GDK_KP_Page_Down, "KP_Page_Down" },
 
1317
  { GDK_KP_End, "KP_End" },
 
1318
  { GDK_KP_Begin, "KP_Begin" },
 
1319
  { GDK_KP_Insert, "KP_Insert" },
 
1320
  { GDK_KP_Delete, "KP_Delete" },
 
1321
  { GDK_KP_Multiply, "KP_Multiply" },
 
1322
  { GDK_KP_Add, "KP_Add" },
 
1323
  { GDK_KP_Separator, "KP_Separator" },
 
1324
  { GDK_KP_Subtract, "KP_Subtract" },
 
1325
  { GDK_KP_Decimal, "KP_Decimal" },
 
1326
  { GDK_KP_Divide, "KP_Divide" },
 
1327
  { GDK_KP_0, "KP_0" },
 
1328
  { GDK_KP_1, "KP_1" },
 
1329
  { GDK_KP_2, "KP_2" },
 
1330
  { GDK_KP_3, "KP_3" },
 
1331
  { GDK_KP_4, "KP_4" },
 
1332
  { GDK_KP_5, "KP_5" },
 
1333
  { GDK_KP_6, "KP_6" },
 
1334
  { GDK_KP_7, "KP_7" },
 
1335
  { GDK_KP_8, "KP_8" },
 
1336
  { GDK_KP_9, "KP_9" },
 
1337
  { GDK_KP_Equal, "KP_Equal" },
 
1338
  { GDK_F1, "F1" },
 
1339
  { GDK_F2, "F2" },
 
1340
  { GDK_F3, "F3" },
 
1341
  { GDK_F4, "F4" },
 
1342
  { GDK_F5, "F5" },
 
1343
  { GDK_F6, "F6" },
 
1344
  { GDK_F7, "F7" },
 
1345
  { GDK_F8, "F8" },
 
1346
  { GDK_F9, "F9" },
 
1347
  { GDK_F10, "F10" },
 
1348
  { GDK_F11, "F11" },
 
1349
  { GDK_F12, "F12" },
 
1350
  { GDK_F13, "F13" },
 
1351
  { GDK_F14, "F14" },
 
1352
  { GDK_F15, "F15" },
 
1353
  { GDK_F16, "F16" },
 
1354
  { GDK_F17, "F17" },
 
1355
  { GDK_F18, "F18" },
 
1356
  { GDK_F19, "F19" },
 
1357
  { GDK_F20, "F20" },
 
1358
  { GDK_F21, "F21" },
 
1359
  { GDK_F22, "F22" },
 
1360
  { GDK_F23, "F23" },
 
1361
  { GDK_F24, "F24" },
 
1362
  { GDK_F25, "F25" },
 
1363
  { GDK_F26, "F26" },
 
1364
  { GDK_F27, "F27" },
 
1365
  { GDK_F28, "F28" },
 
1366
  { GDK_F29, "F29" },
 
1367
  { GDK_F30, "F30" },
 
1368
  { GDK_F31, "F31" },
 
1369
  { GDK_F32, "F32" },
 
1370
  { GDK_F33, "F33" },
 
1371
  { GDK_F34, "F34" },
 
1372
  { GDK_F35, "F35" },
 
1373
  { GDK_Shift_L, "Shift_L" },
 
1374
  { GDK_Shift_R, "Shift_R" },
 
1375
  { GDK_Control_L, "Control_L" },
 
1376
  { GDK_Control_R, "Control_R" },
 
1377
  { GDK_Caps_Lock, "Caps_Lock" },
 
1378
  { GDK_Shift_Lock, "Shift_Lock" },
 
1379
  { GDK_Meta_L, "Meta_L" },
 
1380
  { GDK_Meta_R, "Meta_R" },
 
1381
  { GDK_Alt_L, "Alt_L" },
 
1382
  { GDK_Alt_R, "Alt_R" },
 
1383
  { GDK_Super_L, "Super_L" },
 
1384
  { GDK_Super_R, "Super_R" },
 
1385
  { GDK_Hyper_L, "Hyper_L" },
 
1386
  { GDK_Hyper_R, "Hyper_R" },
 
1387
  { GDK_Delete, "Delete" },
 
1388
  { GDK_VoidSymbol, "VoidSymbol" }
 
1389
};
 
1390
 
 
1391
#define GDK_NUM_KEYS (G_N_ELEMENTS (gdk_keys_by_keyval))
 
1392
 
 
1393
 
 
1394
static gint
 
1395
gdk_keys_keyval_compare (const void *pkey,
 
1396
                         const void *pbase)
 
1397
{
 
1398
  return (*(gint *) pkey) - ((struct gdk_key *) pbase)->keyval;
 
1399
}
 
1400
 
 
1401
gchar *
 
1402
gdk_keyval_name (guint keyval)
 
1403
{
 
1404
  struct gdk_key *found;
 
1405
 
 
1406
  /* these keyvals have two entries (PageUp/Prior | PageDown/Next) */
 
1407
  switch (keyval)
 
1408
    {
 
1409
    case GDK_Page_Up:
 
1410
      return "Page_Up";
 
1411
    case GDK_Page_Down:
 
1412
      return "Page_Down";
 
1413
    case GDK_KP_Page_Up:
 
1414
      return "KP_Page_Up";
 
1415
    case GDK_KP_Page_Down:
 
1416
      return "KP_Page_Down";
 
1417
    }
 
1418
 
 
1419
  found = bsearch (&keyval, gdk_keys_by_keyval,
 
1420
                   GDK_NUM_KEYS, sizeof (struct gdk_key),
 
1421
                   gdk_keys_keyval_compare);
 
1422
 
 
1423
  if (found)
 
1424
    return (gchar *) found->name;
 
1425
  else
 
1426
    return NULL;
 
1427
}
 
1428
 
 
1429
static gint
 
1430
gdk_key_compare_by_name (const void *a,
 
1431
                         const void *b)
 
1432
{
 
1433
  return strcmp (((const struct gdk_key *) a)->name,
 
1434
                 ((const struct gdk_key *) b)->name);
 
1435
}
 
1436
 
 
1437
static gint
 
1438
gdk_keys_name_compare (const void *pkey,
 
1439
                       const void *pbase)
 
1440
{
 
1441
  return strcmp ((const char *) pkey,
 
1442
                 ((const struct gdk_key *) pbase)->name);
 
1443
}
 
1444
 
 
1445
guint
 
1446
gdk_keyval_from_name (const gchar *keyval_name)
 
1447
{
 
1448
  struct gdk_key *found;
 
1449
 
 
1450
  g_return_val_if_fail (keyval_name != NULL, 0);
 
1451
 
 
1452
  if (gdk_keys_by_name == NULL)
 
1453
    {
 
1454
      gdk_keys_by_name = g_new (struct gdk_key, GDK_NUM_KEYS);
 
1455
      
 
1456
      memcpy (gdk_keys_by_name, gdk_keys_by_keyval,
 
1457
              GDK_NUM_KEYS * sizeof (struct gdk_key));
 
1458
      
 
1459
      qsort (gdk_keys_by_name, GDK_NUM_KEYS, sizeof (struct gdk_key),
 
1460
             gdk_key_compare_by_name);
 
1461
    }
 
1462
  
 
1463
  found = bsearch (keyval_name, gdk_keys_by_name,
 
1464
                   GDK_NUM_KEYS, sizeof (struct gdk_key),
 
1465
                   gdk_keys_name_compare);
 
1466
  
 
1467
  if (found)
 
1468
    return found->keyval;
 
1469
  else
 
1470
    return GDK_VoidSymbol;
 
1471
}
 
1472
 
 
1473
static void
 
1474
gdk_directfb_convert_modifiers (DFBInputDeviceModifierMask dfbmod,
 
1475
                DFBInputDeviceLockState    dfblock)
 
1476
{
 
1477
        if (dfbmod & DIMM_ALT)
 
1478
                _gdk_directfb_modifiers |= GDK_MOD1_MASK;
 
1479
        else
 
1480
                _gdk_directfb_modifiers &= ~GDK_MOD1_MASK;
 
1481
 
 
1482
        if (dfbmod & DIMM_ALTGR)
 
1483
                _gdk_directfb_modifiers |= GDK_MOD2_MASK;
 
1484
        else
 
1485
                _gdk_directfb_modifiers &= ~GDK_MOD2_MASK;
 
1486
 
 
1487
        if (dfbmod & DIMM_CONTROL)
 
1488
                _gdk_directfb_modifiers |= GDK_CONTROL_MASK;
 
1489
        else
 
1490
                _gdk_directfb_modifiers &= ~GDK_CONTROL_MASK;
 
1491
 
 
1492
        if (dfbmod & DIMM_SHIFT)
 
1493
                _gdk_directfb_modifiers |= GDK_SHIFT_MASK;
 
1494
        else
 
1495
                _gdk_directfb_modifiers &= ~GDK_SHIFT_MASK;
 
1496
 
 
1497
        if (dfblock & DILS_CAPS)
 
1498
                _gdk_directfb_modifiers |= GDK_LOCK_MASK;
 
1499
        else
 
1500
                _gdk_directfb_modifiers &= ~GDK_LOCK_MASK;
 
1501
}
 
1502
 
 
1503
static guint
 
1504
gdk_directfb_translate_key (DFBInputDeviceKeyIdentifier key_id,
 
1505
                DFBInputDeviceKeySymbol     key_symbol)
 
1506
{
 
1507
        guint keyval = GDK_VoidSymbol;
 
1508
 
 
1509
        /* special case numpad */
 
1510
        if (key_id >= DIKI_KP_DIV && key_id <= DIKI_KP_9)
 
1511
        {
 
1512
                switch (key_symbol)
 
1513
                {
 
1514
                        case DIKS_SLASH:         keyval = GDK_KP_Divide;    break;
 
1515
                        case DIKS_ASTERISK:      keyval = GDK_KP_Multiply;  break;
 
1516
                        case DIKS_PLUS_SIGN:     keyval = GDK_KP_Add;       break;
 
1517
                        case DIKS_MINUS_SIGN:    keyval = GDK_KP_Subtract;  break;
 
1518
                        case DIKS_ENTER:         keyval = GDK_KP_Enter;     break;
 
1519
                        case DIKS_SPACE:         keyval = GDK_KP_Space;     break;
 
1520
                        case DIKS_TAB:           keyval = GDK_KP_Tab;       break;
 
1521
                        case DIKS_EQUALS_SIGN:   keyval = GDK_KP_Equal;     break;
 
1522
                        case DIKS_COMMA:
 
1523
                        case DIKS_PERIOD:        keyval = GDK_KP_Decimal;   break;
 
1524
                        case DIKS_HOME:          keyval = GDK_KP_Home;      break;
 
1525
                        case DIKS_END:           keyval = GDK_KP_End;       break;
 
1526
                        case DIKS_PAGE_UP:       keyval = GDK_KP_Page_Up;   break;
 
1527
                        case DIKS_PAGE_DOWN:     keyval = GDK_KP_Page_Down; break;
 
1528
                        case DIKS_CURSOR_LEFT:   keyval = GDK_KP_Left;      break;
 
1529
                        case DIKS_CURSOR_RIGHT:  keyval = GDK_KP_Right;     break;
 
1530
                        case DIKS_CURSOR_UP:     keyval = GDK_KP_Up;        break;
 
1531
                        case DIKS_CURSOR_DOWN:   keyval = GDK_KP_Down;      break;
 
1532
                        case DIKS_BEGIN:         keyval = GDK_KP_Begin;     break;
 
1533
 
 
1534
                        case DIKS_0 ... DIKS_9:
 
1535
                                                 keyval = GDK_KP_0 + key_symbol - DIKS_0;
 
1536
                                                 break;
 
1537
                        case DIKS_F1 ... DIKS_F4:
 
1538
                                                 keyval = GDK_KP_F1 + key_symbol - DIKS_F1;
 
1539
                                                 break;
 
1540
 
 
1541
                        default:
 
1542
                                                 break;
 
1543
                }
 
1544
        }
 
1545
        else
 
1546
        {
 
1547
                switch (DFB_KEY_TYPE (key_symbol))
 
1548
                {
 
1549
                        case DIKT_UNICODE:
 
1550
                                switch (key_symbol)
 
1551
                                {
 
1552
                                        case DIKS_NULL:       keyval = GDK_VoidSymbol; break;
 
1553
                                        case DIKS_BACKSPACE:  keyval = GDK_BackSpace;  break;
 
1554
                                        case DIKS_TAB:        keyval = GDK_Tab;        break;
 
1555
                                        case DIKS_RETURN:     keyval = GDK_Return;     break;
 
1556
                                        case DIKS_CANCEL:     keyval = GDK_Cancel;     break;
 
1557
                                        case DIKS_ESCAPE:     keyval = GDK_Escape;     break;
 
1558
                                        case DIKS_SPACE:      keyval = GDK_space;      break;
 
1559
                                        case DIKS_DELETE:     keyval = GDK_Delete;     break;
 
1560
 
 
1561
                                        default:
 
1562
                                                              keyval = gdk_unicode_to_keyval (key_symbol);
 
1563
                                                              if (keyval & 0x01000000)
 
1564
                                                                      keyval = GDK_VoidSymbol;
 
1565
                                }
 
1566
                                break;
 
1567
 
 
1568
                        case DIKT_SPECIAL:
 
1569
                                switch (key_symbol)
 
1570
                                {
 
1571
                                        case DIKS_CURSOR_LEFT:   keyval = GDK_Left;      break;
 
1572
                                        case DIKS_CURSOR_RIGHT:  keyval = GDK_Right;     break;
 
1573
                                        case DIKS_CURSOR_UP:     keyval = GDK_Up;        break;
 
1574
                                        case DIKS_CURSOR_DOWN:   keyval = GDK_Down;      break;
 
1575
                                        case DIKS_INSERT:        keyval = GDK_Insert;    break;
 
1576
                                        case DIKS_HOME:          keyval = GDK_Home;      break;
 
1577
                                        case DIKS_END:           keyval = GDK_End;       break;
 
1578
                                        case DIKS_PAGE_UP:       keyval = GDK_Page_Up;   break;
 
1579
                                        case DIKS_PAGE_DOWN:     keyval = GDK_Page_Down; break;
 
1580
                                        case DIKS_PRINT:         keyval = GDK_Print;     break;
 
1581
                                        case DIKS_PAUSE:         keyval = GDK_Pause;     break;
 
1582
                                        case DIKS_SELECT:        keyval = GDK_Select;    break;
 
1583
                                        case DIKS_CLEAR:         keyval = GDK_Clear;     break;
 
1584
                                        case DIKS_MENU:          keyval = GDK_Menu;      break;
 
1585
                                        case DIKS_HELP:          keyval = GDK_Help;      break;
 
1586
                                        case DIKS_NEXT:          keyval = GDK_Next;      break;
 
1587
                                        case DIKS_BEGIN:         keyval = GDK_Begin;     break;
 
1588
                                        case DIKS_BREAK:         keyval = GDK_Break;     break;
 
1589
                                        default:
 
1590
                                                                 break;
 
1591
                                }
 
1592
                                break;
 
1593
 
 
1594
                        case DIKT_FUNCTION:
 
1595
                                keyval = GDK_F1 + key_symbol - DIKS_F1;
 
1596
                                if (keyval > GDK_F35)
 
1597
                                        keyval = GDK_VoidSymbol;
 
1598
                                break;
 
1599
 
 
1600
                        case DIKT_MODIFIER:
 
1601
                                switch (key_id)
 
1602
                                {
 
1603
                                        case DIKI_SHIFT_L:    keyval = GDK_Shift_L;     break;
 
1604
                                        case DIKI_SHIFT_R:    keyval = GDK_Shift_R;     break;
 
1605
                                        case DIKI_CONTROL_L:  keyval = GDK_Control_L;   break;
 
1606
                                        case DIKI_CONTROL_R:  keyval = GDK_Control_R;   break;
 
1607
                                        case DIKI_ALT_L:      keyval = GDK_Alt_L;       break;
 
1608
                                        case DIKI_ALT_R:      keyval = GDK_Alt_R;       break;
 
1609
                                        case DIKI_META_L:     keyval = GDK_Meta_L;      break;
 
1610
                                        case DIKI_META_R:     keyval = GDK_Meta_R;      break;
 
1611
                                        case DIKI_SUPER_L:    keyval = GDK_Super_L;     break;
 
1612
                                        case DIKI_SUPER_R:    keyval = GDK_Super_R;     break;
 
1613
                                        case DIKI_HYPER_L:    keyval = GDK_Hyper_L;     break;
 
1614
                                        case DIKI_HYPER_R:    keyval = GDK_Hyper_R;     break;
 
1615
                                        default:
 
1616
                                                              break;
 
1617
                                }
 
1618
                                break;
 
1619
 
 
1620
                        case DIKT_LOCK:
 
1621
                                switch (key_symbol)
 
1622
                                {
 
1623
                                        case DIKS_CAPS_LOCK:    keyval = GDK_Caps_Lock;   break;
 
1624
                                        case DIKS_NUM_LOCK:     keyval = GDK_Num_Lock;    break;
 
1625
                                        case DIKS_SCROLL_LOCK:  keyval = GDK_Scroll_Lock; break;
 
1626
                                        default:
 
1627
                                                                break;
 
1628
                                }
 
1629
                                break;
 
1630
 
 
1631
                        case DIKT_DEAD:
 
1632
                                switch (key_symbol)
 
1633
                                {
 
1634
                                        case DIKS_DEAD_ABOVEDOT:     keyval = GDK_dead_abovedot;     break;
 
1635
                                        case DIKS_DEAD_ABOVERING:    keyval = GDK_dead_abovering;    break;
 
1636
                                        case DIKS_DEAD_ACUTE:        keyval = GDK_dead_acute;        break;
 
1637
                                        case DIKS_DEAD_BREVE:        keyval = GDK_dead_breve;        break;
 
1638
                                        case DIKS_DEAD_CARON:        keyval = GDK_dead_caron;        break;
 
1639
                                        case DIKS_DEAD_CEDILLA:      keyval = GDK_dead_cedilla;      break;
 
1640
                                        case DIKS_DEAD_CIRCUMFLEX:   keyval = GDK_dead_circumflex;   break;
 
1641
                                        case DIKS_DEAD_DIAERESIS:    keyval = GDK_dead_diaeresis;    break;
 
1642
                                        case DIKS_DEAD_DOUBLEACUTE:  keyval = GDK_dead_doubleacute;  break;
 
1643
                                        case DIKS_DEAD_GRAVE:        keyval = GDK_dead_grave;        break;
 
1644
                                        case DIKS_DEAD_IOTA:         keyval = GDK_dead_iota;         break;
 
1645
                                        case DIKS_DEAD_MACRON:       keyval = GDK_dead_macron;       break;
 
1646
                                        case DIKS_DEAD_OGONEK:       keyval = GDK_dead_ogonek;       break;
 
1647
                                        case DIKS_DEAD_SEMIVOICED_SOUND:
 
1648
                                                                     keyval = GDK_dead_semivoiced_sound;                        break;
 
1649
                                        case DIKS_DEAD_TILDE:        keyval = GDK_dead_tilde;        break;
 
1650
                                        case DIKS_DEAD_VOICED_SOUND: keyval = GDK_dead_voiced_sound; break;
 
1651
                                        default:
 
1652
                                                                     break;
 
1653
                                }
 
1654
                                break;
 
1655
 
 
1656
                        case DIKT_CUSTOM:
 
1657
                                break;
 
1658
                }
 
1659
        }
 
1660
 
 
1661
        return keyval;
 
1662
}
 
1663
 
 
1664
        void
 
1665
_gdk_directfb_keyboard_init (void)
 
1666
{
 
1667
        DFBInputDeviceDescription desc;
 
1668
        gint i, n, length;
 
1669
        IDirectFBInputDevice   *keyboard=_gdk_display->keyboard;
 
1670
 
 
1671
        if (!keyboard)
 
1672
                return;
 
1673
    if( directfb_keymap )    
 
1674
            return;
 
1675
 
 
1676
        keyboard->GetDescription (keyboard, &desc);
 
1677
        _gdk_display->keymap=g_object_new (gdk_keymap_get_type (), NULL);
 
1678
 
 
1679
        if (desc.min_keycode < 0 || desc.max_keycode < desc.min_keycode)
 
1680
                return;
 
1681
 
 
1682
        directfb_min_keycode = desc.min_keycode;
 
1683
        directfb_max_keycode = desc.max_keycode;
 
1684
 
 
1685
        length = directfb_max_keycode - desc.min_keycode + 1;
 
1686
 
 
1687
 
 
1688
        directfb_keymap = g_new0 (guint, 4 * length);
 
1689
 
 
1690
        for (i = 0; i < length; i++)
 
1691
        {
 
1692
                DFBInputDeviceKeymapEntry  entry;
 
1693
 
 
1694
                if (keyboard->GetKeymapEntry (keyboard,
 
1695
                                        i + desc.min_keycode, &entry) != DFB_OK)
 
1696
                        continue;
 
1697
                for (n = 0; n < 4; n++) {
 
1698
                        directfb_keymap[i * 4 + n] = 
 
1699
                                gdk_directfb_translate_key (entry.identifier, entry.symbols[n]);
 
1700
                }
 
1701
        }
 
1702
}
 
1703
 
 
1704
        void
 
1705
_gdk_directfb_keyboard_exit (void)
 
1706
{
 
1707
        if (!directfb_keymap)
 
1708
                return;
 
1709
 
 
1710
        g_free (directfb_keymap);
 
1711
        g_free(_gdk_display->keymap);
 
1712
        _gdk_display->keymap = NULL;
 
1713
        directfb_keymap = NULL;
 
1714
}
 
1715
 
 
1716
void
 
1717
gdk_directfb_translate_key_event (DFBWindowEvent *dfb_event,
 
1718
                GdkEventKey    *event)
 
1719
{
 
1720
        gint  len;
 
1721
        gchar buf[6];
 
1722
 
 
1723
        g_return_if_fail (dfb_event != NULL);
 
1724
        g_return_if_fail (event != NULL);
 
1725
 
 
1726
        gdk_directfb_convert_modifiers (dfb_event->modifiers, dfb_event->locks);
 
1727
 
 
1728
        event->state            = _gdk_directfb_modifiers;
 
1729
        event->group            = (dfb_event->modifiers & DIMM_ALTGR) ? 1 : 0;
 
1730
        event->hardware_keycode = dfb_event->key_code;
 
1731
        event->keyval           = gdk_directfb_translate_key (dfb_event->key_id,
 
1732
                        dfb_event->key_symbol);
 
1733
        /* If the device driver didn't send a key_code (happens with remote
 
1734
           controls), we try to find a suitable key_code by looking at the
 
1735
           default keymap. */
 
1736
        if (dfb_event->key_code == -1 && directfb_keymap)
 
1737
        {
 
1738
                gint i;
 
1739
 
 
1740
                for (i = directfb_min_keycode; i <= directfb_max_keycode; i++)
 
1741
                {
 
1742
                        if (directfb_keymap[(i - directfb_min_keycode) * 4] == event->keyval)
 
1743
                        {
 
1744
                                event->hardware_keycode = i;
 
1745
                                break;
 
1746
                        }
 
1747
                }
 
1748
        } 
 
1749
 
 
1750
        len = g_unichar_to_utf8 (dfb_event->key_symbol, buf);
 
1751
 
 
1752
        event->string = g_strndup (buf, len);
 
1753
        event->length = len;
 
1754
}
 
1755
 
 
1756
/**
 
1757
 * gdk_keymap_get_entries_for_keycode:
 
1758
 * @keymap: a #GdkKeymap or %NULL to use the default keymap
 
1759
 * @hardware_keycode: a keycode
 
1760
 * @keys: return location for array of #GdkKeymapKey, or NULL
 
1761
 * @keyvals: return location for array of keyvals, or NULL
 
1762
 * @n_entries: length of @keys and @keyvals
 
1763
 *
 
1764
 * Returns the keyvals bound to @hardware_keycode.
 
1765
 * The Nth #GdkKeymapKey in @keys is bound to the Nth
 
1766
 * keyval in @keyvals. Free the returned arrays with g_free().
 
1767
 * When a keycode is pressed by the user, the keyval from
 
1768
 * this list of entries is selected by considering the effective
 
1769
 * keyboard group and level. See gdk_keymap_translate_keyboard_state().
 
1770
 *
 
1771
 * Returns: %TRUE if there were any entries
 
1772
 **/
 
1773
gboolean
 
1774
gdk_keymap_get_entries_for_keycode (GdkKeymap     *keymap,
 
1775
                guint          hardware_keycode,
 
1776
                GdkKeymapKey **keys,
 
1777
                guint        **keyvals,
 
1778
                gint          *n_entries)
 
1779
{
 
1780
        gint num = 0;
 
1781
        gint i, j;
 
1782
        gint index;
 
1783
 
 
1784
        index = (hardware_keycode - directfb_min_keycode) * 4;
 
1785
 
 
1786
        if (directfb_keymap && (hardware_keycode >= directfb_min_keycode && 
 
1787
                                hardware_keycode <= directfb_max_keycode))
 
1788
        {
 
1789
                for (i = 0; i < 4; i++)
 
1790
                        if (directfb_keymap[index + i] != GDK_VoidSymbol)
 
1791
                                num++;
 
1792
        }
 
1793
 
 
1794
        if (keys)
 
1795
        {
 
1796
                *keys = g_new (GdkKeymapKey, num);
 
1797
 
 
1798
                for (i = 0, j = 0; num > 0 && i < 4; i++)
 
1799
                        if (directfb_keymap[index + i] != GDK_VoidSymbol)
 
1800
                        {
 
1801
                                (*keys)[j].keycode = hardware_keycode;
 
1802
                                (*keys)[j].level   = j % 2;
 
1803
                                (*keys)[j].group   = j > DIKSI_BASE_SHIFT ? 1 : 0;
 
1804
                                j++;
 
1805
                        }
 
1806
        }
 
1807
        if (keyvals)
 
1808
        {
 
1809
                *keyvals = g_new (guint, num);
 
1810
 
 
1811
                for (i = 0, j = 0; num > 0 && i < 4; i++)
 
1812
                        if (directfb_keymap[index + i] != GDK_VoidSymbol)
 
1813
                        {
 
1814
                                (*keyvals)[j] = directfb_keymap[index + i];
 
1815
                                j++;
 
1816
                        }
 
1817
        }
 
1818
 
 
1819
        if (n_entries)
 
1820
                *n_entries = num;
 
1821
 
 
1822
        return (num > 0);
 
1823
}
 
1824
 
 
1825
static inline void
 
1826
append_keymap_key (GArray *array,
 
1827
                guint   keycode,
 
1828
                gint    group,
 
1829
                gint    level)
 
1830
{
 
1831
        GdkKeymapKey key = { keycode, group, level };
 
1832
 
 
1833
        g_array_append_val (array, key);
 
1834
}
 
1835
 
 
1836
/**
 
1837
 * gdk_keymap_get_entries_for_keyval:
 
1838
 * @keymap: a #GdkKeymap, or %NULL to use the default keymap
 
1839
 * @keyval: a keyval, such as %GDK_a, %GDK_Up, %GDK_Return, etc.
 
1840
 * @keys: return location for an array of #GdkKeymapKey
 
1841
 * @n_keys: return location for number of elements in returned array
 
1842
 * 
 
1843
 * Obtains a list of keycode/group/level combinations that will
 
1844
 * generate @keyval. Groups and levels are two kinds of keyboard mode;
 
1845
 * in general, the level determines whether the top or bottom symbol
 
1846
 * on a key is used, and the group determines whether the left or
 
1847
 * right symbol is used. On US keyboards, the shift key changes the
 
1848
 * keyboard level, and there are no groups. A group switch key might
 
1849
 * convert a keyboard between Hebrew to English modes, for example.
 
1850
 * #GdkEventKey contains a %group field that indicates the active
 
1851
 * keyboard group. The level is computed from the modifier mask.
 
1852
 * The returned array should be freed
 
1853
 * with g_free().
 
1854
 *
 
1855
 * Return value: %TRUE if keys were found and returned
 
1856
 **/
 
1857
gboolean
 
1858
gdk_keymap_get_entries_for_keyval (GdkKeymap     *keymap,
 
1859
                guint          keyval,
 
1860
                GdkKeymapKey **keys,
 
1861
                gint          *n_keys)
 
1862
{
 
1863
        GArray *retval;
 
1864
        gint    i, j;
 
1865
 
 
1866
        g_return_val_if_fail (keys != NULL, FALSE);
 
1867
        g_return_val_if_fail (n_keys != NULL, FALSE);
 
1868
        g_return_val_if_fail (keyval != GDK_VoidSymbol, FALSE);
 
1869
 
 
1870
        retval = g_array_new (FALSE, FALSE, sizeof (GdkKeymapKey));
 
1871
 
 
1872
        for (i = directfb_min_keycode;
 
1873
                        directfb_keymap && i <= directfb_max_keycode;
 
1874
                        i++)
 
1875
        {
 
1876
                gint index = i - directfb_min_keycode;
 
1877
 
 
1878
                for (j = 0; j < 4; j++)
 
1879
                {
 
1880
                        if (directfb_keymap[index * 4 + j] == keyval)
 
1881
                                append_keymap_key (retval, i, j % 2, j > DIKSI_BASE_SHIFT ? 1 : 0);
 
1882
                }
 
1883
        }
 
1884
 
 
1885
        if (retval->len > 0)
 
1886
        {
 
1887
                *keys = (GdkKeymapKey *) retval->data;
 
1888
                *n_keys = retval->len;
 
1889
        }
 
1890
        else
 
1891
        {
 
1892
                *keys = NULL;
 
1893
                *n_keys = 0;
 
1894
        }
 
1895
 
 
1896
        g_array_free (retval, retval->len > 0 ? FALSE : TRUE);
 
1897
 
 
1898
        return (*n_keys > 0);
 
1899
}
 
1900
 
 
1901
/**
 
1902
 * gdk_keymap_translate_keyboard_state:
 
1903
 * @keymap: a #GdkKeymap, or %NULL to use the default
 
1904
 * @keycode: a hardware keycode
 
1905
 * @state: a modifier state 
 
1906
 * @group: active keyboard group
 
1907
 * @keyval: return location for keyval
 
1908
 * @effective_group: return location for effective group
 
1909
 * @level: return location for level
 
1910
 * @consumed_modifiers: return location for modifiers that were used to 
 
1911
 *                      determine the group or level
 
1912
 *
 
1913
 * Translates the contents of a #GdkEventKey into a keyval, effective
 
1914
 * group, and level. Modifiers that affected the translation and
 
1915
 * are thus unavailable for application use are returned in
 
1916
 * @consumed_modifiers.  See gdk_keyval_get_keys() for an explanation of
 
1917
 * groups and levels.  The @effective_group is the group that was
 
1918
 * actually used for the translation; some keys such as Enter are not
 
1919
 * affected by the active keyboard group. The @level is derived from
 
1920
 * @state. For convenience, #GdkEventKey already contains the translated
 
1921
 * keyval, so this function isn't as useful as you might think.
 
1922
 * 
 
1923
 * Return value: %TRUE if there was a keyval bound to the keycode/state/group
 
1924
 **/
 
1925
gboolean
 
1926
gdk_keymap_translate_keyboard_state (GdkKeymap       *keymap,
 
1927
                guint            keycode,
 
1928
                GdkModifierType  state,
 
1929
                gint             group,
 
1930
                guint           *keyval,
 
1931
                gint            *effective_group,
 
1932
                gint            *level,
 
1933
                GdkModifierType *consumed_modifiers)
 
1934
{
 
1935
        if (directfb_keymap &&
 
1936
                        (keycode >= directfb_min_keycode && keycode <= directfb_max_keycode) &&
 
1937
                        (group == 0 || group == 1))
 
1938
        {
 
1939
                gint index = (keycode - directfb_min_keycode) * 4;
 
1940
                gint i =     (state & GDK_SHIFT_MASK) ? 1 : 0;
 
1941
 
 
1942
                if (directfb_keymap[index + i + 2 * group] != GDK_VoidSymbol)
 
1943
                {
 
1944
                        *keyval = directfb_keymap[index + i + 2 * group];
 
1945
 
 
1946
                        if (group && directfb_keymap[index + i] == *keyval)
 
1947
                        {
 
1948
                                *effective_group = 0;
 
1949
                                *consumed_modifiers = 0;
 
1950
                        }
 
1951
                        else
 
1952
                        {
 
1953
                                *effective_group = group;
 
1954
                                *consumed_modifiers = GDK_MOD2_MASK;
 
1955
                        }
 
1956
 
 
1957
                        *level = i;
 
1958
 
 
1959
                        if (i && directfb_keymap[index + 2 * *effective_group] != *keyval)
 
1960
                                *consumed_modifiers |= GDK_SHIFT_MASK;
 
1961
 
 
1962
                        return TRUE;
 
1963
                }
 
1964
        }
 
1965
 
 
1966
        *keyval             = 0;
 
1967
        *effective_group    = 0;
 
1968
        *level              = 0;
 
1969
        *consumed_modifiers = 0;
 
1970
 
 
1971
        return FALSE;
 
1972
}
 
1973
 
 
1974
        GdkKeymap*
 
1975
gdk_keymap_get_for_display (GdkDisplay *display)
 
1976
{
 
1977
        if( display == NULL ) return NULL;
 
1978
        g_assert(GDK_IS_DISPLAY_DFB(display));
 
1979
        GdkDisplayDFB *gdisplay = GDK_DISPLAY_DFB(display);
 
1980
        g_assert( gdisplay->keymap != NULL);
 
1981
        return gdisplay->keymap;
 
1982
}
 
1983
 
 
1984
        PangoDirection
 
1985
gdk_keymap_get_direction (GdkKeymap *keymap)
 
1986
{
 
1987
        return PANGO_DIRECTION_NEUTRAL;
 
1988
}
 
1989
 
 
1990
/**
 
1991
 * gdk_keymap_lookup_key:
 
1992
 * @keymap: a #GdkKeymap or %NULL to use the default keymap
 
1993
 * @key: a #GdkKeymapKey with keycode, group, and level initialized
 
1994
 *
 
1995
 * Looks up the keyval mapped to a keycode/group/level triplet.
 
1996
 * If no keyval is bound to @key, returns 0. For normal user input,
 
1997
 * you want to use gdk_keymap_translate_keyboard_state() instead of
 
1998
 * this function, since the effective group/level may not be
 
1999
 * the same as the current keyboard state.
 
2000
 *
 
2001
 * Return value: a keyval, or 0 if none was mapped to the given @key
 
2002
 **/
 
2003
guint
 
2004
gdk_keymap_lookup_key (GdkKeymap          *keymap,
 
2005
                const GdkKeymapKey *key)
 
2006
{
 
2007
        g_warning("gdk_keymap_lookup_key unimplemented \n");    
 
2008
        return 0;
 
2009
}
 
2010
 
 
2011
 
 
2012
#define __GDK_KEYS_DIRECTFB_C__
 
2013
#include "gdkaliasdef.c"