0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

patch 9.0.0058: Win32: cannot test low level events

Problem:    Win32: cannot test low level events.
Solution:   Add "sendevent" to test_gui_event(). (Yegappan Lakshmanan,
            closes #10679)
This commit is contained in:
Yegappan Lakshmanan
2022-07-23 05:04:16 +01:00
committed by Bram Moolenaar
parent 5154a88800
commit 81a3ff97e2
7 changed files with 148 additions and 0 deletions

View File

@@ -8541,3 +8541,42 @@ netbeans_draw_multisign_indicator(int row)
SetPixel(s_hdc, x+2, y, gui.currFgColor);
}
#endif
#if defined(FEAT_EVAL) || defined(PROTO)
int
test_gui_w32_sendevent(dict_T *args)
{
char_u *event;
INPUT inputs[1];
event = dict_get_string(args, "event", TRUE);
if (event == NULL)
return FALSE;
ZeroMemory(inputs, sizeof(inputs));
if (STRICMP(event, "keydown") == 0 || STRICMP(event, "keyup") == 0)
{
WORD vkCode;
vkCode = dict_get_number_def(args, "keycode", 0);
if (vkCode <= 0 || vkCode >= 0xFF)
{
semsg(_(e_invalid_argument_nr), (long)vkCode);
return FALSE;
}
inputs[0].type = INPUT_KEYBOARD;
inputs[0].ki.wVk = vkCode;
if (STRICMP(event, "keyup") == 0)
inputs[0].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(ARRAYSIZE(inputs), inputs, sizeof(INPUT));
}
else
semsg(_(e_invalid_argument_str), event);
vim_free(event);
return TRUE;
}
#endif