1 /* Copyright 2011 Martin Koegler <mkoegler@auto.tuwien.ac.at>
2 * Copyright 2011 Pierre Ossman <ossman@cendio.se> for Cendio AB
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This software 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
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this software; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20 #include <string.h>
21 #include <FL/Fl.H>
22
23 // FLTK can pull in the X11 headers on some systems
24 #ifndef XK_VoidSymbol
25 #define XK_MISCELLANY
26 #include <rfb/keysymdef.h>
27 #endif
28
29 #include "menukey.h"
30 #include "parameters.h"
31
32 static const MenuKeySymbol menuSymbols[] = {
33 {"F1", FL_F + 1, 0x3b, XK_F1},
34 {"F2", FL_F + 2, 0x3c, XK_F2},
35 {"F3", FL_F + 3, 0x3d, XK_F3},
36 {"F4", FL_F + 4, 0x3e, XK_F4},
37 {"F5", FL_F + 5, 0x3f, XK_F5},
38 {"F6", FL_F + 6, 0x40, XK_F6},
39 {"F7", FL_F + 7, 0x41, XK_F7},
40 {"F8", FL_F + 8, 0x42, XK_F8},
41 {"F9", FL_F + 9, 0x43, XK_F9},
42 {"F10", FL_F + 10, 0x44, XK_F10},
43 {"F11", FL_F + 11, 0x57, XK_F11},
44 {"F12", FL_F + 12, 0x58, XK_F12},
45 {"Pause", FL_Pause, 0xc6, XK_Pause},
46 {"Scroll_Lock", FL_Scroll_Lock, 0x46, XK_Scroll_Lock},
47 {"Escape", FL_Escape, 0x01, XK_Escape},
48 {"Insert", FL_Insert, 0xd2, XK_Insert},
49 {"Delete", FL_Delete, 0xd3, XK_Delete},
50 {"Home", FL_Home, 0xc7, XK_Home},
51 {"Page_Up", FL_Page_Up, 0xc9, XK_Page_Up},
52 {"Page_Down", FL_Page_Down, 0xd1, XK_Page_Down},
53 };
54
getMenuKeySymbolCount()55 int getMenuKeySymbolCount()
56 {
57 return sizeof(menuSymbols)/sizeof(menuSymbols[0]);
58 }
59
getMenuKeySymbols()60 const MenuKeySymbol* getMenuKeySymbols()
61 {
62 return menuSymbols;
63 }
64
getMenuKey(int * fltkcode,int * keycode,rdr::U32 * keysym)65 void getMenuKey(int *fltkcode, int *keycode, rdr::U32 *keysym)
66 {
67 const char *menuKeyStr;
68
69 menuKeyStr = menuKey;
70 for(int i = 0; i < getMenuKeySymbolCount(); i++) {
71 if (!strcmp(menuSymbols[i].name, menuKeyStr)) {
72 *fltkcode = menuSymbols[i].fltkcode;
73 *keycode = menuSymbols[i].keycode;
74 *keysym = menuSymbols[i].keysym;
75 return;
76 }
77 }
78
79 *fltkcode = 0;
80 *keycode = 0;
81 *keysym = 0;
82 }
83