Fixed call to GetKeyboardLayout

This commit is contained in:
akallabeth 2020-12-15 09:59:52 +01:00
parent fa218f79c1
commit 8b8016ec21
2 changed files with 16 additions and 3 deletions

View File

@ -190,6 +190,7 @@ static BOOL wf_desktop_resize(rdpContext* context)
static BOOL wf_pre_connect(freerdp* instance)
{
UINT32 rc;
wfContext* wfc;
int desktopWidth;
int desktopHeight;
@ -256,8 +257,8 @@ static BOOL wf_pre_connect(freerdp* instance)
if (!freerdp_client_load_addins(context->channels, instance->settings))
return -1;
freerdp_set_param_uint32(settings, FreeRDP_KeyboardLayout,
(int)GetKeyboardLayout(0) & 0x0000FFFF);
rc = freerdp_keyboard_init(freerdp_settings_get_uint32(settings, FreeRDP_KeyboardLayout));
freerdp_set_param_uint32(settings, FreeRDP_KeyboardLayout, rc);
PubSub_SubscribeChannelConnected(instance->context->pubSub, wf_OnChannelConnectedEventHandler);
PubSub_SubscribeChannelDisconnected(instance->context->pubSub,
wf_OnChannelDisconnectedEventHandler);

View File

@ -48,7 +48,19 @@ DWORD X11_KEYCODE_TO_VIRTUAL_SCANCODE[256];
int freerdp_detect_keyboard(DWORD* keyboardLayoutId)
{
#if defined(_WIN32)
*keyboardLayoutId = (DWORD)GetKeyboardLayout(0) & 0x0000FFFF;
CHAR name[KL_NAMELENGTH + 1] = { 0 };
if (GetKeyboardLayoutNameA(name))
{
ULONG rc;
errno = 0;
rc = strtoul(name, NULL, 16);
if (errno == 0)
*keyboardLayoutId = rc;
}
if (*keyboardLayoutId == 0)
*keyboardLayoutId = ((DWORD)GetKeyboardLayout(0) >> 16) & 0x0000FFFF;
#endif
#ifdef WITH_X11