diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
index 52725ed..456e372 100644
--- a/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx
@@ -69,6 +69,9 @@
 
   OptionsDialog::addCallback(handleOptions, this);
 
+  // Hack. See below...
+  Fl::event_dispatch(&fltkHandle);
+
 #ifdef HAVE_FLTK_FULLSCREEN
   if (fullScreen)
     fullscreen();
@@ -197,9 +200,6 @@
 {
   switch (event) {
 #ifdef HAVE_FLTK_FULLSCREEN
-  case FL_FOCUS:
-    // FIXME: We reassert the keyboard grabbing on focus/unfocus as FLTK
-    //        releases the grab when someone calls Fl::grab(0)
   case FL_FULLSCREEN:
     if (event == FL_FULLSCREEN)
       fullScreen.setParam(fullscreen_active());
@@ -213,12 +213,6 @@
       ungrabKeyboard();
 
     break;
-  case FL_UNFOCUS:
-    // FIXME: We need to relinquish control when the entire window loses
-    //        focus as it seems to interfere with the WM:s ability to handle
-    //        interactions with popups' window decorations.
-    ungrabKeyboard();
-    break;
 #endif
   case FL_SHORTCUT:
     // Sometimes the focus gets out of whack and we fall through to the
@@ -234,6 +228,46 @@
 }
 
 
+int DesktopWindow::fltkHandle(int event, Fl_Window *win)
+{
+  int ret;
+
+  ret = Fl::handle_(event, win);
+
+#ifdef HAVE_FLTK_FULLSCREEN
+  // This is hackish and the result of the dodgy focus handling in FLTK.
+  // The basic problem is that FLTK's view of focus and the system's tend
+  // to differ, and as a result we do not see all the FL_FOCUS events we
+  // need. Fortunately we can grab them here...
+
+  DesktopWindow *dw = dynamic_cast<DesktopWindow*>(win);
+
+  if (dw && fullscreenSystemKeys) {
+    switch (event) {
+    case FL_FOCUS:
+      // FIXME: We reassert the keyboard grabbing on focus as FLTK there are
+      //        some issues we need to work around:
+      //        a) Fl::grab(0) on X11 will release the keyboard grab for us.
+      //        b) Gaining focus on the system level causes FLTK to switch
+      //           window level on OS X.
+      if (dw->fullscreen_active())
+        dw->grabKeyboard();
+      break;
+
+      case FL_UNFOCUS:
+      // FIXME: We need to relinquish control when the entire window loses
+      //        focus as it is very tied to this specific window on some
+      //        platforms and we want to be able to open subwindows.
+      dw->ungrabKeyboard();
+      break;
+    }
+  }
+#endif
+
+  return ret;
+}
+
+
 void DesktopWindow::grabKeyboard()
 {
   // Grabbing the keyboard is fairly safe as FLTK reroutes events to the
