Bug 9671 - Console.ReadKey() behaves differently from .NET
Summary: Console.ReadKey() behaves differently from .NET
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: System (show other bugs)
Version: 2.10.x
Hardware: PC Windows
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
Depends on:
Reported: 2013-01-18 10:28 UTC by Fabio Iotti
Modified: 2015-03-01 11:23 UTC (History)
4 users (show)

See Also:
Is this bug a regression?: ---
Last known good build:

Example code. (171 bytes, application/octet-stream)
2013-01-18 10:28 UTC, Fabio Iotti

Description Fabio Iotti 2013-01-18 10:28:57 UTC
Created attachment 3240 [details]
Example code.

The attached code behaves differently between Mono 2.10.9 and .NET 4.0

--- Behaviour on Mono 2.10.9 ---
If the user types in the terminal, nothing appears.

--- Behaviour on .NET 4.0 ---
If the user types in the terminal, typed characters appear.
Comment 1 Benjamin Waters 2013-06-05 23:53:38 UTC
The attached code seems to work identically for me between mono and .net.

Mono version 2.10.9 Build 0

Microsoft (R) Visual C# Compiler version 4.0.30319.17929
for Microsoft (R) .NET Framework 4.5

64-bit Windows 7 (SP1)
Comment 2 alessandro.lendaro 2015-03-01 11:23:50 UTC
I confirm the bug, running on Windows 8.1 64-bit

Console.ReadKey just hangs on mono, while it works on .NET

I mades some tries using the code on mono github repo, apparently the record returned by

[DllImport ("kernel32.dll", EntryPoint="ReadConsoleInput", SetLastError=true, CharSet=CharSet.Unicode)]
extern static bool ReadConsoleInput (IntPtr handle, out InputRecord record, int length, out int nread);

always have EventType property 0 valued on mono, while it is 1 on .NET

Note You need to log in before you can comment on or make changes to this bug.