Created
October 4, 2011 16:33
-
-
Save anonymous/1262109 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/client/X11/xf_window.c b/client/X11/xf_window.c | |
index 06e0b43..607f506 100644 | |
--- a/client/X11/xf_window.c | |
+++ b/client/X11/xf_window.c | |
@@ -229,8 +229,10 @@ xfWindow* xf_CreateDesktopWindow(xfInfo* xfi, char* name, int width, int height) | |
input_mask = | |
KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | | |
VisibilityChangeMask | FocusChangeMask | StructureNotifyMask | | |
- PointerMotionMask | ExposureMask | EnterWindowMask | LeaveWindowMask | | |
- PropertyChangeMask; | |
+ PointerMotionMask | ExposureMask | PropertyChangeMask; | |
+ | |
+ if (xfi->grab_keyboard) | |
+ input_mask |= EnterWindowMask | LeaveWindowMask; | |
XSelectInput(xfi->display, window->handle, input_mask); | |
XMapWindow(xfi->display, window->handle); | |
diff --git a/client/X11/xfreerdp.c b/client/X11/xfreerdp.c | |
index 6c63dcc..6fecc55 100644 | |
--- a/client/X11/xfreerdp.c | |
+++ b/client/X11/xfreerdp.c | |
@@ -495,6 +495,7 @@ boolean xf_pre_connect(freerdp* instance) | |
xfi->decoration = settings->decorations; | |
xfi->remote_app = settings->remote_app; | |
xfi->fullscreen = settings->fullscreen; | |
+ xfi->grab_keyboard = settings->grab_keyboard; | |
xfi->fullscreen_toggle = xfi->fullscreen; | |
xfi->sw_gdi = settings->sw_gdi; | |
diff --git a/client/X11/xfreerdp.h b/client/X11/xfreerdp.h | |
index 6728c24..6729f24 100644 | |
--- a/client/X11/xfreerdp.h | |
+++ b/client/X11/xfreerdp.h | |
@@ -73,6 +73,7 @@ struct xf_info | |
int scanline_pad; | |
boolean big_endian; | |
boolean fullscreen; | |
+ boolean grab_keyboard; | |
boolean unobscured; | |
boolean decoration; | |
freerdp* instance; | |
diff --git a/include/freerdp/settings.h b/include/freerdp/settings.h | |
index 530086f..2d73738 100644 | |
--- a/include/freerdp/settings.h | |
+++ b/include/freerdp/settings.h | |
@@ -189,6 +189,7 @@ struct rdp_settings | |
boolean sw_gdi; | |
boolean workarea; | |
boolean fullscreen; | |
+ boolean grab_keyboard; | |
boolean decorations; | |
uint32 rdp_version; | |
uint16 color_depth; | |
diff --git a/libfreerdp-core/settings.c b/libfreerdp-core/settings.c | |
index 2635f65..42a2873 100644 | |
--- a/libfreerdp-core/settings.c | |
+++ b/libfreerdp-core/settings.c | |
@@ -43,6 +43,7 @@ rdpSettings* settings_new(void* instance) | |
settings->height = 768; | |
settings->workarea = False; | |
settings->fullscreen = False; | |
+ settings->grab_keyboard = True; | |
settings->decorations = True; | |
settings->rdp_version = 7; | |
settings->color_depth = 16; | |
diff --git a/libfreerdp-utils/args.c b/libfreerdp-utils/args.c | |
index 4a65f67..2799180 100644 | |
--- a/libfreerdp-utils/args.c | |
+++ b/libfreerdp-utils/args.c | |
@@ -67,6 +67,7 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv, | |
" -g: set geometry, using format WxH or X%% or 'workarea', default is 1024x768\n" | |
" -h: print this help\n" | |
" -k: set keyboard layout ID\n" | |
+ " -K: do not interfere with window manager bindings\n" | |
" -m: don't send mouse motion events\n" | |
" -n: hostname\n" | |
" -o: console audio\n" | |
@@ -215,6 +216,10 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv, | |
} | |
sscanf(argv[index], "%X", &(settings->kbd_layout)); | |
} | |
+ else if (strcmp("-K", argv[index]) == 0) | |
+ { | |
+ settings->grab_keyboard = False; | |
+ } | |
else if (strcmp("-n", argv[index]) == 0) | |
{ | |
index++; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment