diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2022-07-23 05:04:16 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-07-23 05:04:16 +0100 |
commit | 81a3ff97e2012bdafc3ece796289f2e11e2754f3 (patch) | |
tree | 15226ff00df55bc1927e6ab0bed077e703314be9 /src/gui_w32.c | |
parent | 5154a8880034b7bb94186d37bcecc6ee1a96f732 (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.c | 39 |
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 |