title: Console.ReadKey not returning correct value
body: <p>I made this code for keybind settings in my console application:</p>
  <pre class="lang-cs prettyprint-override"><code>Console.Write(&quot;Awaiting input, press Esc to cancel&quot;);
  ConsoleKeyInfo key = Console.ReadKey();
  while (key.Key == ConsoleKey.Enter)
  {
      // pressing Enter triggers this method, so we don't want the user to accidentally set a keybind to Enter
      key = Console.ReadKey();
  }
  if (key.Key != ConsoleKey.Escape)
  {
      // set controls
  }
  Console.Clear();
  </code></pre>
  <p>But for some reason, when I press Enter, sometimes it returns the keypress before the user presses Enter. (e.g. Down Arrow)<br />
  But when you press enter again, it sometimes returns the keypress before the <em>first</em> Enter press.<br />
  Even if you press the desired value <em>before</em> you press Enter, sometimes it just returns a random key you have pressed before. (e.g. you press Z, then Enter, but then Console.ReadKey() returns UpArrow)</p>
  <p>This is hurting my brain more and more, can anyone help me please?</p>