public static PhysicalKey PhysicalKeyFromDomCode()

in src/Browser/Avalonia.Browser/KeyInterop.cs [201:383]


        public static PhysicalKey PhysicalKeyFromDomCode(string? domCode)
            => !string.IsNullOrEmpty(domCode) && s_physicalKeyFromDomCode.TryGetValue(domCode, out var physicalKey) ?
                physicalKey :
                PhysicalKey.None;

        // https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values
        private static readonly Dictionary<string, Key> s_keyFromDomKey = new()
        {
            // Alphabetic keys
            { "A", Key.A },
            { "B", Key.B },
            { "C", Key.C },
            { "D", Key.D },
            { "E", Key.E },
            { "F", Key.F },
            { "G", Key.G },
            { "H", Key.H },
            { "I", Key.I },
            { "J", Key.J },
            { "K", Key.K },
            { "L", Key.L },
            { "M", Key.M },
            { "N", Key.N },
            { "O", Key.O },
            { "P", Key.P },
            { "Q", Key.Q },
            { "R", Key.R },
            { "S", Key.S },
            { "T", Key.T },
            { "U", Key.U },
            { "V", Key.V },
            { "W", Key.W },
            { "X", Key.X },
            { "Y", Key.Y },
            { "Z", Key.Z },
            { "a", Key.A },
            { "b", Key.B },
            { "c", Key.C },
            { "d", Key.D },
            { "e", Key.E },
            { "f", Key.F },
            { "g", Key.G },
            { "h", Key.H },
            { "i", Key.I },
            { "j", Key.J },
            { "k", Key.K },
            { "l", Key.L },
            { "m", Key.M },
            { "n", Key.N },
            { "o", Key.O },
            { "p", Key.P },
            { "q", Key.Q },
            { "r", Key.R },
            { "s", Key.S },
            { "t", Key.T },
            { "u", Key.U },
            { "v", Key.V },
            { "w", Key.W },
            { "x", Key.X },
            { "y", Key.Y },
            { "z", Key.Z },

            // Modifier keys (left/right keys are handled separately)
            { "AltGr", Key.RightAlt },
            { "CapsLock", Key.CapsLock },
            { "NumLock", Key.NumLock },
            { "ScrollLock", Key.Scroll },

            // Whitespace keys
            { "Enter", Key.Enter },
            { "Tab", Key.Tab },
            { " ", Key.Space },

            // Navigation keys
            { "ArrowDown", Key.Down },
            { "ArrowLeft", Key.Left },
            { "ArrowRight", Key.Right },
            { "ArrowUp", Key.Up },
            { "End", Key.End },
            { "Home", Key.Home },
            { "PageDown", Key.PageDown },
            { "PageUp", Key.PageUp },

            // Editing keys
            { "Backspace", Key.Back },
            { "Clear", Key.Clear },
            { "CrSel", Key.CrSel },
            { "Delete", Key.Delete },
            { "EraseEof", Key.EraseEof },
            { "ExSel", Key.ExSel },
            { "Insert", Key.Insert },

            // UI keys
            { "Accept", Key.ImeAccept },
            { "Attn", Key.OemAttn },
            { "Cancel", Key.Cancel },
            { "ContextMenu", Key.Apps },
            { "Escape", Key.Escape },
            { "Execute", Key.Execute },
            { "Finish", Key.OemFinish },
            { "Help", Key.Help },
            { "Pause", Key.Pause },
            { "Play", Key.Play },
            { "Select", Key.Select },
            { "ZoomIn", Key.Zoom },

            // Device keys
            { "PrintScreen", Key.PrintScreen },

            // IME keys
            { "Convert", Key.ImeConvert },
            { "FinalMode", Key.FinalMode },
            { "ModeChange", Key.ImeModeChange },
            { "NonConvert", Key.ImeNonConvert },
            { "Process", Key.ImeProcessed },
            { "HangulMode", Key.HangulMode },
            { "HanjaMode", Key.HanjaMode },
            { "JunjaMode", Key.JunjaMode },
            { "Hankaku", Key.OemAuto },
            { "Hiragana", Key.DbeHiragana },
            { "KanaMode", Key.KanaMode },
            { "KanjiMode", Key.KanjiMode },
            { "Katakana", Key.DbeKatakana },
            { "Romaji", Key.OemBackTab },
            { "Zenkaku", Key.OemEnlw },

            // Function keys
            { "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 },
            { "F11", Key.F11 },
            { "F12", Key.F12 },
            { "F13", Key.F13 },
            { "F14", Key.F14 },
            { "F15", Key.F15 },
            { "F16", Key.F16 },
            { "F17", Key.F17 },
            { "F18", Key.F18 },
            { "F19", Key.F19 },
            { "F20", Key.F20 },

            // Multimedia keys
            { "MediaPlayPause", Key.MediaPlayPause },
            { "MediaStop", Key.MediaStop },
            { "MediaTrackNext", Key.MediaNextTrack },
            { "MediaTrackPrevious", Key.MediaPreviousTrack },

            // Audio control keys
            { "AudioVolumeDown", Key.VolumeDown },
            { "AudioVolumeMute", Key.VolumeMute },
            { "AudioVolumeUp", Key.VolumeUp },

            // Application selector keys
            { "LaunchCalculator", Key.LaunchApplication2 },
            { "LaunchMail", Key.LaunchMail },
            { "LaunchMyComputer", Key.LaunchApplication1 },
            { "LaunchApplication1", Key.LaunchApplication1 },
            { "LaunchApplication2", Key.LaunchApplication2 },

            // Browser control keys
            { "BrowserBack", Key.BrowserBack },
            { "BrowserFavorites", Key.BrowserFavorites },
            { "BrowserForward", Key.BrowserForward },
            { "BrowserHome", Key.BrowserHome },
            { "BrowserRefresh", Key.BrowserRefresh },
            { "BrowserSearch", Key.BrowserSearch },
            { "BrowserStop", Key.BrowserStop },

            // Numeric keypad keys
            { "Decimal", Key.Decimal },
            { "Multiply", Key.Multiply },
            { "Add", Key.Add },
            { "Divide", Key.Divide },
            { "Subtract", Key.Subtract },
            { "Separator", Key.Separator },
        };