Signed-off-by: Derek Lesho dereklesho52@Gmail.com --- dlls/user32/input.c | 29 +++++++++++++++++++++++++++++ dlls/user32/user32.spec | 1 + include/winuser.h | 1 + 3 files changed, 31 insertions(+)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index 8b2ae805aa..f7ef1c3be2 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -33,6 +33,7 @@ #include <assert.h>
#define NONAMELESSUNION +#define NONAMELESSSTRUCT
#include "ntstatus.h" #define WIN32_NO_STATUS @@ -129,6 +130,34 @@ BOOL CDECL __wine_send_input( HWND hwnd, const INPUT *input ) return !status; }
+BOOL CDECL __wine_send_raw_input( const RAWINPUT *raw_input ) +{ + NTSTATUS status; + + SERVER_START_REQ( send_rawinput_message ) + { + req->input.type = raw_input->header.dwType; + switch (raw_input->header.dwType) + { + case RIM_TYPEMOUSE: + if (raw_input->data.mouse.usFlags || raw_input->data.mouse.ulRawButtons + || raw_input->data.mouse.ulExtraInformation) + WARN("Unhandled parameters"); + + req->input.mouse.x = raw_input->data.mouse.lLastX; + req->input.mouse.y = raw_input->data.mouse.lLastY; + req->input.mouse.button_flags = raw_input->data.mouse.u.s.usButtonFlags; + req->input.mouse.button_data = raw_input->data.mouse.u.s.usButtonData; + break; + } + status = wine_server_call( req ); + } + SERVER_END_REQ; + + if (status) SetLastError( RtlNtStatusToDosError(status) ); + return !status; +} +
/*********************************************************************** * update_mouse_coords diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index d5b8597d8e..7103b86055 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -832,4 +832,5 @@ # or 'wine_' (for user-visible functions) to avoid namespace conflicts. # @ cdecl __wine_send_input(long ptr) +@ cdecl __wine_send_raw_input(ptr) @ cdecl __wine_set_pixel_format(long long) diff --git a/include/winuser.h b/include/winuser.h index 3cffaa19ac..5d8774b6e6 100644 --- a/include/winuser.h +++ b/include/winuser.h @@ -4354,6 +4354,7 @@ WORD WINAPI SYSTEM_KillSystemTimer( WORD );
#ifdef __WINESRC__ WINUSERAPI BOOL CDECL __wine_send_input( HWND hwnd, const INPUT *input ); +WINUSERAPI BOOL CDECL __wine_send_raw_input( const RAWINPUT *raw_input ); #endif
#ifdef __cplusplus