in src/Headless/Avalonia.Headless.Vnc/HeadlessVncFramebufferSource.cs [111:300]
private static (Key key, string? symbol) TranslateKey(KeySym key) =>
key switch
{
KeySym.Backspace => (Key.Back, "\b"),
KeySym.Tab => (Key.Tab, "\t"),
KeySym.LineFeed => (Key.LineFeed, null),
KeySym.Clear => (Key.Clear, null),
KeySym.Return => (Key.Return, "\r"),
KeySym.Pause => (Key.Pause, null),
KeySym.Escape => (Key.Escape, "\u001B"),
KeySym.Delete => (Key.Delete, null),
KeySym.Home => (Key.Home, null),
KeySym.Left => (Key.Left, null),
KeySym.Up => (Key.Up, null),
KeySym.Right => (Key.Right, null),
KeySym.Down => (Key.Down, null),
KeySym.PageUp => (Key.PageUp, null),
KeySym.PageDown => (Key.PageDown, null),
KeySym.End => (Key.End, null),
KeySym.Begin => (Key.Home, null),
KeySym.Select => (Key.Select, null),
KeySym.Print => (Key.Print, null),
KeySym.Execute => (Key.Execute, null),
KeySym.Insert => (Key.Insert, null),
KeySym.Cancel => (Key.Cancel, null),
KeySym.Help => (Key.Help, null),
KeySym.Break => (Key.Pause, null),
KeySym.Num_Lock => (Key.NumLock, null),
KeySym.NumPadSpace => (Key.Space, null),
KeySym.NumPadTab => (Key.Tab, null),
KeySym.NumPadEnter => (Key.Enter, null),
KeySym.NumPadF1 => (Key.F1, null),
KeySym.NumPadF2 => (Key.F2, null),
KeySym.NumPadF3 => (Key.F3, null),
KeySym.NumPadF4 => (Key.F4, null),
KeySym.NumPadHome => (Key.Home, null),
KeySym.NumPadLeft => (Key.Left, null),
KeySym.NumPadUp => (Key.Up, null),
KeySym.NumPadRight => (Key.Right, null),
KeySym.NumPadDown => (Key.Down, null),
KeySym.NumPadPageUp => (Key.PageUp, null),
KeySym.NumPadPageDown => (Key.PageDown, null),
KeySym.NumPadEnd => (Key.End, null),
KeySym.NumPadBegin => (Key.Home, null),
KeySym.NumPadInsert => (Key.Insert, null),
KeySym.NumPadDelete => (Key.Delete, null),
KeySym.NumPadEqual => (Key.Enter, "="),
KeySym.NumPadMultiply => (Key.Multiply, "*"),
KeySym.NumPadAdd => (Key.Add, "+"),
KeySym.NumPadSeparator => (Key.Separator, NumberFormatInfo.CurrentInfo.NumberGroupSeparator),
KeySym.NumPadSubtract => (Key.Subtract, "-"),
KeySym.NumPadDecimal => (Key.Decimal, NumberFormatInfo.CurrentInfo.NumberDecimalSeparator),
KeySym.NumPadDivide => (Key.Divide, "/"),
KeySym.NumPad0 => (Key.NumPad0, "0"),
KeySym.NumPad1 => (Key.NumPad1, "1"),
KeySym.NumPad2 => (Key.NumPad2, "2"),
KeySym.NumPad3 => (Key.NumPad3, "3"),
KeySym.NumPad4 => (Key.NumPad4, "4"),
KeySym.NumPad5 => (Key.NumPad5, "5"),
KeySym.NumPad6 => (Key.NumPad6, "6"),
KeySym.NumPad7 => (Key.NumPad7, "7"),
KeySym.NumPad8 => (Key.NumPad8, "8"),
KeySym.NumPad9 => (Key.NumPad9, "9"),
KeySym.F1 => (Key.F1, null),
KeySym.F2 => (Key.F2, null),
KeySym.F3 => (Key.F3, null),
KeySym.F4 => (Key.F4, null),
KeySym.F5 => (Key.F5, null),
KeySym.F6 => (Key.F6, null),
KeySym.F7 => (Key.F7, null),
KeySym.F8 => (Key.F8, null),
KeySym.F9 => (Key.F9, null),
KeySym.F10 => (Key.F10, null),
KeySym.F11 => (Key.F11, null),
KeySym.F12 => (Key.F12, null),
KeySym.F13 => (Key.F13, null),
KeySym.F14 => (Key.F14, null),
KeySym.F15 => (Key.F15, null),
KeySym.F16 => (Key.F16, null),
KeySym.F17 => (Key.F17, null),
KeySym.F18 => (Key.F18, null),
KeySym.F19 => (Key.F19, null),
KeySym.F20 => (Key.F20, null),
KeySym.F21 => (Key.F21, null),
KeySym.F22 => (Key.F22, null),
KeySym.F23 => (Key.F23, null),
KeySym.F24 => (Key.F24, null),
KeySym.ShiftLeft => (Key.LeftShift, null),
KeySym.ShiftRight => (Key.RightShift, null),
KeySym.ControlLeft => (Key.LeftCtrl, null),
KeySym.ControlRight => (Key.RightCtrl, null),
KeySym.CapsLock => (Key.CapsLock, null),
KeySym.AltLeft => (Key.LeftAlt, null),
KeySym.AltRight => (Key.RightAlt, null),
KeySym.Space => (Key.Space, " "),
KeySym.Exclamation => (Key.D1, "!"),
KeySym.Quote => (Key.D2, "\""),
KeySym.NumberSign => (Key.D3, "#"),
KeySym.Dollar => (Key.D4, "$"),
KeySym.Percent => (Key.D5, "%"),
KeySym.Ampersand => (Key.D7, "&"),
KeySym.Apostrophe => (Key.Oem3, "'"),
KeySym.ParenthesisLeft => (Key.D9, "("),
KeySym.ParenthesisRight => (Key.D0, ")"),
KeySym.Asterisk => (Key.D8, "*"),
KeySym.Plus => (Key.OemPlus, "+"),
KeySym.Comma => (Key.OemComma, ","),
KeySym.Minus => (Key.OemMinus, "-"),
KeySym.Period => (Key.OemPeriod, "."),
KeySym.Slash => (Key.OemQuestion, "/"),
KeySym.D0 => (Key.D0, "0"),
KeySym.D1 => (Key.D1, "1"),
KeySym.D2 => (Key.D2, "2"),
KeySym.D3 => (Key.D3, "3"),
KeySym.D4 => (Key.D4, "4"),
KeySym.D5 => (Key.D5, "5"),
KeySym.D6 => (Key.D6, "6"),
KeySym.D7 => (Key.D7, "7"),
KeySym.D8 => (Key.D8, "8"),
KeySym.D9 => (Key.D9, "9"),
KeySym.Colon => (Key.OemSemicolon, ":"),
KeySym.Semicolon => (Key.OemSemicolon, ";"),
KeySym.Less => (Key.OemComma, "<"),
KeySym.Equal => (Key.OemPlus, "="),
KeySym.Greater => (Key.OemPeriod, ">"),
KeySym.Question => (Key.OemQuestion, "?"),
KeySym.At => (Key.Oem3, "@"),
KeySym.A => (Key.A, "A"),
KeySym.B => (Key.B, "B"),
KeySym.C => (Key.C, "C"),
KeySym.D => (Key.D, "D"),
KeySym.E => (Key.E, "E"),
KeySym.F => (Key.F, "F"),
KeySym.G => (Key.G, "G"),
KeySym.H => (Key.H, "H"),
KeySym.I => (Key.I, "I"),
KeySym.J => (Key.J, "J"),
KeySym.K => (Key.K, "K"),
KeySym.L => (Key.L, "L"),
KeySym.M => (Key.M, "M"),
KeySym.N => (Key.N, "N"),
KeySym.O => (Key.O, "O"),
KeySym.P => (Key.P, "P"),
KeySym.Q => (Key.Q, "Q"),
KeySym.R => (Key.R, "R"),
KeySym.S => (Key.S, "S"),
KeySym.T => (Key.T, "T"),
KeySym.U => (Key.U, "U"),
KeySym.V => (Key.V, "V"),
KeySym.W => (Key.W, "W"),
KeySym.X => (Key.X, "X"),
KeySym.Y => (Key.Y, "Y"),
KeySym.Z => (Key.Z, "Z"),
KeySym.BracketLeft => (Key.OemOpenBrackets, "["),
KeySym.Backslash => (Key.OemPipe, "\\"),
KeySym.Bracketright => (Key.OemCloseBrackets, "]"),
KeySym.Underscore => (Key.OemMinus, "_"),
KeySym.Grave => (Key.Oem8, "`"),
KeySym.a => (Key.A, "a"),
KeySym.b => (Key.B, "b"),
KeySym.c => (Key.C, "c"),
KeySym.d => (Key.D, "d"),
KeySym.e => (Key.E, "e"),
KeySym.f => (Key.F, "f"),
KeySym.g => (Key.G, "g"),
KeySym.h => (Key.H, "h"),
KeySym.i => (Key.I, "i"),
KeySym.j => (Key.J, "j"),
KeySym.k => (Key.K, "k"),
KeySym.l => (Key.L, "l"),
KeySym.m => (Key.M, "m"),
KeySym.n => (Key.M, "n"),
KeySym.o => (Key.O, "o"),
KeySym.p => (Key.P, "p"),
KeySym.q => (Key.Q, "q"),
KeySym.r => (Key.R, "r"),
KeySym.s => (Key.S, "s"),
KeySym.t => (Key.T, "t"),
KeySym.u => (Key.U, "u"),
KeySym.v => (Key.V, "v"),
KeySym.w => (Key.W, "w"),
KeySym.x => (Key.X, "x"),
KeySym.y => (Key.Y, "y"),
KeySym.z => (Key.Z, "z"),
KeySym.BraceLeft => (Key.OemOpenBrackets, "{"),
KeySym.Bar => (Key.OemPipe, "|"),
KeySym.BraceRight => (Key.OemCloseBrackets, "}"),
KeySym.AsciiTilde => (Key.OemTilde, "~"),
_ => (Key.None, null)
};