Jacek Caban : win32u: Move NtUserGetKeyboardState implementation from user32.

Alexandre Julliard julliard at winehq.org
Tue Nov 16 16:32:27 CST 2021


Module: wine
Branch: master
Commit: deb455ec25ea9f47c9bf3119ff5b77089300fe0e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=deb455ec25ea9f47c9bf3119ff5b77089300fe0e

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Nov 16 12:33:23 2021 +0100

win32u: Move NtUserGetKeyboardState implementation from user32.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/input.c     | 23 -----------------------
 dlls/user32/message.c   |  2 +-
 dlls/user32/user32.spec |  2 +-
 dlls/win32u/input.c     | 22 ++++++++++++++++++++++
 dlls/win32u/syscall.c   |  1 +
 dlls/win32u/win32u.spec |  2 +-
 dlls/wow64win/syscall.h |  1 +
 dlls/wow64win/user.c    |  7 +++++++
 8 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index 7d0581dfc8f..08b5cffaa5f 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -593,29 +593,6 @@ BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii)
 }
 
 
-/**********************************************************************
- *		GetKeyboardState (USER32.@)
- */
-BOOL WINAPI DECLSPEC_HOTPATCH GetKeyboardState( LPBYTE state )
-{
-    BOOL ret;
-    UINT i;
-
-    TRACE("(%p)\n", state);
-
-    memset( state, 0, 256 );
-    SERVER_START_REQ( get_key_state )
-    {
-        req->key = -1;
-        wine_server_set_reply( req, state, 256 );
-        ret = !wine_server_call_err( req );
-        for (i = 0; i < 256; i++) state[i] &= 0x81;
-    }
-    SERVER_END_REQ;
-    return ret;
-}
-
-
 /**********************************************************************
  *		SetKeyboardState (USER32.@)
  */
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index e5ea0735ed2..50c13323bc3 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -3888,7 +3888,7 @@ BOOL WINAPI TranslateMessage( const MSG *msg )
         return ImmTranslateMessage(msg->hwnd, msg->message, msg->wParam, msg->lParam);
     }
 
-    GetKeyboardState( state );
+    NtUserGetKeyboardState( state );
     len = ToUnicode(msg->wParam, HIWORD(msg->lParam), state, wp, ARRAY_SIZE(wp), 0);
     if (len == -1)
     {
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index 91dc9674a3b..c4013b3dcfa 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -321,7 +321,7 @@
 @ stdcall GetKeyboardLayoutList(long ptr)
 @ stdcall GetKeyboardLayoutNameA(ptr)
 @ stdcall GetKeyboardLayoutNameW(ptr)
-@ stdcall GetKeyboardState(ptr)
+@ stdcall -import GetKeyboardState(ptr) NtUserGetKeyboardState
 @ stdcall GetKeyboardType(long)
 @ stdcall GetLastActivePopup(long)
 @ stdcall GetLastInputInfo(ptr)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index 5383115a424..4e790257ab1 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -71,3 +71,25 @@ SHORT WINAPI NtUserGetKeyState( INT vkey )
     TRACE("key (0x%x) -> %x\n", vkey, retval);
     return retval;
 }
+
+/**********************************************************************
+ *	     NtUserGetKeyboardState    (win32u.@)
+ */
+BOOL WINAPI NtUserGetKeyboardState( BYTE *state )
+{
+    BOOL ret;
+    UINT i;
+
+    TRACE("(%p)\n", state);
+
+    memset( state, 0, 256 );
+    SERVER_START_REQ( get_key_state )
+    {
+        req->key = -1;
+        wine_server_set_reply( req, state, 256 );
+        ret = !wine_server_call_err( req );
+        for (i = 0; i < 256; i++) state[i] &= 0x81;
+    }
+    SERVER_END_REQ;
+    return ret;
+}
diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c
index 9216e95f25c..a7c08c5cef6 100644
--- a/dlls/win32u/syscall.c
+++ b/dlls/win32u/syscall.c
@@ -112,6 +112,7 @@ static void * const syscalls[] =
     NtUserGetClipboardSequenceNumber,
     NtUserGetClipboardViewer,
     NtUserGetKeyState,
+    NtUserGetKeyboardState,
     NtUserGetLayeredWindowAttributes,
     NtUserGetObjectInformation,
     NtUserGetProcessWindowStation,
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 2003dc39bcd..e4b31efe436 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -949,7 +949,7 @@
 @ stub NtUserGetKeyboardLayout
 @ stub NtUserGetKeyboardLayoutList
 @ stub NtUserGetKeyboardLayoutName
-@ stub NtUserGetKeyboardState
+@ stdcall -syscall NtUserGetKeyboardState(ptr)
 @ stdcall -syscall NtUserGetLayeredWindowAttributes(long ptr ptr ptr)
 @ stub NtUserGetListBoxInfo
 @ stub NtUserGetMenuBarInfo
diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h
index 7dc791e8eb5..7c2ccbe63c7 100644
--- a/dlls/wow64win/syscall.h
+++ b/dlls/wow64win/syscall.h
@@ -99,6 +99,7 @@
     SYSCALL_ENTRY( NtUserGetClipboardSequenceNumber ) \
     SYSCALL_ENTRY( NtUserGetClipboardViewer ) \
     SYSCALL_ENTRY( NtUserGetKeyState ) \
+    SYSCALL_ENTRY( NtUserGetKeyboardState ) \
     SYSCALL_ENTRY( NtUserGetLayeredWindowAttributes ) \
     SYSCALL_ENTRY( NtUserGetObjectInformation ) \
     SYSCALL_ENTRY( NtUserGetProcessWindowStation ) \
diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c
index dcf8850c3f2..a563e78a8f5 100644
--- a/dlls/wow64win/user.c
+++ b/dlls/wow64win/user.c
@@ -244,3 +244,10 @@ NTSTATUS WINAPI wow64_NtUserGetKeyState( UINT *args )
 
     return NtUserGetKeyState( vkey );
 }
+
+NTSTATUS WINAPI wow64_NtUserGetKeyboardState( UINT *args )
+{
+    BYTE *state = get_ptr( &args );
+
+    return NtUserGetKeyboardState( state );
+}




More information about the wine-cvs mailing list