add -M for local mouse cursor
This commit is contained in:
parent
5aa5a9dbfc
commit
e7cda3dbf8
@ -128,6 +128,11 @@ but everything after this is unencrypted (including interactive logins).
|
|||||||
Do not send mouse motion events. This saves bandwidth, although some Windows
|
Do not send mouse motion events. This saves bandwidth, although some Windows
|
||||||
applications may rely on receiving mouse motion.
|
applications may rely on receiving mouse motion.
|
||||||
.TP
|
.TP
|
||||||
|
.BR "-M"
|
||||||
|
Use local X cursor inherited from window manager instead of server cursor. This
|
||||||
|
is mostly useful with -m, but is also useful if the server is sending bogus
|
||||||
|
mouse cursors.
|
||||||
|
.TP
|
||||||
.BR "-C"
|
.BR "-C"
|
||||||
Use private colourmap. This will improve colour accuracy on an 8-bit display,
|
Use private colourmap. This will improve colour accuracy on an 8-bit display,
|
||||||
but rdesktop will appear in false colour when not focused.
|
but rdesktop will appear in false colour when not focused.
|
||||||
|
13
rdesktop.c
13
rdesktop.c
@ -96,6 +96,7 @@ RD_BOOL g_desktop_save = True; /* desktop save order */
|
|||||||
RD_BOOL g_polygon_ellipse_orders = True; /* polygon / ellipse orders */
|
RD_BOOL g_polygon_ellipse_orders = True; /* polygon / ellipse orders */
|
||||||
RD_BOOL g_fullscreen = False;
|
RD_BOOL g_fullscreen = False;
|
||||||
RD_BOOL g_grab_keyboard = True;
|
RD_BOOL g_grab_keyboard = True;
|
||||||
|
RD_BOOL g_local_cursor = False;
|
||||||
RD_BOOL g_hide_decorations = False;
|
RD_BOOL g_hide_decorations = False;
|
||||||
RDP_VERSION g_rdp_version = RDP_V5; /* Default to version 5 */
|
RDP_VERSION g_rdp_version = RDP_V5; /* Default to version 5 */
|
||||||
RD_BOOL g_rdpclip = True;
|
RD_BOOL g_rdpclip = True;
|
||||||
@ -182,6 +183,7 @@ usage(char *program)
|
|||||||
fprintf(stderr, " -e: disable encryption (French TS)\n");
|
fprintf(stderr, " -e: disable encryption (French TS)\n");
|
||||||
fprintf(stderr, " -E: disable encryption from client to server\n");
|
fprintf(stderr, " -E: disable encryption from client to server\n");
|
||||||
fprintf(stderr, " -m: do not send motion events\n");
|
fprintf(stderr, " -m: do not send motion events\n");
|
||||||
|
fprintf(stderr, " -M: use local mouse cursor\n");
|
||||||
fprintf(stderr, " -C: use private colour map\n");
|
fprintf(stderr, " -C: use private colour map\n");
|
||||||
fprintf(stderr, " -D: hide window manager decorations\n");
|
fprintf(stderr, " -D: hide window manager decorations\n");
|
||||||
fprintf(stderr, " -K: keep window manager key bindings\n");
|
fprintf(stderr, " -K: keep window manager key bindings\n");
|
||||||
@ -638,7 +640,7 @@ main(int argc, char *argv[])
|
|||||||
g_num_devices = 0;
|
g_num_devices = 0;
|
||||||
|
|
||||||
while ((c = getopt(argc, argv,
|
while ((c = getopt(argc, argv,
|
||||||
"A:u:L:d:s:c:p:n:k:g:o:fbBeEitmzCDKS:T:NX:a:x:Pr:045vh?")) != -1)
|
"A:u:L:d:s:c:p:n:k:g:o:fbBeEitmMzCDKS:T:NX:a:x:Pr:045vh?")) != -1)
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
@ -787,6 +789,9 @@ main(int argc, char *argv[])
|
|||||||
case 'm':
|
case 'm':
|
||||||
g_sendmotion = False;
|
g_sendmotion = False;
|
||||||
break;
|
break;
|
||||||
|
case 'M':
|
||||||
|
g_local_cursor = True;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'C':
|
case 'C':
|
||||||
g_owncolmap = True;
|
g_owncolmap = True;
|
||||||
@ -1040,6 +1045,12 @@ main(int argc, char *argv[])
|
|||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
return EX_USAGE;
|
return EX_USAGE;
|
||||||
}
|
}
|
||||||
|
if (g_local_cursor)
|
||||||
|
{
|
||||||
|
/* there is no point wasting bandwidth on cursor shadows
|
||||||
|
* that we're just going to throw out anyway */
|
||||||
|
g_rdp5_performanceflags |= PERF_DISABLE_CURSOR_SHADOW;
|
||||||
|
}
|
||||||
|
|
||||||
STRNCPY(server, argv[optind], sizeof(server));
|
STRNCPY(server, argv[optind], sizeof(server));
|
||||||
parse_server_and_port(server);
|
parse_server_and_port(server);
|
||||||
|
2
rdp.c
2
rdp.c
@ -1171,6 +1171,7 @@ process_demand_active(STREAM s)
|
|||||||
static void
|
static void
|
||||||
process_colour_pointer_common(STREAM s, int bpp)
|
process_colour_pointer_common(STREAM s, int bpp)
|
||||||
{
|
{
|
||||||
|
extern RD_BOOL g_local_cursor;
|
||||||
uint16 width, height, cache_idx, masklen, datalen;
|
uint16 width, height, cache_idx, masklen, datalen;
|
||||||
uint16 x, y;
|
uint16 x, y;
|
||||||
uint8 *mask;
|
uint8 *mask;
|
||||||
@ -1194,6 +1195,7 @@ process_colour_pointer_common(STREAM s, int bpp)
|
|||||||
/* keep hotspot within cursor bounding box */
|
/* keep hotspot within cursor bounding box */
|
||||||
x = MIN(x, width - 1);
|
x = MIN(x, width - 1);
|
||||||
y = MIN(y, height - 1);
|
y = MIN(y, height - 1);
|
||||||
|
if (g_local_cursor) return ; /* don't bother creating a cursor we won't use */
|
||||||
cursor = ui_create_cursor(x, y, width, height, mask, data, bpp);
|
cursor = ui_create_cursor(x, y, width, height, mask, data, bpp);
|
||||||
ui_set_cursor(cursor);
|
ui_set_cursor(cursor);
|
||||||
cache_put_cursor(cache_idx, cursor);
|
cache_put_cursor(cache_idx, cursor);
|
||||||
|
2
xwin.c
2
xwin.c
@ -3088,6 +3088,8 @@ ui_create_cursor(unsigned int xhot, unsigned int yhot, uint32 width,
|
|||||||
void
|
void
|
||||||
ui_set_cursor(RD_HCURSOR cursor)
|
ui_set_cursor(RD_HCURSOR cursor)
|
||||||
{
|
{
|
||||||
|
extern RD_BOOL g_local_cursor;
|
||||||
|
if (g_local_cursor) return ;
|
||||||
logger(GUI, Debug, "ui_set_cursor(): g_current_cursor = %p, new = %p",
|
logger(GUI, Debug, "ui_set_cursor(): g_current_cursor = %p, new = %p",
|
||||||
g_current_cursor, cursor);
|
g_current_cursor, cursor);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user