user32: Force undefined bits in GetKeyState() and GetKeyboardState() to zero.
Only the highest and lowest bits in the return values of these functions have a meaning, the others are undefined. While the other bits are always cleared in Windows, wine stores information there. Some programs expect these undefined bits to be zero, though, so make sure they are not set. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30814 Signed-off-by: Markus Engel <markus_wine@familie-engel.online> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
f516a23041
commit
d9855df17f
|
@ -555,7 +555,7 @@ SHORT WINAPI DECLSPEC_HOTPATCH GetKeyState(INT vkey)
|
|||
{
|
||||
req->tid = GetCurrentThreadId();
|
||||
req->key = vkey;
|
||||
if (!wine_server_call( req )) retval = (signed char)reply->state;
|
||||
if (!wine_server_call( req )) retval = (signed char)(reply->state & 0x81);
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
TRACE("key (0x%x) -> %x\n", vkey, retval);
|
||||
|
@ -569,6 +569,7 @@ SHORT WINAPI DECLSPEC_HOTPATCH GetKeyState(INT vkey)
|
|||
BOOL WINAPI DECLSPEC_HOTPATCH GetKeyboardState( LPBYTE state )
|
||||
{
|
||||
BOOL ret;
|
||||
UINT i;
|
||||
|
||||
TRACE("(%p)\n", state);
|
||||
|
||||
|
@ -579,6 +580,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetKeyboardState( LPBYTE 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;
|
||||
|
|
Loading…
Reference in New Issue