? 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 "Au:L:d:s:c:p:n:k:g:fbBeEmzCDKS:T:NX:a:x:Pr:045h?")) != -1) + VNCOPT "Au:L:d:s:c:p:n:k:g:fbBeEMmzCDKS: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;