Index: /trunk/src/VBox/RDP/client/Makefile.kmk
===================================================================
--- /trunk/src/VBox/RDP/client/Makefile.kmk	(revision 38835)
+++ /trunk/src/VBox/RDP/client/Makefile.kmk	(revision 38836)
@@ -44,4 +44,7 @@
 	KEYMAP_PATH=$(if $(findstring RTPATH_APP_PRIVATE,$(DEFS)),RTPATH_APP_PRIVATE,\"/opt/VirtualBox\")\"/rdesktop-vrdp-keymaps\" \
 	RDESKTOP=1
+ifdef WITH_BIRD_VD_HACKS
+ rdesktop-vrdp_DEFS += WITH_BIRD_VD_HACKS
+endif
 
 rdesktop-vrdp_DEFS.linux = \
Index: /trunk/src/VBox/RDP/client/rdesktop.c
===================================================================
--- /trunk/src/VBox/RDP/client/rdesktop.c	(revision 38835)
+++ /trunk/src/VBox/RDP/client/rdesktop.c	(revision 38836)
@@ -139,4 +139,8 @@
 #endif
 
+#ifdef WITH_BIRD_VD_HACKS
+RD_BOOL g_keep_virtual_desktop_shortcuts = False;
+#endif
+
 #ifdef HAVE_ICONV
 char g_codepage[16] = "";
@@ -251,4 +255,8 @@
 	fprintf(stderr, "   -4: use RDP version 4\n");
 	fprintf(stderr, "   -5: use RDP version 5 (default)\n");
+#ifdef WITH_BIRD_VD_HACKS
+	fprintf(stderr, "   -H keep-virtual-desktop-shortcuts: Keep keyboard shortcuts typical\n"
+	                "      for switching virtual desktops (C-A-Left/Right). \n");
+#endif
 }
 
@@ -538,7 +546,12 @@
 #define VNCOPT
 #endif
+#ifdef WITH_BIRD_VD_HACKS
+#define VDHOPT "H:"
+#else
+#define VDHOPT
+#endif
 
 	while ((c = getopt(argc, argv,
-			   VNCOPT "Au:L:d:s:c:p:n:k:g:fbBeEmzCDKS:T:NX:a:x:Pr:045h?")) != -1)
+			   VNCOPT VDHOPT "Au:L:d:s:c:p:n:k:g:fbBeEmzCDKS:T:NX:a:x:Pr:045h?")) != -1)
 	{
 		switch (c)
@@ -883,4 +896,13 @@
 				g_use_rdp5 = True;
 				break;
+
+#ifdef WITH_BIRD_VD_HACKS
+			case 'H': /* hacks */
+				if (!strcmp(optarg, "keep-virtual-desktop-shortcuts"))
+					g_keep_virtual_desktop_shortcuts = True;
+				else
+					error("Unknown -H argument\n\n\tPossible argument is: keep-virtual-desktop-shortcuts\n");
+				break;
+#endif
 
 			case 'h':
Index: /trunk/src/VBox/RDP/client/xkeymap.c
===================================================================
--- /trunk/src/VBox/RDP/client/xkeymap.c	(revision 38835)
+++ /trunk/src/VBox/RDP/client/xkeymap.c	(revision 38836)
@@ -665,5 +665,29 @@
 				ui_seamless_toggle();
 			break;
-
+#ifdef WITH_BIRD_VD_HACKS
+		case XK_Left:
+		case XK_Right:
+		{
+			/* Check for typical virtual desktop switching hotkeys:
+			       Ctrl-Alt-Left and Ctrl-Alt-Right.
+			   Needs to be pressed twice to have any effect... */
+			extern RD_BOOL g_keep_virtual_desktop_shortcuts;
+			extern RD_BOOL g_fullscreen;
+			if (   g_keep_virtual_desktop_shortcuts
+			    && (   (   get_key_state(state, XK_Alt_L)
+			            || get_key_state(state, XK_Alt_R))
+			        && (   get_key_state(state, XK_Control_L)
+			            || get_key_state(state, XK_Control_R))
+			       )
+			   )
+			{
+				if (g_fullscreen)
+					xwin_toggle_fullscreen();
+				XUngrabKeyboard(g_display, CurrentTime);
+				return True;
+			}
+			break;
+		}
+#endif
 	}
 	return False;
