Cleaned up functions printing information

This commit is contained in:
Armin Novak 2022-10-19 16:03:20 +02:00 committed by akallabeth
parent 4b9c8e6393
commit 7e82c9f19f
2 changed files with 130 additions and 133 deletions

View File

@ -62,23 +62,30 @@
static BOOL freerdp_client_print_codepages(const char* arg)
{
size_t count = 0, x;
size_t count = 0;
DWORD column = 2;
const char* filter = NULL;
char buffer[80];
RDP_CODEPAGE* pages;
if (arg)
filter = strchr(arg, ',') + 1;
{
filter = strchr(arg, ',');
if (!filter)
filter = arg;
else
filter++;
}
pages = freerdp_keyboard_get_matching_codepages(column, filter, &count);
if (!pages)
return TRUE;
printf("%-10s %-8s %-60s %-36s %-48s\n", "<id>", "<locale>", "<win langid>", "<language>",
"<country>");
for (x = 0; x < count; x++)
for (size_t x = 0; x < count; x++)
{
const RDP_CODEPAGE* page = &pages[x];
char buffer[80] = { 0 };
if (strnlen(page->subLanguageSymbol, ARRAYSIZE(page->subLanguageSymbol)) > 0)
_snprintf(buffer, sizeof(buffer), "[%s|%s]", page->primaryLanguageSymbol,
page->subLanguageSymbol);
@ -1210,59 +1217,41 @@ BOOL freerdp_set_connection_type(rdpSettings* settings, UINT32 type)
return TRUE;
}
static int freerdp_map_keyboard_layout_name_to_id(char* name)
static UINT32 freerdp_get_keyboard_layout_for_type(const char* name, DWORD type)
{
int i;
int id = 0;
RDP_KEYBOARD_LAYOUT* layouts;
layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_STANDARD);
size_t count = 0, x;
RDP_KEYBOARD_LAYOUT* layouts =
freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_STANDARD, &count);
if (!layouts)
return -1;
if (!layouts || (count == 0))
return FALSE;
for (i = 0; layouts[i].code; i++)
for (x = 0; x < count; x++)
{
if (_stricmp(layouts[i].name, name) == 0)
id = (int)layouts[i].code;
const RDP_KEYBOARD_LAYOUT* layout = &layouts[x];
if (_stricmp(layout->name, name) == 0)
{
return layout->code;
}
}
freerdp_keyboard_layouts_free(layouts);
freerdp_keyboard_layouts_free(layouts, count);
return 0;
}
if (id)
return id;
static UINT32 freerdp_map_keyboard_layout_name_to_id(const char* name)
{
size_t x;
const UINT32 variants[] = { RDP_KEYBOARD_LAYOUT_TYPE_STANDARD, RDP_KEYBOARD_LAYOUT_TYPE_VARIANT,
RDP_KEYBOARD_LAYOUT_TYPE_IME };
layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_VARIANT);
if (!layouts)
return -1;
for (i = 0; layouts[i].code; i++)
for (x = 0; x < ARRAYSIZE(variants); x++)
{
if (_stricmp(layouts[i].name, name) == 0)
id = (int)layouts[i].code;
UINT32 rc = freerdp_get_keyboard_layout_for_type(name, variants[x]);
if (rc > 0)
return rc;
}
freerdp_keyboard_layouts_free(layouts);
if (id)
return id;
layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_IME);
if (!layouts)
return -1;
for (i = 0; layouts[i].code; i++)
{
if (_stricmp(layouts[i].name, name) == 0)
id = (int)layouts[i].code;
}
freerdp_keyboard_layouts_free(layouts);
if (id)
return id;
return 0;
}
@ -1430,6 +1419,90 @@ int freerdp_client_settings_command_line_status_print(rdpSettings* settings, int
return freerdp_client_settings_command_line_status_print_ex(settings, status, argc, argv, NULL);
}
static void freerdp_client_print_keyboard_type_list(const char* msg, DWORD type)
{
size_t x, count = 0;
RDP_KEYBOARD_LAYOUT* layouts;
layouts = freerdp_keyboard_get_layouts(type, &count);
printf("\n%s\n", msg);
for (x = 0; x < count; x++)
{
const RDP_KEYBOARD_LAYOUT* layout = &layouts[x];
printf("0x%08" PRIX32 "\t%s\n", layout->code, layout->name);
}
freerdp_keyboard_layouts_free(layouts, count);
}
static void freerdp_client_print_keyboard_list(void)
{
freerdp_client_print_keyboard_type_list("Keyboard Layouts", RDP_KEYBOARD_LAYOUT_TYPE_STANDARD);
freerdp_client_print_keyboard_type_list("Keyboard Layout Variants",
RDP_KEYBOARD_LAYOUT_TYPE_VARIANT);
freerdp_client_print_keyboard_type_list("Keyboard Layout Variants",
RDP_KEYBOARD_LAYOUT_TYPE_IME);
}
static void freerdp_client_print_tune_list(const rdpSettings* settings)
{
size_t x;
SSIZE_T type = 0;
printf("%s\t%50s\t%s\t%s", "<index>", "<key>", "<type>", "<default value>\n");
for (x = 0; x < FreeRDP_Settings_StableAPI_MAX; x++)
{
const char* name = freerdp_settings_get_name_for_key(x);
type = freerdp_settings_get_type_for_key(x);
switch (type)
{
case RDP_SETTINGS_TYPE_BOOL:
printf("%" PRIuz "\t%50s\tBOOL\t%s\n", x, name,
freerdp_settings_get_bool(settings, x) ? "TRUE" : "FALSE");
break;
case RDP_SETTINGS_TYPE_UINT16:
printf("%" PRIuz "\t%50s\tUINT16\t%" PRIu16 "\n", x, name,
freerdp_settings_get_uint16(settings, x));
break;
case RDP_SETTINGS_TYPE_INT16:
printf("%" PRIuz "\t%50s\tINT16\t%" PRId16 "\n", x, name,
freerdp_settings_get_int16(settings, x));
break;
case RDP_SETTINGS_TYPE_UINT32:
printf("%" PRIuz "\t%50s\tUINT32\t%" PRIu32 "\n", x, name,
freerdp_settings_get_uint32(settings, x));
break;
case RDP_SETTINGS_TYPE_INT32:
printf("%" PRIuz "\t%50s\tINT32\t%" PRId32 "\n", x, name,
freerdp_settings_get_int32(settings, x));
break;
case RDP_SETTINGS_TYPE_UINT64:
printf("%" PRIuz "\t%50s\tUINT64\t%" PRIu64 "\n", x, name,
freerdp_settings_get_uint64(settings, x));
break;
case RDP_SETTINGS_TYPE_INT64:
printf("%" PRIuz "\t%50s\tINT64\t%" PRId64 "\n", x, name,
freerdp_settings_get_int64(settings, x));
break;
case RDP_SETTINGS_TYPE_STRING:
printf("%" PRIuz "\t%50s\tSTRING\t%s"
"\n",
x, name, freerdp_settings_get_string(settings, x));
break;
case RDP_SETTINGS_TYPE_POINTER:
printf("%" PRIuz "\t%50s\tPOINTER\t%p"
"\n",
x, name, freerdp_settings_get_pointer(settings, x));
break;
default:
break;
}
}
}
int freerdp_client_settings_command_line_status_print_ex(rdpSettings* settings, int status,
int argc, char** argv,
const COMMAND_LINE_ARGUMENT_A* custom)
@ -1455,6 +1528,7 @@ int freerdp_client_settings_command_line_status_print_ex(rdpSettings* settings,
CommandLineParseArgumentsA(argc, argv, largs, 0x112, NULL, NULL, NULL);
arg = CommandLineFindArgumentA(largs, "kbd-lang-list");
WINPR_ASSERT(arg);
if (arg->Flags & COMMAND_LINE_ARGUMENT_PRESENT)
{
@ -1462,39 +1536,15 @@ int freerdp_client_settings_command_line_status_print_ex(rdpSettings* settings,
}
arg = CommandLineFindArgumentA(largs, "kbd-list");
WINPR_ASSERT(arg);
if (arg->Flags & COMMAND_LINE_VALUE_PRESENT)
{
DWORD i;
RDP_KEYBOARD_LAYOUT* layouts;
layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_STANDARD);
// if (!layouts) /* FIXME*/
printf("\nKeyboard Layouts\n");
for (i = 0; layouts[i].code; i++)
printf("0x%08" PRIX32 "\t%s\n", layouts[i].code, layouts[i].name);
freerdp_keyboard_layouts_free(layouts);
layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_VARIANT);
// if (!layouts) /* FIXME*/
printf("\nKeyboard Layout Variants\n");
for (i = 0; layouts[i].code; i++)
printf("0x%08" PRIX32 "\t%s\n", layouts[i].code, layouts[i].name);
freerdp_keyboard_layouts_free(layouts);
layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_IME);
// if (!layouts) /* FIXME*/
printf("\nKeyboard Input Method Editors (IMEs)\n");
for (i = 0; layouts[i].code; i++)
printf("0x%08" PRIX32 "\t%s\n", layouts[i].code, layouts[i].name);
freerdp_keyboard_layouts_free(layouts);
printf("\n");
freerdp_client_print_keyboard_list();
}
arg = CommandLineFindArgumentA(largs, "monitor-list");
WINPR_ASSERT(arg);
if (arg->Flags & COMMAND_LINE_VALUE_PRESENT)
{
@ -1502,12 +1552,15 @@ int freerdp_client_settings_command_line_status_print_ex(rdpSettings* settings,
}
arg = CommandLineFindArgumentA(largs, "smartcard-list");
WINPR_ASSERT(arg);
if (arg->Flags & COMMAND_LINE_VALUE_PRESENT)
{
freerdp_smartcard_list(settings);
}
arg = CommandLineFindArgumentA(largs, "kbd-scancode-list");
WINPR_ASSERT(arg);
if (arg->Flags & COMMAND_LINE_VALUE_PRESENT)
{
@ -2079,10 +2132,6 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
free(ptr.p);
}
}
CommandLineSwitchCase(arg, "monitor-list")
{
settings->ListMonitors = enable;
}
CommandLineSwitchCase(arg, "t")
{
if (!freerdp_settings_set_string(settings, FreeRDP_WindowTitle, arg->Value))
@ -2178,9 +2227,9 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
if (!value_to_int(arg->Value, &val, 1, UINT32_MAX))
{
const int rc = freerdp_map_keyboard_layout_name_to_id(arg->Value);
const UINT32 rc = freerdp_map_keyboard_layout_name_to_id(arg->Value);
if (rc <= 0)
if (rc == 0)
{
WLog_ERR(TAG, "Could not identify keyboard layout: %s", arg->Value);
WLog_ERR(TAG, "Use /kbd-list to list available layouts");
@ -3555,59 +3604,7 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
}
CommandLineSwitchCase(arg, "tune-list")
{
size_t x;
SSIZE_T type = 0;
printf("%s\t%50s\t%s\t%s", "<index>", "<key>", "<type>", "<default value>\n");
for (x = 0; x < FreeRDP_Settings_StableAPI_MAX; x++)
{
const char* name = freerdp_settings_get_name_for_key(x);
type = freerdp_settings_get_type_for_key(x);
switch (type)
{
case RDP_SETTINGS_TYPE_BOOL:
printf("%" PRIuz "\t%50s\tBOOL\t%s\n", x, name,
freerdp_settings_get_bool(settings, x) ? "TRUE" : "FALSE");
break;
case RDP_SETTINGS_TYPE_UINT16:
printf("%" PRIuz "\t%50s\tUINT16\t%" PRIu16 "\n", x, name,
freerdp_settings_get_uint16(settings, x));
break;
case RDP_SETTINGS_TYPE_INT16:
printf("%" PRIuz "\t%50s\tINT16\t%" PRId16 "\n", x, name,
freerdp_settings_get_int16(settings, x));
break;
case RDP_SETTINGS_TYPE_UINT32:
printf("%" PRIuz "\t%50s\tUINT32\t%" PRIu32 "\n", x, name,
freerdp_settings_get_uint32(settings, x));
break;
case RDP_SETTINGS_TYPE_INT32:
printf("%" PRIuz "\t%50s\tINT32\t%" PRId32 "\n", x, name,
freerdp_settings_get_int32(settings, x));
break;
case RDP_SETTINGS_TYPE_UINT64:
printf("%" PRIuz "\t%50s\tUINT64\t%" PRIu64 "\n", x, name,
freerdp_settings_get_uint64(settings, x));
break;
case RDP_SETTINGS_TYPE_INT64:
printf("%" PRIuz "\t%50s\tINT64\t%" PRId64 "\n", x, name,
freerdp_settings_get_int64(settings, x));
break;
case RDP_SETTINGS_TYPE_STRING:
printf("%" PRIuz "\t%50s\tSTRING\t%s"
"\n",
x, name, freerdp_settings_get_string(settings, x));
break;
case RDP_SETTINGS_TYPE_POINTER:
printf("%" PRIuz "\t%50s\tPOINTER\t%p"
"\n",
x, name, freerdp_settings_get_pointer(settings, x));
break;
default:
break;
}
}
freerdp_client_print_tune_list(settings);
return COMMAND_LINE_STATUS_PRINT;
}
CommandLineSwitchDefault(arg)

View File

@ -401,7 +401,7 @@ static const COMMAND_LINE_ARGUMENT_A global_cmd_args[] = {
"Alt+Ctrl+Enter to toggle fullscreen" },
{ "tune", COMMAND_LINE_VALUE_REQUIRED, "<setting:value>,<setting:value>", "", NULL, -1, NULL,
"[experimental] directly manipulate freerdp settings, use with extreme caution!" },
{ "tune-list", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, NULL,
{ "tune-list", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT, NULL, NULL, NULL, -1, NULL,
"Print options allowed for /tune" },
{ "u", COMMAND_LINE_VALUE_REQUIRED, "[[<domain>\\]<user>|<user>[@<domain>]]", NULL, NULL, -1,
NULL, "Username" },