1 // 2 // Copyright (c) 2010-2018 Antmicro 3 // Copyright (c) 2011-2015 Realtime Embedded 4 // 5 // This file is licensed under the MIT License. 6 // Full license text is available in 'licenses/MIT.txt'. 7 // 8 using Antmicro.Renode.Peripherals.Input; 9 using System.Collections.Generic; 10 11 namespace Antmicro.Renode.Extensions.Analyzers.Video.Events 12 { 13 internal class X11ToKeyScanCodeConverter 14 { X11ToKeyScanCodeConverter()15 static X11ToKeyScanCodeConverter() 16 { 17 Instance = new X11ToKeyScanCodeConverter(); 18 } 19 20 public static X11ToKeyScanCodeConverter Instance { get; private set; } 21 GetScanCode(int fromValue)22 public KeyScanCode? GetScanCode(int fromValue) 23 { 24 KeyScanCode result; 25 return ToScanCode.TryGetValue(fromValue, out result) ? (KeyScanCode?)result : null; 26 } 27 28 private readonly Dictionary<int, KeyScanCode> ToScanCode = new Dictionary<int, KeyScanCode> { 29 { 0x25, KeyScanCode.CtrlL }, 30 { 0x85, KeyScanCode.WinL }, 31 { 0x40, KeyScanCode.AltL }, 32 { 0x41, KeyScanCode.Space }, 33 { 0x6c, KeyScanCode.AltR }, 34 { 0x5c, KeyScanCode.AltR }, 35 { 0x86, KeyScanCode.WinR }, 36 { 0x87, KeyScanCode.WinMenu }, 37 { 0x69, KeyScanCode.CtrlR }, 38 39 { 0x32, KeyScanCode.ShiftL }, 40 { 0x34, KeyScanCode.Z }, 41 { 0x35, KeyScanCode.X }, 42 { 0x36, KeyScanCode.C }, 43 { 0x37, KeyScanCode.V }, 44 { 0x38, KeyScanCode.B }, 45 { 0x39, KeyScanCode.N }, 46 { 0x3a, KeyScanCode.M }, 47 { 0x3b, KeyScanCode.OemPeriod }, 48 { 0x3c, KeyScanCode.OemComma }, 49 { 0x3d, KeyScanCode.OemQuestion }, 50 { 0x3e, KeyScanCode.ShiftR }, 51 52 { 0x42, KeyScanCode.CapsLock }, 53 { 0x26, KeyScanCode.A }, 54 { 0x27, KeyScanCode.S }, 55 { 0x28, KeyScanCode.D }, 56 { 0x29, KeyScanCode.F }, 57 { 0x2a, KeyScanCode.G }, 58 { 0x2b, KeyScanCode.H }, 59 { 0x2c, KeyScanCode.J }, 60 { 0x2d, KeyScanCode.K }, 61 { 0x2e, KeyScanCode.L }, 62 { 0x2f, KeyScanCode.OemSemicolon }, 63 { 0x30, KeyScanCode.OemQuotes }, 64 { 0x24, KeyScanCode.Enter }, 65 66 { 0x17, KeyScanCode.Tab }, 67 { 0x18, KeyScanCode.Q }, 68 { 0x19, KeyScanCode.W }, 69 { 0x1a, KeyScanCode.E }, 70 { 0x1b, KeyScanCode.R }, 71 { 0x1c, KeyScanCode.T }, 72 { 0x1d, KeyScanCode.Y }, 73 { 0x1e, KeyScanCode.U }, 74 { 0x1f, KeyScanCode.I }, 75 { 0x20, KeyScanCode.O }, 76 { 0x21, KeyScanCode.P }, 77 { 0x22, KeyScanCode.OemOpenBrackets }, 78 { 0x23, KeyScanCode.OemCloseBrackets }, 79 80 { 0x31, KeyScanCode.Tilde }, 81 { 0x0a, KeyScanCode.Number1 }, 82 { 0x0b, KeyScanCode.Number2 }, 83 { 0x0c, KeyScanCode.Number3 }, 84 { 0x0d, KeyScanCode.Number4 }, 85 { 0x0e, KeyScanCode.Number5 }, 86 { 0x0f, KeyScanCode.Number6 }, 87 { 0x10, KeyScanCode.Number7 }, 88 { 0x11, KeyScanCode.Number8 }, 89 { 0x12, KeyScanCode.Number9 }, 90 { 0x13, KeyScanCode.Number0 }, 91 { 0x14, KeyScanCode.OemMinus }, 92 { 0x15, KeyScanCode.OemPlus }, 93 { 0x33, KeyScanCode.OemPipe }, 94 { 0x16, KeyScanCode.BackSpace }, 95 96 { 0x09, KeyScanCode.Escape }, 97 { 0x43, KeyScanCode.F1 }, 98 { 0x44, KeyScanCode.F2 }, 99 { 0x45, KeyScanCode.F3 }, 100 { 0x46, KeyScanCode.F4 }, 101 { 0x47, KeyScanCode.F5 }, 102 { 0x48, KeyScanCode.F6 }, 103 { 0x49, KeyScanCode.F7 }, 104 { 0x4a, KeyScanCode.F8 }, 105 { 0x4b, KeyScanCode.F9 }, 106 { 0x4c, KeyScanCode.F10 }, 107 { 0x5f, KeyScanCode.F11 }, 108 { 0x60, KeyScanCode.F12 }, 109 { 0x6b, KeyScanCode.PrtSc }, 110 { 0x4e, KeyScanCode.ScrollLock }, 111 { 0x7f, KeyScanCode.Pause }, 112 113 { 0x76, KeyScanCode.Insert }, 114 { 0x6e, KeyScanCode.Home }, 115 { 0x70, KeyScanCode.PageUp }, 116 { 0x77, KeyScanCode.Delete }, 117 { 0x73, KeyScanCode.End }, 118 { 0x75, KeyScanCode.PageDown }, 119 120 { 0x6f, KeyScanCode.Up }, 121 { 0x74, KeyScanCode.Down }, 122 { 0x71, KeyScanCode.Left }, 123 { 0x72, KeyScanCode.Right }, 124 125 { 0x4d, KeyScanCode.NumLock }, 126 { 0x5a, KeyScanCode.Keypad0 }, 127 { 0x57, KeyScanCode.Keypad1 }, 128 { 0x58, KeyScanCode.Keypad2 }, 129 { 0x59, KeyScanCode.Keypad3 }, 130 { 0x53, KeyScanCode.Keypad4 }, 131 { 0x54, KeyScanCode.Keypad5 }, 132 { 0x55, KeyScanCode.Keypad6 }, 133 { 0x4f, KeyScanCode.Keypad7 }, 134 { 0x50, KeyScanCode.Keypad8 }, 135 { 0x51, KeyScanCode.Keypad9 }, 136 { 0x6a, KeyScanCode.KeypadDivide }, 137 { 0x3f, KeyScanCode.KeypadMultiply }, 138 { 0x52, KeyScanCode.KeypadMinus }, 139 { 0x56, KeyScanCode.KeypadPlus }, 140 { 0x5b, KeyScanCode.KeypadComma }, 141 { 0x68, KeyScanCode.KeypadEnter }, 142 }; 143 } 144 } 145 146