win32-automation-agent/Domain/Models/Key.cs

62 lines
2.5 KiB
C#
Raw Normal View History

2026-01-08 21:33:01 +03:00
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}\"");
}
}
}
}