diff --git a/vncviewer/menukey.cxx b/vncviewer/menukey.cxx
index 04e52d0..25f9f56 100644
--- a/vncviewer/menukey.cxx
+++ b/vncviewer/menukey.cxx
@@ -30,26 +30,26 @@
 #include "parameters.h"
 
 static const MenuKeySymbol menuSymbols[] = {
-  {"F1", FL_F + 1, XK_F1},
-  {"F2", FL_F + 2, XK_F2},
-  {"F3", FL_F + 3, XK_F3},
-  {"F4", FL_F + 4, XK_F4},
-  {"F5", FL_F + 5, XK_F5},
-  {"F6", FL_F + 6, XK_F6},
-  {"F7", FL_F + 7, XK_F7},
-  {"F8", FL_F + 8, XK_F8},
-  {"F9", FL_F + 9, XK_F9},
-  {"F10", FL_F + 10, XK_F10},
-  {"F11", FL_F + 11, XK_F11},
-  {"F12", FL_F + 12, XK_F12},
-  {"Pause", FL_Pause, XK_Pause},
-  {"Scroll_Lock", FL_Scroll_Lock, XK_Scroll_Lock},
-  {"Escape", FL_Escape, XK_Escape},
-  {"Insert", FL_Insert, XK_Insert},
-  {"Delete", FL_Delete, XK_Delete},
-  {"Home", FL_Home, XK_Home},
-  {"Page_Up", FL_Page_Up, XK_Page_Up},
-  {"Page_Down", FL_Page_Down, XK_Page_Down},
+  {"F1",          FL_F + 1,       0x3b, XK_F1},
+  {"F2",          FL_F + 2,       0x3c, XK_F2},
+  {"F3",          FL_F + 3,       0x3d, XK_F3},
+  {"F4",          FL_F + 4,       0x3e, XK_F4},
+  {"F5",          FL_F + 5,       0x3f, XK_F5},
+  {"F6",          FL_F + 6,       0x40, XK_F6},
+  {"F7",          FL_F + 7,       0x41, XK_F7},
+  {"F8",          FL_F + 8,       0x42, XK_F8},
+  {"F9",          FL_F + 9,       0x43, XK_F9},
+  {"F10",         FL_F + 10,      0x44, XK_F10},
+  {"F11",         FL_F + 11,      0x57, XK_F11},
+  {"F12",         FL_F + 12,      0x58, XK_F12},
+  {"Pause",       FL_Pause,       0xc6, XK_Pause},
+  {"Scroll_Lock", FL_Scroll_Lock, 0x46, XK_Scroll_Lock},
+  {"Escape",      FL_Escape,      0x01, XK_Escape},
+  {"Insert",      FL_Insert,      0xd2, XK_Insert},
+  {"Delete",      FL_Delete,      0xd3, XK_Delete},
+  {"Home",        FL_Home,        0xc7, XK_Home},
+  {"Page_Up",     FL_Page_Up,     0xc9, XK_Page_Up},
+  {"Page_Down",   FL_Page_Down,   0xd1, XK_Page_Down},
 };
 
 int getMenuKeySymbolCount()
@@ -62,19 +62,21 @@
   return menuSymbols;
 }
 
-void getMenuKey(int *keycode, rdr::U32 *keysym)
+void getMenuKey(int *fltkcode, int *keycode, rdr::U32 *keysym)
 {
   const char *menuKeyStr;
 
   menuKeyStr = menuKey;
   for(int i = 0; i < getMenuKeySymbolCount(); i++) {
     if (!strcmp(menuSymbols[i].name, menuKeyStr)) {
+      *fltkcode = menuSymbols[i].fltkcode;
       *keycode = menuSymbols[i].keycode;
       *keysym = menuSymbols[i].keysym;
       return;
     }
   }
 
+  *fltkcode = 0;
   *keycode = 0;
   *keysym = 0;
 }
