private static Dictionary<char, ConsoleKeyInfo> CreateKeyMap()
{
Dictionary<char, ConsoleKeyInfo> ret = new Dictionary<char, ConsoleKeyInfo>();
for(int i = (int)'a'; i <= 'z'; i++)
{
var c = (char)i;
var enumKey = Char.ToUpperInvariant(c)+"";
var enumValue = (ConsoleKey)Enum.Parse(typeof(ConsoleKey), enumKey);
ret.Add(c, new ConsoleKeyInfo(c, enumValue, false, false, false));
}
for (int i = (int)'A'; i <= 'Z'; i++)
{
var c = (char)i;
var enumKey = c + "";
var enumValue = (ConsoleKey)Enum.Parse(typeof(ConsoleKey), enumKey);
ret.Add(c, new ConsoleKeyInfo(c, enumValue, true, false, false));
}
for (int i = (int)'0'; i <= '9'; i++)
{
var c = (char)i;
var enumKey = "D"+c;
var enumValue = (ConsoleKey)Enum.Parse(typeof(ConsoleKey), enumKey);
ret.Add(c, new ConsoleKeyInfo(c, enumValue, false, false, false));
}
ret.Add('!', new ConsoleKeyInfo('!', ConsoleKey.D1, true, false, false));
ret.Add('@', new ConsoleKeyInfo('@', ConsoleKey.D2, true, false, false));
ret.Add('#', new ConsoleKeyInfo('#', ConsoleKey.D3, true, false, false));
ret.Add('$', new ConsoleKeyInfo('$', ConsoleKey.D4, true, false, false));
ret.Add('%', new ConsoleKeyInfo('%', ConsoleKey.D5, true, false, false));
ret.Add('^', new ConsoleKeyInfo('^', ConsoleKey.D6, true, false, false));
ret.Add('&', new ConsoleKeyInfo('&', ConsoleKey.D7, true, false, false));
ret.Add('*', new ConsoleKeyInfo('*', ConsoleKey.D8, true, false, false));
ret.Add('(', new ConsoleKeyInfo('(', ConsoleKey.D9, true, false, false));
ret.Add(')', new ConsoleKeyInfo(')', ConsoleKey.D0, true, false, false));
ret.Add(' ', new ConsoleKeyInfo(' ', ConsoleKey.Spacebar, false, false, false));
ret.Add('-', new ConsoleKeyInfo('-', ConsoleKey.OemMinus, false, false, false));
ret.Add('_', new ConsoleKeyInfo('_', ConsoleKey.OemMinus, true, false, false));
ret.Add('=', new ConsoleKeyInfo('=', ConsoleKey.OemPlus, false, false, false));
ret.Add('+', new ConsoleKeyInfo('+', ConsoleKey.OemPlus, true, false, false));
ret.Add('.', new ConsoleKeyInfo('.', ConsoleKey.OemPeriod, false, false, false));
ret.Add('>', new ConsoleKeyInfo('>', ConsoleKey.OemPeriod, true, false, false));
ret.Add(',', new ConsoleKeyInfo(',', ConsoleKey.OemComma, false, false, false));
ret.Add('<', new ConsoleKeyInfo('<', ConsoleKey.OemComma, true, false, false));
ret.Add('\r', new ConsoleKeyInfo('\r', ConsoleKey.Enter, false, false, false));
ret.Add('\n', new ConsoleKeyInfo('\n', ConsoleKey.Enter, false, false, false));
return ret;
}