From b67d66f58304db1da73d0f7eda9027f5939178e7 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 27 Apr 2022 15:37:30 +0200 Subject: [PATCH] user32/tests: Use the standard INPUT type definition. Signed-off-by: Alexandre Julliard --- dlls/user32/tests/input.c | 132 +++++++++++++++++--------------------- dlls/user32/tests/menu.c | 37 ++++------- 2 files changed, 72 insertions(+), 97 deletions(-) diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c index 8b84a39d009..6232a7456e8 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -108,18 +108,6 @@ static const int GETFLAGS[]={0, 0, KEYEVENTF_KEYUP, 0, KEYEVENTF_KEYUP, 0, KEYEV /* matching descriptions */ static const char *getdesc[]={"", "+alt","-alt","+X","-X","+shift","-shift","+ctrl","-ctrl"}; -/* The MSVC headers ignore our NONAMELESSUNION requests so we have to define our own type */ -typedef struct -{ - DWORD type; - union - { - MOUSEINPUT mi; - KEYBDINPUT ki; - HARDWAREINPUT hi; - } u; -} TEST_INPUT; - typedef struct { UINT message; WPARAM wParam; @@ -230,7 +218,7 @@ static int KbdMessage( KEV kev, WPARAM *pwParam, LPARAM *plParam ) */ static BOOL do_test( HWND hwnd, int seqnr, const KEV td[] ) { - TEST_INPUT inputs[MAXKEYEVENTS]; + INPUT inputs[MAXKEYEVENTS]; KMSG expmsg[MAXKEYEVENTS]; MSG msg; char buf[100]; @@ -242,11 +230,11 @@ static BOOL do_test( HWND hwnd, int seqnr, const KEV td[] ) for (i = 0; i < MAXKEYEVENTS; i++) { inputs[evtctr].type = INPUT_KEYBOARD; - inputs[evtctr].u.ki.wVk = GETVKEY[td[i]]; - inputs[evtctr].u.ki.wScan = GETSCAN[td[i]]; - inputs[evtctr].u.ki.dwFlags = GETFLAGS[td[i]]; - inputs[evtctr].u.ki.dwExtraInfo = 0; - inputs[evtctr].u.ki.time = ++timetag; + inputs[evtctr].ki.wVk = GETVKEY[td[i]]; + inputs[evtctr].ki.wScan = GETSCAN[td[i]]; + inputs[evtctr].ki.dwFlags = GETFLAGS[td[i]]; + inputs[evtctr].ki.dwExtraInfo = 0; + inputs[evtctr].ki.time = ++timetag; if (td[i]) evtctr++; strcat(buf, getdesc[td[i]]); @@ -258,7 +246,7 @@ static BOOL do_test( HWND hwnd, int seqnr, const KEV td[] ) for( kmctr = 0; kmctr < MAXKEYEVENTS && expmsg[kmctr].message; kmctr++) ; ok( evtctr <= MAXKEYEVENTS, "evtctr is above MAXKEYEVENTS\n" ); - ret = SendInput(evtctr, (INPUT *)inputs, sizeof(INPUT)); + ret = SendInput(evtctr, inputs, sizeof(INPUT)); ok(ret == evtctr, "SendInput failed to send some events\n"); i = 0; if (winetest_debug > 1) @@ -925,7 +913,7 @@ if(0) /* For some reason not stable on Wine */ } static void test_Input_blackbox(void) { - TEST_INPUT i; + INPUT i; int ii; BYTE ks1[256], ks2[256]; LONG_PTR prevWndProc; @@ -962,15 +950,15 @@ static void test_Input_blackbox(void) ok(prevWndProc != 0 || GetLastError() == 0, "error: %d\n", (int) GetLastError()); i.type = INPUT_KEYBOARD; - i.u.ki.time = 0; - i.u.ki.dwExtraInfo = 0; + i.ki.time = 0; + i.ki.dwExtraInfo = 0; for (ii = 0; ii < ARRAY_SIZE(sendinput_test)-1; ii++) { GetKeyboardState(ks1); - i.u.ki.wScan = ii+1 /* useful for debugging */; - i.u.ki.dwFlags = sendinput_test[ii].dwFlags; - i.u.ki.wVk = sendinput_test[ii].wVk; - SendInput(1, (INPUT*)&i, sizeof(TEST_INPUT)); + i.ki.wScan = ii+1 /* useful for debugging */; + i.ki.dwFlags = sendinput_test[ii].dwFlags; + i.ki.wVk = sendinput_test[ii].wVk; + SendInput(1, &i, sizeof(INPUT)); empty_message_queue(); GetKeyboardState(ks2); compare_and_check(ii, ks1, ks2, &sendinput_test[ii], foreground); @@ -1000,21 +988,21 @@ static void reset_key_status(WORD vk) static void test_unicode_keys(HWND hwnd, HHOOK hook) { - TEST_INPUT inputs[2]; + INPUT inputs[2]; MSG msg; /* init input data that never changes */ inputs[1].type = inputs[0].type = INPUT_KEYBOARD; - inputs[1].u.ki.dwExtraInfo = inputs[0].u.ki.dwExtraInfo = 0; - inputs[1].u.ki.time = inputs[0].u.ki.time = 0; + inputs[1].ki.dwExtraInfo = inputs[0].ki.dwExtraInfo = 0; + inputs[1].ki.time = inputs[0].ki.time = 0; /* pressing & releasing a single unicode character */ - inputs[0].u.ki.wVk = 0; - inputs[0].u.ki.wScan = 0x3c0; - inputs[0].u.ki.dwFlags = KEYEVENTF_UNICODE; + inputs[0].ki.wVk = 0; + inputs[0].ki.wScan = 0x3c0; + inputs[0].ki.dwFlags = KEYEVENTF_UNICODE; reset_key_status(VK_PACKET); - SendInput(1, (INPUT*)inputs, sizeof(INPUT)); + SendInput(1, inputs, sizeof(INPUT)); while(PeekMessageW(&msg, hwnd, 0, 0, PM_REMOVE)){ if(msg.message == WM_KEYDOWN && msg.wParam == VK_PACKET){ TranslateMessage(&msg); @@ -1031,12 +1019,12 @@ static void test_unicode_keys(HWND hwnd, HHOOK hook) "Last hookdown msg should have been 0x3c0, was: 0x%lx\n", key_status.last_hook_down); } - inputs[1].u.ki.wVk = 0; - inputs[1].u.ki.wScan = 0x3c0; - inputs[1].u.ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP; + inputs[1].ki.wVk = 0; + inputs[1].ki.wScan = 0x3c0; + inputs[1].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP; reset_key_status(VK_PACKET); - SendInput(1, (INPUT*)(inputs+1), sizeof(INPUT)); + SendInput(1, inputs + 1, sizeof(INPUT)); while(PeekMessageW(&msg, hwnd, 0, 0, PM_REMOVE)){ if(msg.message == WM_KEYDOWN && msg.wParam == VK_PACKET){ TranslateMessage(&msg); @@ -1052,17 +1040,17 @@ static void test_unicode_keys(HWND hwnd, HHOOK hook) } /* holding alt, pressing & releasing a unicode character, releasing alt */ - inputs[0].u.ki.wVk = VK_LMENU; - inputs[0].u.ki.wScan = 0; - inputs[0].u.ki.dwFlags = 0; + inputs[0].ki.wVk = VK_LMENU; + inputs[0].ki.wScan = 0; + inputs[0].ki.dwFlags = 0; - inputs[1].u.ki.wVk = 0; - inputs[1].u.ki.wScan = 0x3041; - inputs[1].u.ki.dwFlags = KEYEVENTF_UNICODE; + inputs[1].ki.wVk = 0; + inputs[1].ki.wScan = 0x3041; + inputs[1].ki.dwFlags = KEYEVENTF_UNICODE; reset_key_status(VK_PACKET); key_status.expect_alt = TRUE; - SendInput(2, (INPUT*)inputs, sizeof(INPUT)); + SendInput(2, inputs, sizeof(INPUT)); while(PeekMessageW(&msg, hwnd, 0, 0, PM_REMOVE)){ if(msg.message == WM_SYSKEYDOWN && msg.wParam == VK_PACKET){ TranslateMessage(&msg); @@ -1079,17 +1067,17 @@ static void test_unicode_keys(HWND hwnd, HHOOK hook) "Last hooksysdown msg should have been 0x3041, was: 0x%lx\n", key_status.last_hook_syskey_down); } - inputs[1].u.ki.wVk = 0; - inputs[1].u.ki.wScan = 0x3041; - inputs[1].u.ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP; + inputs[1].ki.wVk = 0; + inputs[1].ki.wScan = 0x3041; + inputs[1].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP; - inputs[0].u.ki.wVk = VK_LMENU; - inputs[0].u.ki.wScan = 0; - inputs[0].u.ki.dwFlags = KEYEVENTF_KEYUP; + inputs[0].ki.wVk = VK_LMENU; + inputs[0].ki.wScan = 0; + inputs[0].ki.dwFlags = KEYEVENTF_KEYUP; reset_key_status(VK_PACKET); key_status.expect_alt = TRUE; - SendInput(2, (INPUT*)inputs, sizeof(INPUT)); + SendInput(2, inputs, sizeof(INPUT)); while(PeekMessageW(&msg, hwnd, 0, 0, PM_REMOVE)){ if(msg.message == WM_SYSKEYDOWN && msg.wParam == VK_PACKET){ TranslateMessage(&msg); @@ -1105,16 +1093,16 @@ static void test_unicode_keys(HWND hwnd, HHOOK hook) } /* Press and release, non-zero key code. */ - inputs[0].u.ki.wVk = 0x51; - inputs[0].u.ki.wScan = 0x123; - inputs[0].u.ki.dwFlags = KEYEVENTF_UNICODE; + inputs[0].ki.wVk = 0x51; + inputs[0].ki.wScan = 0x123; + inputs[0].ki.dwFlags = KEYEVENTF_UNICODE; - inputs[1].u.ki.wVk = 0x51; - inputs[1].u.ki.wScan = 0x123; - inputs[1].u.ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP; + inputs[1].ki.wVk = 0x51; + inputs[1].ki.wScan = 0x123; + inputs[1].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP; - reset_key_status(inputs[0].u.ki.wVk); - SendInput(2, (INPUT*)inputs, sizeof(INPUT)); + reset_key_status(inputs[0].ki.wVk); + SendInput(2, inputs, sizeof(INPUT)); while (PeekMessageW(&msg, hwnd, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); @@ -1485,7 +1473,7 @@ static void test_GetMouseMovePointsEx(const char *argv0) MOUSEMOVEPOINT in; MOUSEMOVEPOINT out[200]; POINT point; - TEST_INPUT input; + INPUT input; /* Get a valid content for the input struct */ if(!GetCursorPos(&point)) { @@ -1681,10 +1669,10 @@ static void test_GetMouseMovePointsEx(const char *argv0) input.type = INPUT_MOUSE; memset( &input, 0, sizeof(input) ); - input.u.mi.dwFlags = MOUSEEVENTF_MOVE; - input.u.mi.dwExtraInfo = 0xdeadbeef; - input.u.mi.dx = -17; - input.u.mi.dy = 13; + input.mi.dwFlags = MOUSEEVENTF_MOVE; + input.mi.dwExtraInfo = 0xdeadbeef; + input.mi.dx = -17; + input.mi.dy = 13; SendInput( 1, (INPUT *)&input, sizeof(INPUT) ); ok( GetCursorPos( &point ), "failed to get cursor position\n" ); ok( in.x != point.x && in.y != point.y, "cursor didn't change position after mouse_event()\n" ); @@ -4259,7 +4247,7 @@ static LRESULT WINAPI msg_source_proc( HWND hwnd, UINT message, WPARAM wp, LPARA static void test_input_message_source(void) { WNDCLASSA cls; - TEST_INPUT inputs[2]; + INPUT inputs[2]; HWND hwnd; RECT rc; MSG msg; @@ -4283,20 +4271,20 @@ static void test_input_message_source(void) SetFocus( hwnd ); inputs[0].type = INPUT_KEYBOARD; - inputs[0].u.ki.dwExtraInfo = 0; - inputs[0].u.ki.time = 0; - inputs[0].u.ki.wVk = 0; - inputs[0].u.ki.wScan = 0x3c0; - inputs[0].u.ki.dwFlags = KEYEVENTF_UNICODE; + inputs[0].ki.dwExtraInfo = 0; + inputs[0].ki.time = 0; + inputs[0].ki.wVk = 0; + inputs[0].ki.wScan = 0x3c0; + inputs[0].ki.dwFlags = KEYEVENTF_UNICODE; inputs[1] = inputs[0]; - inputs[1].u.ki.dwFlags |= KEYEVENTF_KEYUP; + inputs[1].ki.dwFlags |= KEYEVENTF_KEYUP; expect_src.deviceType = IMDT_UNAVAILABLE; expect_src.originId = IMO_UNAVAILABLE; SendMessageA( hwnd, WM_KEYDOWN, 0, 0 ); SendMessageA( hwnd, WM_MOUSEMOVE, 0, 0 ); - SendInput( 2, (INPUT *)inputs, sizeof(INPUT) ); + SendInput( 2, inputs, sizeof(INPUT) ); while (PeekMessageW( &msg, hwnd, 0, 0, PM_REMOVE )) { expect_src.deviceType = IMDT_KEYBOARD; diff --git a/dlls/user32/tests/menu.c b/dlls/user32/tests/menu.c index a6afd9cd4fb..c7a20e1b8e9 100644 --- a/dlls/user32/tests/menu.c +++ b/dlls/user32/tests/menu.c @@ -49,19 +49,6 @@ static LRESULT WINAPI menu_check_wnd_proc(HWND hwnd, UINT msg, WPARAM wparam, LP return DefWindowProcA(hwnd, msg, wparam, lparam); } -/* The MSVC headers ignore our NONAMELESSUNION requests so we have to define - * our own type */ -typedef struct -{ - DWORD type; - union - { - MOUSEINPUT mi; - KEYBDINPUT ki; - HARDWAREINPUT hi; - } u; -} TEST_INPUT; - /* globals to communicate between test and wndproc */ static BOOL bMenuVisible; @@ -2243,18 +2230,18 @@ static struct menu_mouse_tests_s { static void send_key(WORD wVk) { - TEST_INPUT i[2]; + INPUT i[2]; memset(i, 0, sizeof(i)); i[0].type = i[1].type = INPUT_KEYBOARD; - i[0].u.ki.wVk = i[1].u.ki.wVk = wVk; - i[1].u.ki.dwFlags = KEYEVENTF_KEYUP; - SendInput(2, (INPUT *) i, sizeof(INPUT)); + i[0].ki.wVk = i[1].ki.wVk = wVk; + i[1].ki.dwFlags = KEYEVENTF_KEYUP; + SendInput(2, i, sizeof(INPUT)); } static BOOL click_menu(HANDLE hWnd, struct menu_item_pair_s *mi) { HMENU hMenu = hMenus[mi->uMenu]; - TEST_INPUT i[3]; + INPUT i[3]; MSG msg; RECT r; int screen_w = GetSystemMetrics(SM_CXSCREEN); @@ -2264,16 +2251,16 @@ static BOOL click_menu(HANDLE hWnd, struct menu_item_pair_s *mi) memset(i, 0, sizeof(i)); i[0].type = i[1].type = i[2].type = INPUT_MOUSE; - i[0].u.mi.dx = i[1].u.mi.dx = i[2].u.mi.dx + i[0].mi.dx = i[1].mi.dx = i[2].mi.dx = ((r.left + 5) * 65535) / screen_w; - i[0].u.mi.dy = i[1].u.mi.dy = i[2].u.mi.dy + i[0].mi.dy = i[1].mi.dy = i[2].mi.dy = ((r.top + 5) * 65535) / screen_h; - i[0].u.mi.dwFlags = i[1].u.mi.dwFlags = i[2].u.mi.dwFlags + i[0].mi.dwFlags = i[1].mi.dwFlags = i[2].mi.dwFlags = MOUSEEVENTF_ABSOLUTE; - i[0].u.mi.dwFlags |= MOUSEEVENTF_MOVE; - i[1].u.mi.dwFlags |= MOUSEEVENTF_LEFTDOWN; - i[2].u.mi.dwFlags |= MOUSEEVENTF_LEFTUP; - ret = SendInput(3, (INPUT *) i, sizeof(INPUT)); + i[0].mi.dwFlags |= MOUSEEVENTF_MOVE; + i[1].mi.dwFlags |= MOUSEEVENTF_LEFTDOWN; + i[2].mi.dwFlags |= MOUSEEVENTF_LEFTUP; + ret = SendInput(3, i, sizeof(INPUT)); /* hack to prevent mouse message buildup in Wine */ while (PeekMessageA( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );