Update X11-modifier key state on focus_in
This commit is contained in:
parent
dd26659ab0
commit
525d089fa8
@ -317,6 +317,26 @@ UINT32 xf_keyboard_get_toggle_keys_state(xfContext* xfc)
|
|||||||
return toggleKeysState;
|
return toggleKeysState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void xk_keyboard_update_modifier_keys(xfContext* xfc)
|
||||||
|
{
|
||||||
|
int state;
|
||||||
|
size_t i;
|
||||||
|
KeyCode keycode;
|
||||||
|
int keysyms[] = {XK_Shift_L, XK_Shift_R, XK_Alt_L, XK_Alt_R,
|
||||||
|
XK_Control_L, XK_Control_R, XK_Super_L, XK_Super_R
|
||||||
|
};
|
||||||
|
state = xf_keyboard_read_keyboard_state(xfc);
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAYSIZE(keysyms); i++)
|
||||||
|
{
|
||||||
|
if (xf_keyboard_get_key_state(xfc, state, keysyms[i]))
|
||||||
|
{
|
||||||
|
keycode = XKeysymToKeycode(xfc->display, keysyms[i]);
|
||||||
|
xfc->KeyboardState[keycode] = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void xf_keyboard_focus_in(xfContext* xfc)
|
void xf_keyboard_focus_in(xfContext* xfc)
|
||||||
{
|
{
|
||||||
rdpInput* input;
|
rdpInput* input;
|
||||||
@ -330,6 +350,7 @@ void xf_keyboard_focus_in(xfContext* xfc)
|
|||||||
input = xfc->context.input;
|
input = xfc->context.input;
|
||||||
syncFlags = xf_keyboard_get_toggle_keys_state(xfc);
|
syncFlags = xf_keyboard_get_toggle_keys_state(xfc);
|
||||||
input->FocusInEvent(input, syncFlags);
|
input->FocusInEvent(input, syncFlags);
|
||||||
|
xk_keyboard_update_modifier_keys(xfc);
|
||||||
|
|
||||||
/* finish with a mouse pointer position like mstsc.exe if required */
|
/* finish with a mouse pointer position like mstsc.exe if required */
|
||||||
|
|
||||||
@ -388,6 +409,9 @@ static int xf_keyboard_execute_action_script(xfContext* xfc,
|
|||||||
if (mod->Alt)
|
if (mod->Alt)
|
||||||
strcat(combination, "Alt+");
|
strcat(combination, "Alt+");
|
||||||
|
|
||||||
|
if (mod->Super)
|
||||||
|
strcat(combination, "Super+");
|
||||||
|
|
||||||
strcat(combination, keyStr);
|
strcat(combination, keyStr);
|
||||||
count = ArrayList_Count(xfc->keyCombinations);
|
count = ArrayList_Count(xfc->keyCombinations);
|
||||||
|
|
||||||
@ -596,6 +620,7 @@ void xf_keyboard_handle_special_keys_release(xfContext* xfc, KeySym keysym)
|
|||||||
{
|
{
|
||||||
xf_toggle_control(xfc);
|
xf_toggle_control(xfc);
|
||||||
}
|
}
|
||||||
|
|
||||||
xfc->mouse_active = FALSE;
|
xfc->mouse_active = FALSE;
|
||||||
XUngrabKeyboard(xfc->display, CurrentTime);
|
XUngrabKeyboard(xfc->display, CurrentTime);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user