@rbernon `win32u, server: Use the shared memory for GetClipCursor and GetAsyncKeyState.` The patch, along with the ntsync patches, caused my games to freeze when starting with a black screen.
Proton changed [win32u/input.c NtUserGetAsyncKeyState](https://github.com/ValveSoftware/wine/blob/25af144e4ac4e8de6bf4d8ea5d960af06...) in commit [38660173bb5aa5250ad414ac27517dce25b30a6a ](https://github.com/ValveSoftware/wine/commit/38660173bb5aa5250ad414ac27517dc...)
I simplified the NtUserGetAsyncKeyState function to look like this. I'm not sure if it's correct, but it's helped me.
```C SHORT WINAPI NtUserGetAsyncKeyState( INT key ) { const desktop_shm_t *desktop_shm; struct object_lock lock = OBJECT_LOCK_INIT; NTSTATUS status; BYTE state = 0;
if (key < 0 || key >= 256) return 0;
check_for_events( QS_INPUT );
while ((status = get_shared_desktop( &lock, &desktop_shm )) == STATUS_PENDING) state = desktop_shm->keystate[key];
return (state & 0x80) << 8; } ```