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)
diff --git a/src/gui_w32.c b/src/gui_w32.c
index f53318d..472cebf 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -8541,3 +8541,42 @@
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