1use num_enum::TryFromPrimitive;
2use serde::{Deserialize, Serialize};
3
4#[derive(Serialize, Deserialize, Hash, Debug, Eq, PartialEq, Copy, Clone, TryFromPrimitive)]
6#[repr(u16)]
7pub enum ScanCode {
8 Esc = 0x01,
9
10 Num1 = 0x02,
11 Num2 = 0x03,
12 Num3 = 0x04,
13 Num4 = 0x05,
14 Num5 = 0x06,
15 Num6 = 0x07,
16 Num7 = 0x08,
17 Num8 = 0x09,
18 Num9 = 0x0A,
19 Num0 = 0x0B,
20
21 Minus = 0x0C,
22 Equals = 0x0D,
23 Backspace = 0x0E,
24
25 Tab = 0x0F,
26
27 Q = 0x10,
28 W = 0x11,
29 E = 0x12,
30 R = 0x13,
31 T = 0x14,
32 Y = 0x15,
33 U = 0x16,
34 I = 0x17,
35 O = 0x18,
36 P = 0x19,
37 LeftBracket = 0x1A,
38 RightBracket = 0x1B,
39 Enter = 0x1C,
40 LeftControl = 0x1D,
41 A = 0x1E,
42 S = 0x1F,
43 D = 0x20,
44 F = 0x21,
45 G = 0x22,
46 H = 0x23,
47 J = 0x24,
48 K = 0x25,
49 L = 0x26,
50 SemiColon = 0x27,
51 Apostrophe = 0x28,
52 Grave = 0x29,
53 LeftShift = 0x2A,
54 BackSlash = 0x2B,
55 Z = 0x2C,
56 X = 0x2D,
57 C = 0x2E,
58 V = 0x2F,
59 B = 0x30,
60 N = 0x31,
61 M = 0x32,
62 Comma = 0x33,
63 Period = 0x34,
64 Slash = 0x35,
65 RightShift = 0x36,
66 NumpadMultiply = 0x37,
67 LeftAlt = 0x38,
68 Space = 0x39,
69 CapsLock = 0x3A,
70 F1 = 0x3B,
71 F2 = 0x3C,
72 F3 = 0x3D,
73 F4 = 0x3E,
74 F5 = 0x3F,
75 F6 = 0x40,
76 F7 = 0x41,
77 F8 = 0x42,
78 F9 = 0x43,
79 F10 = 0x44,
80 NumLock = 0x45,
81 ScrollLock = 0x46,
82 Numpad7 = 0x47,
83 Numpad8 = 0x48,
84 Numpad9 = 0x49,
85 NumpadMinus = 0x4A,
86 Numpad4 = 0x4B,
87 Numpad5 = 0x4C,
88 Numpad6 = 0x4D,
89 NumpadPlus = 0x4E,
90 Numpad1 = 0x4F,
91 Numpad2 = 0x50,
92 Numpad3 = 0x51,
93 Numpad0 = 0x52,
94 NumpadPeriod = 0x53,
95 AltPrintScreen = 0x54,
96 SC_55 = 0x55,
97 Int1 = 0x56,
98 F11 = 0x57,
99 F12 = 0x58,
100 SC_59 = 0x59,
101 Oem1 = 0x5A,
102 Oem2 = 0x5B,
103 Oem3 = 0x5C,
104 EraseEOF = 0x5D,
105 Oem4 = 0x5E,
106 Oem5 = 0x5F,
107 SC_60 = 0x60,
108 SC_61 = 0x61,
109 Zoom = 0x62,
110 Help = 0x63,
111 F13 = 0x64,
112 F14 = 0x65,
113 F15 = 0x66,
114 F16 = 0x67,
115 F17 = 0x68,
116 F18 = 0x69,
117 F19 = 0x6A,
118 F20 = 0x6B,
119 F21 = 0x6C,
120 F22 = 0x6D,
121 F23 = 0x6E,
122 Oem6 = 0x6F,
123 Katakana = 0x70,
124 Oem7 = 0x71,
125 SC_72 = 0x72,
126 SC_73 = 0x73,
127 SC_74 = 0x74,
128 SC_75 = 0x75,
129 F24 = 0x76,
130 SBCSChar = 0x77,
131 SC_78 = 0x78,
132 Convert = 0x79,
133 SC_7A = 0x7A,
134 NonConvert = 0x7B,
135 SC_7C = 0x7C,
136 SC_7D = 0x7D,
137 SC_7E = 0x7E,
138 SC_7F = 0x7F,
139 SC_80 = 0x80,
140 SC_81 = 0x81,
141 SC_82 = 0x82,
142 SC_83 = 0x83,
143 SC_84 = 0x84,
144 SC_85 = 0x85,
145 SC_86 = 0x86,
146 SC_87 = 0x87,
147 SC_88 = 0x88,
148 SC_89 = 0x89,
149 SC_8A = 0x8A,
150 SC_8B = 0x8B,
151 SC_8C = 0x8C,
152 SC_8D = 0x8D,
153 SC_8E = 0x8E,
154 SC_8F = 0x8F,
155 SC_90 = 0x90,
156 SC_91 = 0x91,
157 SC_92 = 0x92,
158 SC_93 = 0x93,
159 SC_94 = 0x94,
160 SC_95 = 0x95,
161 SC_96 = 0x96,
162 SC_97 = 0x97,
163 SC_98 = 0x98,
164 SC_99 = 0x99,
165 SC_9A = 0x9A,
166 SC_9B = 0x9B,
167 SC_9C = 0x9C,
168 SC_9D = 0x9D,
169 SC_9E = 0x9E,
170 SC_9F = 0x9F,
171 SC_A0 = 0xA0,
172 SC_A1 = 0xA1,
173 SC_A2 = 0xA2,
174 SC_A3 = 0xA3,
175 SC_A4 = 0xA4,
176 SC_A5 = 0xA5,
177 SC_A6 = 0xA6,
178 SC_A7 = 0xA7,
179 SC_A8 = 0xA8,
180 SC_A9 = 0xA9,
181 SC_AA = 0xAA,
182 SC_AB = 0xAB,
183 SC_AC = 0xAC,
184 SC_AD = 0xAD,
185 SC_AE = 0xAE,
186 SC_AF = 0xAF,
187 SC_B0 = 0xB0,
188 SC_B1 = 0xB1,
189 SC_B2 = 0xB2,
190 SC_B3 = 0xB3,
191 SC_B4 = 0xB4,
192 SC_B5 = 0xB5,
193 SC_B6 = 0xB6,
194 SC_B7 = 0xB7,
195 SC_B8 = 0xB8,
196 SC_B9 = 0xB9,
197 SC_BA = 0xBA,
198 SC_BB = 0xBB,
199 SC_BC = 0xBC,
200 SC_BD = 0xBD,
201 SC_BE = 0xBE,
202 SC_BF = 0xBF,
203 SC_C0 = 0xC0,
204 SC_C1 = 0xC1,
205 SC_C2 = 0xC2,
206 SC_C3 = 0xC3,
207 SC_C4 = 0xC4,
208 SC_C5 = 0xC5,
209 SC_C6 = 0xC6,
210 SC_C7 = 0xC7,
211 SC_C8 = 0xC8,
212 SC_C9 = 0xC9,
213 SC_CA = 0xCA,
214 SC_CB = 0xCB,
215 SC_CC = 0xCC,
216 SC_CD = 0xCD,
217 SC_CE = 0xCE,
218 SC_CF = 0xCF,
219 SC_D0 = 0xD0,
220 SC_D1 = 0xD1,
221 SC_D2 = 0xD2,
222 SC_D3 = 0xD3,
223 SC_D4 = 0xD4,
224 SC_D5 = 0xD5,
225 SC_D6 = 0xD6,
226 SC_D7 = 0xD7,
227 SC_D8 = 0xD8,
228 SC_D9 = 0xD9,
229 SC_DA = 0xDA,
230 SC_DB = 0xDB,
231 SC_DC = 0xDC,
232 SC_DD = 0xDD,
233 SC_DE = 0xDE,
234 SC_DF = 0xDF,
235 SC_E0 = 0xE0,
236 SC_E1 = 0xE1,
237 SC_E2 = 0xE2,
238 SC_E3 = 0xE3,
239 SC_E4 = 0xE4,
240 SC_E5 = 0xE5,
241 SC_E6 = 0xE6,
242 SC_E7 = 0xE7,
243 SC_E8 = 0xE8,
244 SC_E9 = 0xE9,
245 SC_EA = 0xEA,
246 SC_EB = 0xEB,
247 SC_EC = 0xEC,
248 SC_ED = 0xED,
249 SC_EE = 0xEE,
250 SC_EF = 0xEF,
251 SC_F0 = 0xF0,
252 SC_F1 = 0xF1,
253 SC_F2 = 0xF2,
254 SC_F3 = 0xF3,
255 SC_F4 = 0xF4,
256 SC_F5 = 0xF5,
257 SC_F6 = 0xF6,
258 SC_F7 = 0xF7,
259 SC_F8 = 0xF8,
260 SC_F9 = 0xF9,
261 SC_FA = 0xFA,
262 SC_FB = 0xFB,
263 SC_FC = 0xFC,
264 SC_FD = 0xFD,
265 SC_FE = 0xFE,
266 SC_NonExtendMax = 0xFF,
267}