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:
committed by
Bram Moolenaar
parent
5154a88800
commit
81a3ff97e2
@@ -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
|
||||
|
Reference in New Issue
Block a user