1 /////////////////////////////////////////////////////////////////////////
2 // $Id: rfbkeys.h 11701 2013-05-31 16:46:15Z vruppert $
3 /////////////////////////////////////////////////////////////////////////
4 //
5 //  Copyright (C) 2009-2013  The Bochs Project
6 //
7 //  This library is free software; you can redistribute it and/or
8 //  modify it under the terms of the GNU Lesser General Public
9 //  License as published by the Free Software Foundation; either
10 //  version 2 of the License, or (at your option) any later version.
11 //
12 //  This library is distributed in the hope that it will be useful,
13 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 //  Lesser General Public License for more details.
16 //
17 //  You should have received a copy of the GNU Lesser General Public
18 //  License along with this library; if not, write to the Free Software
19 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
20 /////////////////////////////////////////////////////////////////////////
21 
22 // This file includes the rfb key definitions and keyboard mapping stuff
23 
24 #ifdef HAVE_LIBVNCSERVER
25 
26 #include <rfb/keysym.h>
27 
28 #define XK_Oslash           0x00d8
29 #define XK_ooblique         0x00f8
30 
31 #else
32 
33 enum {
34   XK_space = 0x020,
35   XK_exclam,
36   XK_quotedbl,
37   XK_numbersign,
38   XK_dollar,
39   XK_percent,
40   XK_ampersand,
41   XK_apostrophe,
42   XK_parenleft,
43   XK_parenright,
44   XK_asterisk,
45   XK_plus,
46   XK_comma,
47   XK_minus,
48   XK_period,
49   XK_slash,
50   XK_0,
51   XK_1,
52   XK_2,
53   XK_3,
54   XK_4,
55   XK_5,
56   XK_6,
57   XK_7,
58   XK_8,
59   XK_9,
60   XK_colon,
61   XK_semicolon,
62   XK_less,
63   XK_equal,
64   XK_greater,
65   XK_question,
66   XK_at,
67   XK_A,
68   XK_B,
69   XK_C,
70   XK_D,
71   XK_E,
72   XK_F,
73   XK_G,
74   XK_H,
75   XK_I,
76   XK_J,
77   XK_K,
78   XK_L,
79   XK_M,
80   XK_N,
81   XK_O,
82   XK_P,
83   XK_Q,
84   XK_R,
85   XK_S,
86   XK_T,
87   XK_U,
88   XK_V,
89   XK_W,
90   XK_X,
91   XK_Y,
92   XK_Z,
93   XK_bracketleft,
94   XK_backslash,
95   XK_bracketright,
96   XK_asciicircum,
97   XK_underscore,
98   XK_grave,
99   XK_a,
100   XK_b,
101   XK_c,
102   XK_d,
103   XK_e,
104   XK_f,
105   XK_g,
106   XK_h,
107   XK_i,
108   XK_j,
109   XK_k,
110   XK_l,
111   XK_m,
112   XK_n,
113   XK_o,
114   XK_p,
115   XK_q,
116   XK_r,
117   XK_s,
118   XK_t,
119   XK_u,
120   XK_v,
121   XK_w,
122   XK_x,
123   XK_y,
124   XK_z,
125   XK_braceleft,
126   XK_bar,
127   XK_braceright,
128   XK_asciitilde
129 };
130 
131 #define XK_nobreakspace     0x00a0
132 #define XK_exclamdown       0x00a1
133 #define XK_cent             0x00a2
134 #define XK_sterling         0x00a3
135 #define XK_currency         0x00a4
136 #define XK_yen              0x00a5
137 #define XK_brokenbar        0x00a6
138 #define XK_section          0x00a7
139 #define XK_diaeresis        0x00a8
140 #define XK_copyright        0x00a9
141 #define XK_ordfeminine      0x00aa
142 #define XK_guillemotleft    0x00ab
143 #define XK_notsign          0x00ac
144 #define XK_hyphen           0x00ad
145 #define XK_registered       0x00ae
146 #define XK_macron           0x00af
147 #define XK_degree           0x00b0
148 #define XK_plusminus        0x00b1
149 #define XK_twosuperior      0x00b2
150 #define XK_threesuperior    0x00b3
151 #define XK_acute            0x00b4
152 #define XK_mu               0x00b5
153 #define XK_paragraph        0x00b6
154 #define XK_periodcentered   0x00b7
155 #define XK_cedilla          0x00b8
156 #define XK_onesuperior      0x00b9
157 #define XK_masculine        0x00ba
158 #define XK_guillemotright   0x00bb
159 #define XK_onequarter       0x00bc
160 #define XK_onehalf          0x00bd
161 #define XK_threequarters    0x00be
162 #define XK_questiondown     0x00bf
163 #define XK_Agrave           0x00c0
164 #define XK_Aacute           0x00c1
165 #define XK_Acircumflex      0x00c2
166 #define XK_Atilde           0x00c3
167 #define XK_Adiaeresis       0x00c4
168 #define XK_Aring            0x00c5
169 #define XK_AE               0x00c6
170 #define XK_Ccedilla         0x00c7
171 #define XK_Egrave           0x00c8
172 #define XK_Eacute           0x00c9
173 #define XK_Ecircumflex      0x00ca
174 #define XK_Ediaeresis       0x00cb
175 #define XK_Igrave           0x00cc
176 #define XK_Iacute           0x00cd
177 #define XK_Icircumflex      0x00ce
178 #define XK_Idiaeresis       0x00cf
179 #define XK_ETH              0x00d0
180 #define XK_Ntilde           0x00d1
181 #define XK_Ograve           0x00d2
182 #define XK_Oacute           0x00d3
183 #define XK_Ocircumflex      0x00d4
184 #define XK_Otilde           0x00d5
185 #define XK_Odiaeresis       0x00d6
186 #define XK_multiply         0x00d7
187 #define XK_Oslash           0x00d8
188 #define XK_Ooblique         0x00d8
189 #define XK_Ugrave           0x00d9
190 #define XK_Uacute           0x00da
191 #define XK_Ucircumflex      0x00db
192 #define XK_Udiaeresis       0x00dc
193 #define XK_Yacute           0x00dd
194 #define XK_THORN            0x00de
195 #define XK_ssharp           0x00df
196 #define XK_agrave           0x00e0
197 #define XK_aacute           0x00e1
198 #define XK_acircumflex      0x00e2
199 #define XK_atilde           0x00e3
200 #define XK_adiaeresis       0x00e4
201 #define XK_aring            0x00e5
202 #define XK_ae               0x00e6
203 #define XK_ccedilla         0x00e7
204 #define XK_egrave           0x00e8
205 #define XK_eacute           0x00e9
206 #define XK_ecircumflex      0x00ea
207 #define XK_ediaeresis       0x00eb
208 #define XK_igrave           0x00ec
209 #define XK_iacute           0x00ed
210 #define XK_icircumflex      0x00ee
211 #define XK_idiaeresis       0x00ef
212 #define XK_eth              0x00f0
213 #define XK_ntilde           0x00f1
214 #define XK_ograve           0x00f2
215 #define XK_oacute           0x00f3
216 #define XK_ocircumflex      0x00f4
217 #define XK_otilde           0x00f5
218 #define XK_odiaeresis       0x00f6
219 #define XK_division         0x00f7
220 #define XK_oslash           0x00f8
221 #define XK_ooblique         0x00f8
222 #define XK_ugrave           0x00f9
223 #define XK_uacute           0x00fa
224 #define XK_ucircumflex      0x00fb
225 #define XK_udiaeresis       0x00fc
226 #define XK_yacute           0x00fd
227 #define XK_thorn            0x00fe
228 #define XK_ydiaeresis       0x00ff
229 
230 #define XK_EuroSign         0x20ac
231 
232 #define XK_ISO_Level3_Shift 0xFE03
233 #define XK_ISO_Left_Tab     0xFE20
234 
235 #define XK_dead_grave       0xFE50
236 #define XK_dead_acute       0xFE51
237 #define XK_dead_circumflex  0xFE52
238 #define XK_dead_tilde       0xFE53
239 
240 #define XK_BackSpace        0xFF08
241 #define XK_Tab              0xFF09
242 #define XK_Linefeed         0xFF0A
243 #define XK_Clear            0xFF0B
244 #define XK_Return           0xFF0D
245 #define XK_Pause            0xFF13
246 #define XK_Scroll_Lock      0xFF14
247 #define XK_Sys_Req          0xFF15
248 #define XK_Escape           0xFF1B
249 
250 #define XK_Delete           0xFFFF
251 
252 #define XK_Home             0xFF50
253 #define XK_Left             0xFF51
254 #define XK_Up               0xFF52
255 #define XK_Right            0xFF53
256 #define XK_Down             0xFF54
257 #define XK_Page_Up          0xFF55
258 #define XK_Page_Down        0xFF56
259 #define XK_End              0xFF57
260 #define XK_Begin            0xFF58
261 
262 #define XK_Select           0xFF60
263 #define XK_Print            0xFF61
264 #define XK_Execute          0xFF62
265 #define XK_Insert           0xFF63
266 #define XK_Menu             0xff67
267 #define XK_Cancel           0xFF69
268 #define XK_Help             0xFF6A
269 #define XK_Break            0xFF6B
270 #define XK_Num_Lock         0xFF7F
271 
272 #define XK_KP_Space         0xFF80
273 #define XK_KP_Tab           0xFF89
274 #define XK_KP_Enter         0xFF8D
275 
276 #define XK_KP_Home          0xFF95
277 #define XK_KP_Left          0xFF96
278 #define XK_KP_Up            0xFF97
279 #define XK_KP_Right         0xFF98
280 #define XK_KP_Down          0xFF99
281 #define XK_KP_Prior         0xFF9A
282 #define XK_KP_Page_Up       0xFF9A
283 #define XK_KP_Next          0xFF9B
284 #define XK_KP_Page_Down     0xFF9B
285 #define XK_KP_End           0xFF9C
286 #define XK_KP_Begin         0xFF9D
287 #define XK_KP_Insert        0xFF9E
288 #define XK_KP_Delete        0xFF9F
289 #define XK_KP_Equal         0xFFBD
290 #define XK_KP_Multiply      0xFFAA
291 #define XK_KP_Add           0xFFAB
292 #define XK_KP_Separator     0xFFAC
293 #define XK_KP_Subtract      0xFFAD
294 #define XK_KP_Decimal       0xFFAE
295 #define XK_KP_Divide        0xFFAF
296 
297 #define XK_KP_F1            0xFF91
298 #define XK_KP_F2            0xFF92
299 #define XK_KP_F3            0xFF93
300 #define XK_KP_F4            0xFF94
301 
302 #define XK_KP_0             0xFFB0
303 #define XK_KP_1             0xFFB1
304 #define XK_KP_2             0xFFB2
305 #define XK_KP_3             0xFFB3
306 #define XK_KP_4             0xFFB4
307 #define XK_KP_5             0xFFB5
308 #define XK_KP_6             0xFFB6
309 #define XK_KP_7             0xFFB7
310 #define XK_KP_8             0xFFB8
311 #define XK_KP_9             0xFFB9
312 
313 #define XK_F1               0xFFBE
314 #define XK_F2               0xFFBF
315 #define XK_F3               0xFFC0
316 #define XK_F4               0xFFC1
317 #define XK_F5               0xFFC2
318 #define XK_F6               0xFFC3
319 #define XK_F7               0xFFC4
320 #define XK_F8               0xFFC5
321 #define XK_F9               0xFFC6
322 #define XK_F10              0xFFC7
323 #define XK_F11              0xFFC8
324 #define XK_F12              0xFFC9
325 
326 #define XK_Shift_L          0xFFE1
327 #define XK_Shift_R          0xFFE2
328 #define XK_Control_L        0xFFE3
329 #define XK_Control_R        0xFFE4
330 #define XK_Caps_Lock        0xFFE5
331 #define XK_Shift_Lock       0xFFE6
332 #define XK_Meta_L           0xFFE7
333 #define XK_Meta_R           0xFFE8
334 #define XK_Alt_L            0xFFE9
335 #define XK_Alt_R            0xFFEA
336 #define XK_Super_L          0xFFEB
337 #define XK_Super_R          0xFFEC
338 
339 #endif
340 
341 /// key mapping for rfb
342 typedef struct {
343   const char *name;
344   Bit32u value;
345 } rfbKeyTabEntry;
346 
347 #define DEF_RFB_KEY(key) \
348   { #key, key },
349 
350 #if defined(HAVE_LIBVNCSERVER) && BX_WITH_RFB && !BX_PLUGINS
351 extern rfbKeyTabEntry rfb_keytable[];
352 #else
353 rfbKeyTabEntry rfb_keytable[] = {
354   // this include provides all the entries.
355   DEF_RFB_KEY(XK_space)
356   DEF_RFB_KEY(XK_exclam)
357   DEF_RFB_KEY(XK_quotedbl)
358   DEF_RFB_KEY(XK_numbersign)
359   DEF_RFB_KEY(XK_dollar)
360   DEF_RFB_KEY(XK_percent)
361   DEF_RFB_KEY(XK_ampersand)
362   DEF_RFB_KEY(XK_apostrophe)
363   DEF_RFB_KEY(XK_parenleft)
364   DEF_RFB_KEY(XK_parenright)
365   DEF_RFB_KEY(XK_asterisk)
366   DEF_RFB_KEY(XK_plus)
367   DEF_RFB_KEY(XK_comma)
368   DEF_RFB_KEY(XK_minus)
369   DEF_RFB_KEY(XK_period)
370   DEF_RFB_KEY(XK_slash)
371   DEF_RFB_KEY(XK_0)
372   DEF_RFB_KEY(XK_1)
373   DEF_RFB_KEY(XK_2)
374   DEF_RFB_KEY(XK_3)
375   DEF_RFB_KEY(XK_4)
376   DEF_RFB_KEY(XK_5)
377   DEF_RFB_KEY(XK_6)
378   DEF_RFB_KEY(XK_7)
379   DEF_RFB_KEY(XK_8)
380   DEF_RFB_KEY(XK_9)
381   DEF_RFB_KEY(XK_colon)
382   DEF_RFB_KEY(XK_semicolon)
383   DEF_RFB_KEY(XK_less)
384   DEF_RFB_KEY(XK_equal)
385   DEF_RFB_KEY(XK_greater)
386   DEF_RFB_KEY(XK_question)
387   DEF_RFB_KEY(XK_at)
388   DEF_RFB_KEY(XK_A)
389   DEF_RFB_KEY(XK_B)
390   DEF_RFB_KEY(XK_C)
391   DEF_RFB_KEY(XK_D)
392   DEF_RFB_KEY(XK_E)
393   DEF_RFB_KEY(XK_F)
394   DEF_RFB_KEY(XK_G)
395   DEF_RFB_KEY(XK_H)
396   DEF_RFB_KEY(XK_I)
397   DEF_RFB_KEY(XK_J)
398   DEF_RFB_KEY(XK_K)
399   DEF_RFB_KEY(XK_L)
400   DEF_RFB_KEY(XK_M)
401   DEF_RFB_KEY(XK_N)
402   DEF_RFB_KEY(XK_O)
403   DEF_RFB_KEY(XK_P)
404   DEF_RFB_KEY(XK_Q)
405   DEF_RFB_KEY(XK_R)
406   DEF_RFB_KEY(XK_S)
407   DEF_RFB_KEY(XK_T)
408   DEF_RFB_KEY(XK_U)
409   DEF_RFB_KEY(XK_V)
410   DEF_RFB_KEY(XK_W)
411   DEF_RFB_KEY(XK_X)
412   DEF_RFB_KEY(XK_Y)
413   DEF_RFB_KEY(XK_Z)
414   DEF_RFB_KEY(XK_bracketleft)
415   DEF_RFB_KEY(XK_backslash)
416   DEF_RFB_KEY(XK_bracketright)
417   DEF_RFB_KEY(XK_asciicircum)
418   DEF_RFB_KEY(XK_underscore)
419   DEF_RFB_KEY(XK_grave)
420   DEF_RFB_KEY(XK_a)
421   DEF_RFB_KEY(XK_b)
422   DEF_RFB_KEY(XK_c)
423   DEF_RFB_KEY(XK_d)
424   DEF_RFB_KEY(XK_e)
425   DEF_RFB_KEY(XK_f)
426   DEF_RFB_KEY(XK_g)
427   DEF_RFB_KEY(XK_h)
428   DEF_RFB_KEY(XK_i)
429   DEF_RFB_KEY(XK_j)
430   DEF_RFB_KEY(XK_k)
431   DEF_RFB_KEY(XK_l)
432   DEF_RFB_KEY(XK_m)
433   DEF_RFB_KEY(XK_n)
434   DEF_RFB_KEY(XK_o)
435   DEF_RFB_KEY(XK_p)
436   DEF_RFB_KEY(XK_q)
437   DEF_RFB_KEY(XK_r)
438   DEF_RFB_KEY(XK_s)
439   DEF_RFB_KEY(XK_t)
440   DEF_RFB_KEY(XK_u)
441   DEF_RFB_KEY(XK_v)
442   DEF_RFB_KEY(XK_w)
443   DEF_RFB_KEY(XK_x)
444   DEF_RFB_KEY(XK_y)
445   DEF_RFB_KEY(XK_z)
446   DEF_RFB_KEY(XK_braceleft)
447   DEF_RFB_KEY(XK_bar)
448   DEF_RFB_KEY(XK_braceright)
449   DEF_RFB_KEY(XK_asciitilde)
450   DEF_RFB_KEY(XK_nobreakspace)
451   DEF_RFB_KEY(XK_exclamdown)
452   DEF_RFB_KEY(XK_cent)
453   DEF_RFB_KEY(XK_sterling)
454   DEF_RFB_KEY(XK_currency)
455   DEF_RFB_KEY(XK_yen)
456   DEF_RFB_KEY(XK_brokenbar)
457   DEF_RFB_KEY(XK_section)
458   DEF_RFB_KEY(XK_diaeresis)
459   DEF_RFB_KEY(XK_copyright)
460   DEF_RFB_KEY(XK_ordfeminine)
461   DEF_RFB_KEY(XK_guillemotleft)
462   DEF_RFB_KEY(XK_notsign)
463   DEF_RFB_KEY(XK_hyphen)
464   DEF_RFB_KEY(XK_registered)
465   DEF_RFB_KEY(XK_macron)
466   DEF_RFB_KEY(XK_degree)
467   DEF_RFB_KEY(XK_plusminus)
468   DEF_RFB_KEY(XK_twosuperior)
469   DEF_RFB_KEY(XK_threesuperior)
470   DEF_RFB_KEY(XK_acute)
471   DEF_RFB_KEY(XK_mu)
472   DEF_RFB_KEY(XK_paragraph)
473   DEF_RFB_KEY(XK_periodcentered)
474   DEF_RFB_KEY(XK_cedilla)
475   DEF_RFB_KEY(XK_onesuperior)
476   DEF_RFB_KEY(XK_masculine)
477   DEF_RFB_KEY(XK_guillemotright)
478   DEF_RFB_KEY(XK_onequarter)
479   DEF_RFB_KEY(XK_onehalf)
480   DEF_RFB_KEY(XK_threequarters)
481   DEF_RFB_KEY(XK_questiondown)
482   DEF_RFB_KEY(XK_Agrave)
483   DEF_RFB_KEY(XK_Aacute)
484   DEF_RFB_KEY(XK_Acircumflex)
485   DEF_RFB_KEY(XK_Atilde)
486   DEF_RFB_KEY(XK_Adiaeresis)
487   DEF_RFB_KEY(XK_Aring)
488   DEF_RFB_KEY(XK_AE)
489   DEF_RFB_KEY(XK_Ccedilla)
490   DEF_RFB_KEY(XK_Egrave)
491   DEF_RFB_KEY(XK_Eacute)
492   DEF_RFB_KEY(XK_Ecircumflex)
493   DEF_RFB_KEY(XK_Ediaeresis)
494   DEF_RFB_KEY(XK_Igrave)
495   DEF_RFB_KEY(XK_Iacute)
496   DEF_RFB_KEY(XK_Icircumflex)
497   DEF_RFB_KEY(XK_Idiaeresis)
498   DEF_RFB_KEY(XK_ETH)
499   DEF_RFB_KEY(XK_Ntilde)
500   DEF_RFB_KEY(XK_Ograve)
501   DEF_RFB_KEY(XK_Oacute)
502   DEF_RFB_KEY(XK_Ocircumflex)
503   DEF_RFB_KEY(XK_Otilde)
504   DEF_RFB_KEY(XK_Odiaeresis)
505   DEF_RFB_KEY(XK_multiply)
506   DEF_RFB_KEY(XK_Oslash)
507   DEF_RFB_KEY(XK_Ooblique)
508   DEF_RFB_KEY(XK_Ugrave)
509   DEF_RFB_KEY(XK_Uacute)
510   DEF_RFB_KEY(XK_Ucircumflex)
511   DEF_RFB_KEY(XK_Udiaeresis)
512   DEF_RFB_KEY(XK_Yacute)
513   DEF_RFB_KEY(XK_THORN)
514   DEF_RFB_KEY(XK_ssharp)
515   DEF_RFB_KEY(XK_agrave)
516   DEF_RFB_KEY(XK_aacute)
517   DEF_RFB_KEY(XK_acircumflex)
518   DEF_RFB_KEY(XK_atilde)
519   DEF_RFB_KEY(XK_adiaeresis)
520   DEF_RFB_KEY(XK_aring)
521   DEF_RFB_KEY(XK_ae)
522   DEF_RFB_KEY(XK_ccedilla)
523   DEF_RFB_KEY(XK_egrave)
524   DEF_RFB_KEY(XK_eacute)
525   DEF_RFB_KEY(XK_ecircumflex)
526   DEF_RFB_KEY(XK_ediaeresis)
527   DEF_RFB_KEY(XK_igrave)
528   DEF_RFB_KEY(XK_iacute)
529   DEF_RFB_KEY(XK_icircumflex)
530   DEF_RFB_KEY(XK_idiaeresis)
531   DEF_RFB_KEY(XK_eth)
532   DEF_RFB_KEY(XK_ntilde)
533   DEF_RFB_KEY(XK_ograve)
534   DEF_RFB_KEY(XK_oacute)
535   DEF_RFB_KEY(XK_ocircumflex)
536   DEF_RFB_KEY(XK_otilde)
537   DEF_RFB_KEY(XK_odiaeresis)
538   DEF_RFB_KEY(XK_division)
539   DEF_RFB_KEY(XK_oslash)
540   DEF_RFB_KEY(XK_ooblique)
541   DEF_RFB_KEY(XK_ugrave)
542   DEF_RFB_KEY(XK_uacute)
543   DEF_RFB_KEY(XK_ucircumflex)
544   DEF_RFB_KEY(XK_udiaeresis)
545   DEF_RFB_KEY(XK_yacute)
546   DEF_RFB_KEY(XK_thorn)
547   DEF_RFB_KEY(XK_ydiaeresis)
548   DEF_RFB_KEY(XK_EuroSign)
549   DEF_RFB_KEY(XK_ISO_Level3_Shift)
550   DEF_RFB_KEY(XK_ISO_Left_Tab)
551   DEF_RFB_KEY(XK_dead_grave)
552   DEF_RFB_KEY(XK_dead_acute)
553   DEF_RFB_KEY(XK_dead_circumflex)
554   DEF_RFB_KEY(XK_dead_tilde)
555   DEF_RFB_KEY(XK_BackSpace)
556   DEF_RFB_KEY(XK_Tab)
557   DEF_RFB_KEY(XK_Linefeed)
558   DEF_RFB_KEY(XK_Clear)
559   DEF_RFB_KEY(XK_Return)
560   DEF_RFB_KEY(XK_Pause)
561   DEF_RFB_KEY(XK_Scroll_Lock)
562   DEF_RFB_KEY(XK_Sys_Req)
563   DEF_RFB_KEY(XK_Escape)
564   DEF_RFB_KEY(XK_Delete)
565   DEF_RFB_KEY(XK_Home)
566   DEF_RFB_KEY(XK_Left)
567   DEF_RFB_KEY(XK_Up)
568   DEF_RFB_KEY(XK_Right)
569   DEF_RFB_KEY(XK_Down)
570   DEF_RFB_KEY(XK_Page_Up)
571   DEF_RFB_KEY(XK_Page_Down)
572   DEF_RFB_KEY(XK_End)
573   DEF_RFB_KEY(XK_Begin)
574   DEF_RFB_KEY(XK_Select)
575   DEF_RFB_KEY(XK_Print)
576   DEF_RFB_KEY(XK_Execute)
577   DEF_RFB_KEY(XK_Insert)
578   DEF_RFB_KEY(XK_Menu)
579   DEF_RFB_KEY(XK_Cancel)
580   DEF_RFB_KEY(XK_Help)
581   DEF_RFB_KEY(XK_Break)
582   DEF_RFB_KEY(XK_Num_Lock)
583   DEF_RFB_KEY(XK_KP_Space)
584   DEF_RFB_KEY(XK_KP_Tab)
585   DEF_RFB_KEY(XK_KP_Enter)
586   DEF_RFB_KEY(XK_KP_Home)
587   DEF_RFB_KEY(XK_KP_Left)
588   DEF_RFB_KEY(XK_KP_Up)
589   DEF_RFB_KEY(XK_KP_Right)
590   DEF_RFB_KEY(XK_KP_Down)
591   DEF_RFB_KEY(XK_KP_Prior)
592   DEF_RFB_KEY(XK_KP_Page_Up)
593   DEF_RFB_KEY(XK_KP_Next)
594   DEF_RFB_KEY(XK_KP_Page_Down)
595   DEF_RFB_KEY(XK_KP_End)
596   DEF_RFB_KEY(XK_KP_Begin)
597   DEF_RFB_KEY(XK_KP_Insert)
598   DEF_RFB_KEY(XK_KP_Delete)
599   DEF_RFB_KEY(XK_KP_Equal)
600   DEF_RFB_KEY(XK_KP_Multiply)
601   DEF_RFB_KEY(XK_KP_Add)
602   DEF_RFB_KEY(XK_KP_Separator)
603   DEF_RFB_KEY(XK_KP_Subtract)
604   DEF_RFB_KEY(XK_KP_Decimal)
605   DEF_RFB_KEY(XK_KP_Divide)
606   DEF_RFB_KEY(XK_KP_F1)
607   DEF_RFB_KEY(XK_KP_F2)
608   DEF_RFB_KEY(XK_KP_F3)
609   DEF_RFB_KEY(XK_KP_F4)
610   DEF_RFB_KEY(XK_KP_0)
611   DEF_RFB_KEY(XK_KP_1)
612   DEF_RFB_KEY(XK_KP_2)
613   DEF_RFB_KEY(XK_KP_3)
614   DEF_RFB_KEY(XK_KP_4)
615   DEF_RFB_KEY(XK_KP_5)
616   DEF_RFB_KEY(XK_KP_6)
617   DEF_RFB_KEY(XK_KP_7)
618   DEF_RFB_KEY(XK_KP_8)
619   DEF_RFB_KEY(XK_KP_9)
620   DEF_RFB_KEY(XK_F1)
621   DEF_RFB_KEY(XK_F2)
622   DEF_RFB_KEY(XK_F3)
623   DEF_RFB_KEY(XK_F4)
624   DEF_RFB_KEY(XK_F5)
625   DEF_RFB_KEY(XK_F6)
626   DEF_RFB_KEY(XK_F7)
627   DEF_RFB_KEY(XK_F8)
628   DEF_RFB_KEY(XK_F9)
629   DEF_RFB_KEY(XK_F10)
630   DEF_RFB_KEY(XK_F11)
631   DEF_RFB_KEY(XK_F12)
632   DEF_RFB_KEY(XK_Shift_L)
633   DEF_RFB_KEY(XK_Shift_R)
634   DEF_RFB_KEY(XK_Control_L)
635   DEF_RFB_KEY(XK_Control_R)
636   DEF_RFB_KEY(XK_Caps_Lock)
637   DEF_RFB_KEY(XK_Shift_Lock)
638   DEF_RFB_KEY(XK_Meta_L)
639   DEF_RFB_KEY(XK_Meta_R)
640   DEF_RFB_KEY(XK_Alt_L)
641   DEF_RFB_KEY(XK_Alt_R)
642   DEF_RFB_KEY(XK_Super_L)
643   DEF_RFB_KEY(XK_Super_R)
644   // one final entry to mark the end
645   { NULL, 0 }
646 };
647 #endif
648