summaryrefslogtreecommitdiffstats
path: root/src/gui_w32.c
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2022-07-23 05:04:16 +0100
committerBram Moolenaar <Bram@vim.org>2022-07-23 05:04:16 +0100
commit81a3ff97e2012bdafc3ece796289f2e11e2754f3 (patch)
tree15226ff00df55bc1927e6ab0bed077e703314be9 /src/gui_w32.c
parent5154a8880034b7bb94186d37bcecc6ee1a96f732 (diff)
patch 9.0.0058: Win32: cannot test low level eventsv9.0.0058
Problem: Win32: cannot test low level events. Solution: Add "sendevent" to test_gui_event(). (Yegappan Lakshmanan, closes #10679)
Diffstat (limited to 'src/gui_w32.c')
-rw-r--r--src/gui_w32.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/gui_w32.c b/src/gui_w32.c
index f53318d677..472cebf733 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -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