using Avalonia.Input;

namespace Avalonia.Web.Blazor
{
    internal static class Keycodes
    {
        public static Dictionary<string, Key> KeyCodes = new()
        {
            { "Escape", Key.Escape },
            { "Digit1", Key.D1 },
            { "Digit2", Key.D2 },
            { "Digit3", Key.D3 },
            { "Digit4", Key.D4 },
            { "Digit5", Key.D5 },
            { "Digit6", Key.D6 },
            { "Digit7", Key.D7 },
            { "Digit8", Key.D8 },
            { "Digit9", Key.D9 },
            { "Digit0", Key.D0 },
            { "Minus", Key.OemMinus },
            //{	"Equal"	, Key. },
            { "Backspace", Key.Back },
            { "Tab", Key.Tab },
            { "KeyQ", Key.Q },
            { "KeyW", Key.W },
            { "KeyE", Key.E },
            { "KeyR", Key.R },
            { "KeyT", Key.T },
            { "KeyY", Key.Y },
            { "KeyU", Key.U },
            { "KeyI", Key.I },
            { "KeyO", Key.O },
            { "KeyP", Key.P },
            { "BracketLeft", Key.OemOpenBrackets },
            { "BracketRight", Key.OemCloseBrackets },
            { "Enter", Key.Enter },
            { "ControlLeft", Key.LeftCtrl },
            { "KeyA", Key.A },
            { "KeyS", Key.S },
            { "KeyD", Key.D },
            { "KeyF", Key.F },
            { "KeyG", Key.G },
            { "KeyH", Key.H },
            { "KeyJ", Key.J },
            { "KeyK", Key.K },
            { "KeyL", Key.L },
            { "Semicolon", Key.OemSemicolon },
            { "Quote", Key.OemQuotes },
            //{	"Backquote"	, Key. },
            { "ShiftLeft", Key.LeftShift },
            { "Backslash", Key.OemBackslash },
            { "KeyZ", Key.Z },
            { "KeyX", Key.X },
            { "KeyC", Key.C },
            { "KeyV", Key.V },
            { "KeyB", Key.B },
            { "KeyN", Key.N },
            { "KeyM", Key.M },
            { "Comma", Key.OemComma },
            { "Period", Key.OemPeriod },
            //{	"Slash"	, Key. },
            { "ShiftRight", Key.RightShift },
            { "NumpadMultiply", Key.Multiply },
            { "AltLeft", Key.LeftAlt },
            { "Space", Key.Space },
            { "CapsLock", Key.CapsLock },
            { "F1", Key.F1 },
            { "F2", Key.F2 },
            { "F3", Key.F3 },
            { "F4", Key.F4 },
            { "F5", Key.F5 },
            { "F6", Key.F6 },
            { "F7", Key.F7 },
            { "F8", Key.F8 },
            { "F9", Key.F9 },
            { "F10", Key.F10 },
            { "NumLock", Key.NumLock },
            { "ScrollLock", Key.Scroll },
            { "Numpad7", Key.NumPad7 },
            { "Numpad8", Key.NumPad8 },
            { "Numpad9", Key.NumPad9 },
            { "NumpadSubtract", Key.Subtract },
            { "Numpad4", Key.NumPad4 },
            { "Numpad5", Key.NumPad5 },
            { "Numpad6", Key.NumPad6 },
            { "NumpadAdd", Key.Add },
            { "Numpad1", Key.NumPad1 },
            { "Numpad2", Key.NumPad2 },
            { "Numpad3", Key.NumPad3 },
            { "Numpad0", Key.NumPad0 },
            { "NumpadDecimal", Key.Decimal },
            { "Unidentified", Key.NoName },
            //{	"IntlBackslash"	, Key.bac },
            { "F11", Key.F11 },
            { "F12", Key.F12 },
            //{	"IntlRo"	, Key.Ro },
            //{	"Unidentified"	, Key. },
            { "Convert", Key.ImeConvert },
            { "KanaMode", Key.KanaMode },
            { "NonConvert", Key.ImeNonConvert },
            //{	"Unidentified"	, Key. },
            { "NumpadEnter", Key.Enter },
            { "ControlRight", Key.RightCtrl },
            { "NumpadDivide", Key.Divide },
            { "PrintScreen", Key.PrintScreen },
            { "AltRight", Key.RightAlt },
            //{	"Unidentified"	, Key. },
            { "Home", Key.Home },
            { "ArrowUp", Key.Up },
            { "PageUp", Key.PageUp },
            { "ArrowLeft", Key.Left },
            { "ArrowRight", Key.Right },
            { "End", Key.End },
            { "ArrowDown", Key.Down },
            { "PageDown", Key.PageDown },
            { "Insert", Key.Insert },
            { "Delete", Key.Delete },
            //{	"Unidentified"	, Key. },
            { "AudioVolumeMute", Key.VolumeMute },
            { "AudioVolumeDown", Key.VolumeDown },
            { "AudioVolumeUp", Key.VolumeUp },
            //{	"NumpadEqual"	, Key. },
            { "Pause", Key.Pause },
            { "NumpadComma", Key.OemComma }
        };
    }
}
