From 84d008940192f612506b62837f561fc20e5f8423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benoi=CC=82t=20LeBlanc?= Date: Tue, 8 Jul 2014 16:32:28 -0400 Subject: [PATCH] Added KeyboardHook to settings --- client/common/file.c | 5 +++++ include/freerdp/settings.h | 9 ++++++++- libfreerdp/common/settings.c | 8 ++++++++ libfreerdp/core/settings.c | 1 + 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/client/common/file.c b/client/common/file.c index c4937343a..0642384b0 100644 --- a/client/common/file.c +++ b/client/common/file.c @@ -1013,6 +1013,11 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* freerdp_set_param_bool(settings, FreeRDP_RedirectDrives, TRUE); } + if (~file->KeyboardHook) + { + freerdp_set_param_uint32(settings, FreeRDP_KeyboardHook, file->KeyboardHook); + } + if (file->argc > 1) { char* ConnectionFile = settings->ConnectionFile; diff --git a/include/freerdp/settings.h b/include/freerdp/settings.h index 07fc0d354..dbc09f9fc 100644 --- a/include/freerdp/settings.h +++ b/include/freerdp/settings.h @@ -222,6 +222,11 @@ #define LB_CLIENT_TSV_URL 0x00001000 #define LB_SERVER_TSV_CAPABLE 0x00002000 +/* Keyboard Hook */ +#define KEYBOARD_HOOK_LOCAL 0 +#define KEYBOARD_HOOK_REMOTE 1 +#define KEYBOARD_HOOK_FULLSCREEN_ONLY 2 + struct _TARGET_NET_ADDRESS { UINT32 Length; @@ -725,6 +730,7 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL; #define FreeRDP_FastPathInput 2630 #define FreeRDP_MultiTouchInput 2631 #define FreeRDP_MultiTouchGestures 2632 +#define FreeRDP_KeyboardHook 2633 #define FreeRDP_BrushSupportLevel 2688 #define FreeRDP_GlyphSupportLevel 2752 #define FreeRDP_GlyphCache 2753 @@ -1174,7 +1180,8 @@ struct rdp_settings ALIGN64 BOOL FastPathInput; /* 2630 */ ALIGN64 BOOL MultiTouchInput; /* 2631 */ ALIGN64 BOOL MultiTouchGestures; /* 2632 */ - UINT64 padding2688[2688 - 2633]; /* 2633 */ + ALIGN64 UINT32 KeyboardHook; /* 2633 */ + UINT64 padding2688[2688 - 2634]; /* 2634 */ /* Brush Capabilities */ ALIGN64 UINT32 BrushSupportLevel; /* 2688 */ diff --git a/libfreerdp/common/settings.c b/libfreerdp/common/settings.c index 97df29b15..e07bde9cf 100644 --- a/libfreerdp/common/settings.c +++ b/libfreerdp/common/settings.c @@ -1870,6 +1870,10 @@ UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id) return settings->KeyboardFunctionKey; break; + case FreeRDP_KeyboardHook: + return settings->KeyboardHook; + break; + case FreeRDP_BrushSupportLevel: return settings->BrushSupportLevel; break; @@ -2179,6 +2183,10 @@ int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param) settings->KeyboardFunctionKey = param; break; + case FreeRDP_KeyboardHook: + settings->KeyboardHook = param; + break; + case FreeRDP_BrushSupportLevel: settings->BrushSupportLevel = param; break; diff --git a/libfreerdp/core/settings.c b/libfreerdp/core/settings.c index fc40a0633..c58245fb1 100644 --- a/libfreerdp/core/settings.c +++ b/libfreerdp/core/settings.c @@ -557,6 +557,7 @@ rdpSettings* freerdp_settings_clone(rdpSettings* settings) _settings->KeyboardType = settings->KeyboardType; /* 2625 */ _settings->KeyboardSubType = settings->KeyboardSubType; /* 2626 */ _settings->KeyboardFunctionKey = settings->KeyboardFunctionKey; /* 2627 */ + _settings->KeyboardHook = settings->KeyboardHook; /* 2633 */ _settings->BrushSupportLevel = settings->BrushSupportLevel; /* 2688 */ _settings->GlyphSupportLevel = settings->GlyphSupportLevel; /* 2752 */ _settings->OffscreenSupportLevel = settings->OffscreenSupportLevel; /* 2816 */