FreeRDP
Loading...
Searching...
No Matches
xf_cmdline.c
1
20#include <freerdp/config.h>
21#include <freerdp/client/cmdline.h>
22
23#include "xf_cmdline.h"
24#include "xfreerdp.h"
25
26static const COMMAND_LINE_ARGUMENT_A xf_args[] = {
27 { "defer-alt", COMMAND_LINE_VALUE_BOOL, nullptr, BoolValueFalse, nullptr, -1, nullptr,
28 "Defer Alt key down until another key is pressed. When enabled, Alt-Tab will not activate "
29 "the remote application menu. Useful when used together with -grab-keyboard (default: off)" },
30 { nullptr, 0, nullptr, nullptr, nullptr, -1, nullptr, nullptr }
31};
32
33static int xf_client_handle_option(const COMMAND_LINE_ARGUMENT_A* arg, void* custom)
34{
35 xfContext* xfc = custom;
36 WINPR_ASSERT(xfc);
37 WINPR_ASSERT(arg);
38
39 if (arg->Name && (strcmp(arg->Name, "defer-alt") == 0))
40 {
41 xfc->deferAlt = arg->Value != nullptr;
42 return 0;
43 }
44 return 0;
45}
46
47int xf_client_settings_parse_command_line(xfContext* xfc, int argc, char** argv)
48{
49 WINPR_ASSERT(xfc);
50
51 COMMAND_LINE_ARGUMENT_A args[ARRAYSIZE(xf_args)] = WINPR_C_ARRAY_INIT;
52 memcpy(args, xf_args, sizeof(args));
53
54 xfc->deferAlt = FALSE;
55 return freerdp_client_settings_parse_command_line_ex(xfc->common.context.settings, argc, argv,
56 FALSE, args, ARRAYSIZE(args) - 1,
57 xf_client_handle_option, xfc);
58}
59
60int xf_client_settings_command_line_status_print(xfContext* xfc, int status, int argc, char** argv)
61{
62 WINPR_ASSERT(xfc);
63 return freerdp_client_settings_command_line_status_print_ex(xfc->common.context.settings,
64 status, argc, argv, xf_args);
65}