Jacek Caban (@jacek) commented about dlls/kernelbase/console.c:
}
+/*********************************************************************** + * ReadConsoleInputExA (kernelbase.@) + */ +BOOL WINAPI ReadConsoleInputExA( HANDLE hConsoleInput, INPUT_RECORD *lpBuffer, DWORD nLength, DWORD *lpNumberOfEventsRead, USHORT wFlags ) +{ + + switch (wFlags & (CONSOLE_READ_NOREMOVE | CONSOLE_READ_NOWAIT)) + { + case CONSOLE_READ_NOWAIT | CONSOLE_READ_NOREMOVE: + return PeekConsoleInputA(hConsoleInput, lpBuffer, nLength, lpNumberOfEventsRead); + + case CONSOLE_READ_NOWAIT: I think that it would be better to interpret flags on conhost side. I'd suggest to allow passing flags in `IOCTL_CONDRV_READ_INPUT`, have a simple `console_ioctl` wrapper here and the actual implementation in conhost. We could then reimplement `PeekConsoleInput` and `ReadConsoleInput` on top of `ReadConsoleInputEx`.
It would be also good to have some tests, see dlls/kernel32/tests/console.c. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11269#note_144502