? aclocal.m4
Index: rdesktop.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/rdesktop.c,v
retrieving revision 1.163
diff -u -r1.163 rdesktop.c
--- rdesktop.c	5 Apr 2008 06:15:45 -0000	1.163
+++ rdesktop.c	5 Aug 2008 11:46:04 -0000
@@ -73,6 +73,7 @@
 int g_win_button_size = 0;	/* If zero, disable single app mode */
 RD_BOOL g_bitmap_compression = True;
 RD_BOOL g_sendmotion = True;
+RD_BOOL g_send_physical_buttons = True;
 RD_BOOL g_bitmap_cache = True;
 RD_BOOL g_bitmap_cache_persist_enable = False;
 RD_BOOL g_bitmap_cache_precache = True;
@@ -152,6 +153,7 @@
 	fprintf(stderr, "   -B: use BackingStore of X-server (if available)\n");
 	fprintf(stderr, "   -e: disable encryption (French TS)\n");
 	fprintf(stderr, "   -E: disable encryption from client to server\n");
+	fprintf(stderr, "   -M: do not map logical mouse buttons to physical\n");
 	fprintf(stderr, "   -m: do not send motion events\n");
 	fprintf(stderr, "   -C: use private colour map\n");
 	fprintf(stderr, "   -D: hide window manager decorations\n");
@@ -450,7 +452,7 @@
 #endif
 
 	while ((c = getopt(argc, argv,
-			   VNCOPT "A:u:L:d:s:c:p:n:k:g:o:fbBeEitmzCDKS:T:NX:a:x:Pr:045h?")) != -1)
+			   VNCOPT "A:u:L:d:s:c:p:n:k:g:o:fbBeEitMmzCDKS:T:NX:a:x:Pr:045h?")) != -1)
 	{
 		switch (c)
 		{
@@ -584,6 +586,9 @@
 			case 'E':
 				g_packet_encryption = False;
 				break;
+			case 'M':
+				g_send_physical_buttons = False;
+				break;
 			case 'm':
 				g_sendmotion = False;
 				break;
Index: xwin.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/xwin.c,v
retrieving revision 1.235
diff -u -r1.235 xwin.c
--- xwin.c	11 Jul 2008 03:51:23 -0000	1.235
+++ xwin.c	5 Aug 2008 11:46:06 -0000
@@ -36,6 +36,7 @@
 extern int g_ypos;
 extern int g_pos;
 extern RD_BOOL g_sendmotion;
+extern RD_BOOL g_send_physical_buttons;
 extern RD_BOOL g_fullscreen;
 extern RD_BOOL g_grab_keyboard;
 extern RD_BOOL g_hide_decorations;
@@ -2190,7 +2191,8 @@
 	   receive physical buttons (true in mstsc as well) and
 	   logical button behavior depends on the remote desktop's own
 	   mouse settings */
-	xevent.xbutton.button = g_pointer_log_to_phys_map[xevent.xbutton.button - 1];
+	if (g_send_physical_buttons)
+		xevent.xbutton.button = g_pointer_log_to_phys_map[xevent.xbutton.button - 1];
 	button = xkeymap_translate_button(xevent.xbutton.button);
 	if (button == 0)
 		return;

 	  	 

