62 lines
2.5 KiB
C#
62 lines
2.5 KiB
C#
|
|
namespace AutoAgent.Domain.Models
|
|||
|
|
{
|
|||
|
|
public class Key
|
|||
|
|
{
|
|||
|
|
public Button Code { get; private set; }
|
|||
|
|
|
|||
|
|
public Key(Button code) { Code = code; }
|
|||
|
|
|
|||
|
|
public Key(string key)
|
|||
|
|
{
|
|||
|
|
Button code;
|
|||
|
|
|
|||
|
|
switch (key.ToLowerInvariant())
|
|||
|
|
{
|
|||
|
|
case "-": case "_": Code = Button.Sub; break;
|
|||
|
|
case "+": case "=": Code = Button.Add; break;
|
|||
|
|
case "~": case "`": Code = Button.Tilde; break;
|
|||
|
|
case "<": case ",": Code = Button.Comma; break;
|
|||
|
|
case ">": case ".": Code = Button.Period; break;
|
|||
|
|
case ":": case ";": Code = Button.Colon; break;
|
|||
|
|
case "{": case "[": Code = Button.LBracket; break;
|
|||
|
|
case "}": case "]": Code = Button.RBracket; break;
|
|||
|
|
case "\\": case "|": Code = Button.BSol; break;
|
|||
|
|
case "/": case "?": Code = Button.Sol; break;
|
|||
|
|
case "'": case "\"": Code = Button.Quote; break;
|
|||
|
|
case "num+": Code = Button.NumAdd; break;
|
|||
|
|
case "num-": Code = Button.NumSub; break;
|
|||
|
|
case "num*": Code = Button.NumMul; break;
|
|||
|
|
case "num/": Code = Button.NumDiv; break;
|
|||
|
|
case "num.": Code = Button.NumDec; break;
|
|||
|
|
|
|||
|
|
case "a": case "b": case "c": case "d": case "e": case "f":
|
|||
|
|
case "g": case "h": case "i": case "j": case "k": case "l":
|
|||
|
|
case "m": case "n": case "o": case "p": case "q": case "r":
|
|||
|
|
case "s": case "t": case "u": case "v": case "w": case "x":
|
|||
|
|
case "y": case "z": case "0": case "1": case "2": case "3":
|
|||
|
|
case "4": case "5": case "6": case "7": case "8": case "9":
|
|||
|
|
if (Enum.TryParse($"Key{key}", out code))
|
|||
|
|
{
|
|||
|
|
Code = code;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
else goto default;
|
|||
|
|
case "shift": case "ctrl": case "alt": case "win":
|
|||
|
|
if (Enum.TryParse($"L{key}", out code))
|
|||
|
|
{
|
|||
|
|
Code = code;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
else goto default;
|
|||
|
|
default:
|
|||
|
|
if (Enum.TryParse(key, out code))
|
|||
|
|
{
|
|||
|
|
Code = code;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
else throw new ArgumentException($"Unexpected key \"{key}\"");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|