mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
[client,common] allow adding a named keyboard pipe
This allows starting FreeRDP clients with a named pipe that will type in text written to the named pipe as keyboard input
This commit is contained in:
committed by
Martin Fleisz
parent
382ef13b1d
commit
a01f3ec5ab
@@ -2173,6 +2173,11 @@ static int parse_kbd_options(rdpSettings* settings, const COMMAND_LINE_ARGUMENT_
|
||||
bval != PARSE_OFF))
|
||||
rc = COMMAND_LINE_ERROR_UNEXPECTED_VALUE;
|
||||
}
|
||||
else if (option_starts_with("pipe:", val))
|
||||
{
|
||||
if (!freerdp_settings_set_string(settings, FreeRDP_KeyboardPipeName, &val[5]))
|
||||
rc = COMMAND_LINE_ERROR_UNEXPECTED_VALUE;
|
||||
}
|
||||
#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
|
||||
else if (count == 1)
|
||||
{
|
||||
|
||||
@@ -248,12 +248,13 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = {
|
||||
#endif
|
||||
{ "kbd", COMMAND_LINE_VALUE_REQUIRED,
|
||||
"[layout:[0x<id>|<name>],lang:<0x<id>>,fn-key:<value>,type:<value>,subtype:<value>,unicode[:"
|
||||
"on|off],remap:<key1>=<value1>,remap:<key2>=<value2>]",
|
||||
"on|off],remap:<key1>=<value1>,remap:<key2>=<value2>,pipe:<filename>]",
|
||||
NULL, NULL, -1, NULL,
|
||||
"Keyboard related options:"
|
||||
"* layout: set the keybouard layout announced to the server"
|
||||
"* lang: set the keyboard language identifier sent to the server"
|
||||
"* fn-key: Function key value" },
|
||||
"* fn-key: Function key value"
|
||||
"* pipe: Name of a named pipe that can be used to type text into the RDP session" },
|
||||
#if defined(WITH_FREERDP_DEPRECATED_COMMANDLINE)
|
||||
{ "kbd-lang", COMMAND_LINE_VALUE_REQUIRED, "0x<id>", NULL, NULL, -1, NULL,
|
||||
"[DEPRECATED, use / kbd:lang:<value>] Keyboard active language identifier" },
|
||||
|
||||
@@ -845,6 +845,7 @@ extern "C"
|
||||
#define FreeRDP_HasHorizontalWheel (2634)
|
||||
#define FreeRDP_HasExtendedMouseEvent (2635)
|
||||
#define FreeRDP_SuspendInput (2636)
|
||||
#define FreeRDP_KeyboardPipeName (2637)
|
||||
#define FreeRDP_BrushSupportLevel (2688)
|
||||
#define FreeRDP_GlyphSupportLevel (2752)
|
||||
#define FreeRDP_GlyphCache (2753)
|
||||
@@ -1463,7 +1464,8 @@ extern "C"
|
||||
* input
|
||||
*/
|
||||
ALIGN64 BOOL SuspendInput; /* 2636 */
|
||||
UINT64 padding2688[2688 - 2637]; /* 2637 */
|
||||
ALIGN64 char* KeyboardPipeName; /* 2637 */
|
||||
UINT64 padding2688[2688 - 2638]; /* 2638 */
|
||||
|
||||
/* Brush Capabilities */
|
||||
ALIGN64 UINT32 BrushSupportLevel; /* 2688 */
|
||||
|
||||
@@ -2685,6 +2685,9 @@ const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id)
|
||||
case FreeRDP_KerberosStartTime:
|
||||
return settings->KerberosStartTime;
|
||||
|
||||
case FreeRDP_KeyboardPipeName:
|
||||
return settings->KeyboardPipeName;
|
||||
|
||||
case FreeRDP_KeyboardRemappingList:
|
||||
return settings->KeyboardRemappingList;
|
||||
|
||||
@@ -2960,6 +2963,9 @@ char* freerdp_settings_get_string_writable(rdpSettings* settings, size_t id)
|
||||
case FreeRDP_KerberosStartTime:
|
||||
return settings->KerberosStartTime;
|
||||
|
||||
case FreeRDP_KeyboardPipeName:
|
||||
return settings->KeyboardPipeName;
|
||||
|
||||
case FreeRDP_KeyboardRemappingList:
|
||||
return settings->KeyboardRemappingList;
|
||||
|
||||
@@ -3244,6 +3250,9 @@ BOOL freerdp_settings_set_string_(rdpSettings* settings, size_t id, char* val, s
|
||||
case FreeRDP_KerberosStartTime:
|
||||
return update_string_(&settings->KerberosStartTime, cnv.c, len);
|
||||
|
||||
case FreeRDP_KeyboardPipeName:
|
||||
return update_string_(&settings->KeyboardPipeName, cnv.c, len);
|
||||
|
||||
case FreeRDP_KeyboardRemappingList:
|
||||
return update_string_(&settings->KeyboardRemappingList, cnv.c, len);
|
||||
|
||||
@@ -3544,6 +3553,9 @@ BOOL freerdp_settings_set_string_copy_(rdpSettings* settings, size_t id, const c
|
||||
case FreeRDP_KerberosStartTime:
|
||||
return update_string_copy_(&settings->KerberosStartTime, cnv.cc, len, cleanup);
|
||||
|
||||
case FreeRDP_KeyboardPipeName:
|
||||
return update_string_copy_(&settings->KeyboardPipeName, cnv.cc, len, cleanup);
|
||||
|
||||
case FreeRDP_KeyboardRemappingList:
|
||||
return update_string_copy_(&settings->KeyboardRemappingList, cnv.cc, len, cleanup);
|
||||
|
||||
|
||||
@@ -475,6 +475,7 @@ static const struct settings_str_entry settings_map[] = {
|
||||
{ FreeRDP_KerberosRenewableLifeTime, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_KerberosRenewableLifeTime" },
|
||||
{ FreeRDP_KerberosStartTime, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KerberosStartTime" },
|
||||
{ FreeRDP_KeyboardPipeName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KeyboardPipeName" },
|
||||
{ FreeRDP_KeyboardRemappingList, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_KeyboardRemappingList" },
|
||||
{ FreeRDP_NtlmSamFile, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_NtlmSamFile" },
|
||||
|
||||
@@ -385,6 +385,7 @@ static const size_t string_list_indices[] = {
|
||||
FreeRDP_KerberosRealm,
|
||||
FreeRDP_KerberosRenewableLifeTime,
|
||||
FreeRDP_KerberosStartTime,
|
||||
FreeRDP_KeyboardPipeName,
|
||||
FreeRDP_KeyboardRemappingList,
|
||||
FreeRDP_NtlmSamFile,
|
||||
FreeRDP_Password,
|
||||
|
||||
Reference in New Issue
Block a user