1use macro_rules_attribute::apply;
4
5use crate::macros::{common_derive, impl_display, normal, with_consts};
6
7#[apply(with_consts)]
8#[apply(common_derive)]
9#[derive(Copy, strum::EnumIter, strum::IntoStaticStr)]
10pub enum Key {
11 A = 0x04,
12 B = 0x05,
13 C = 0x06,
14 D = 0x07,
15 E = 0x08,
16 F = 0x09,
17 G = 0x0A,
18 H = 0x0B,
19 I = 0x0C,
20 J = 0x0D,
21 K = 0x0E,
22 L = 0x0F,
23 M = 0x10,
24 N = 0x11,
25 O = 0x12,
26 P = 0x13,
27 Q = 0x14,
28 R = 0x15,
29 S = 0x16,
30 T = 0x17,
31 U = 0x18,
32 V = 0x19,
33 W = 0x1A,
34 X = 0x1B,
35 Y = 0x1C,
36 Z = 0x1D,
37 D1 = 0x1E,
38 D2 = 0x1F,
39 D3 = 0x20,
40 D4 = 0x21,
41 D5 = 0x22,
42 D6 = 0x23,
43 D7 = 0x24,
44 D8 = 0x25,
45 D9 = 0x26,
46 D0 = 0x27,
47 Enter = 0x28,
48 Escape = 0x29,
49 Backspace = 0x2A,
50 Tab = 0x2B,
51 Space = 0x2C,
52 Minus = 0x2D,
53 Equal = 0x2E,
54 LeftBracket = 0x2F,
55 RightBracket = 0x30,
56 Backslash = 0x31,
57 NonUsHash = 0x32,
58 Semicolon = 0x33,
59 Quote = 0x34,
60 Grave = 0x35,
61 Comma = 0x36,
62 Dot = 0x37,
63 Slash = 0x38,
64 CapsLock = 0x39,
65 F1 = 0x3A,
66 F2 = 0x3B,
67 F3 = 0x3C,
68 F4 = 0x3D,
69 F5 = 0x3E,
70 F6 = 0x3F,
71 F7 = 0x40,
72 F8 = 0x41,
73 F9 = 0x42,
74 F10 = 0x43,
75 F11 = 0x44,
76 F12 = 0x45,
77 PrintScreen = 0x46,
78 ScrollLock = 0x47,
79 Pause = 0x48,
80 Insert = 0x49,
81 Home = 0x4A,
82 PageUp = 0x4B,
83 Delete = 0x4C,
84 End = 0x4D,
85 PageDown = 0x4E,
86 Right = 0x4F,
87 Left = 0x50,
88 Down = 0x51,
89 Up = 0x52,
90 NumLock = 0x53,
91 KpSlash = 0x54,
92 KpAsterisk = 0x55,
93 KpMinus = 0x56,
94 KpPlus = 0x57,
95 KpEnter = 0x58,
96 Kp1 = 0x59,
97 Kp2 = 0x5A,
98 Kp3 = 0x5B,
99 Kp4 = 0x5C,
100 Kp5 = 0x5D,
101 Kp6 = 0x5E,
102 Kp7 = 0x5F,
103 Kp8 = 0x60,
104 Kp9 = 0x61,
105 Kp0 = 0x62,
106 KpDot = 0x63,
107 NonUsBackslash = 0x64,
108 Application = 0x65,
109 KbPower = 0x66,
110 KpEqual = 0x67,
111 F13 = 0x68,
112 F14 = 0x69,
113 F15 = 0x6A,
114 F16 = 0x6B,
115 F17 = 0x6C,
116 F18 = 0x6D,
117 F19 = 0x6E,
118 F20 = 0x6F,
119 F21 = 0x70,
120 F22 = 0x71,
121 F23 = 0x72,
122 F24 = 0x73,
123 Execute = 0x74,
124 Help = 0x75,
125 Menu = 0x76,
126 Select = 0x77,
127 Stop = 0x78,
128 Again = 0x79,
129 Undo = 0x7A,
130 Cut = 0x7B,
131 Copy = 0x7C,
132 Paste = 0x7D,
133 Find = 0x7E,
134 Mute = 0x7F,
135 VolumeUp = 0x80,
136 VolumeDown = 0x81,
137 LockingCapsLock = 0x82,
138 LockingNumLock = 0x83,
139 LockingScrollLock = 0x84,
140 KpComma = 0x85,
141 KpEqualSign = 0x86,
142 International1 = 0x87,
143 International2 = 0x88,
144 International3 = 0x89,
145 International4 = 0x8A,
146 International5 = 0x8B,
147 International6 = 0x8C,
148 International7 = 0x8D,
149 International8 = 0x8E,
150 International9 = 0x8F,
151 Lang1 = 0x90,
152 Lang2 = 0x91,
153 Lang3 = 0x92,
154 Lang4 = 0x93,
155 Lang5 = 0x94,
156 Lang6 = 0x95,
157 Lang7 = 0x96,
158 Lang8 = 0x97,
159 Lang9 = 0x98,
160 AltErase = 0x99,
161 SysReq = 0x9A,
162 Cancel = 0x9B,
163 Clear = 0x9C,
164 Prior = 0x9D,
165 Return = 0x9E,
166 Separator = 0x9F,
167 Out = 0xA0,
168 Oper = 0xA1,
169 ClearAgain = 0xA2,
170 CrSel = 0xA3,
171 ExSel = 0xA4,
172 Kp00 = 0xB0,
173 Kp000 = 0xB1,
174 ThousandsSeparator = 0xB2,
175 DecimalSeparator = 0xB3,
176 CurrencyUnit = 0xB4,
177 CurrencySubUnit = 0xB5,
178 KpLeftParen = 0xB6,
179 KpRightParen = 0xB7,
180 KpLeftBrace = 0xB8,
181 KpRightBrace = 0xB9,
182 KpTab = 0xBA,
183 KpBackspace = 0xBB,
184 KpA = 0xBC,
185 KpB = 0xBD,
186 KpC = 0xBE,
187 KpD = 0xBF,
188 KpE = 0xC0,
189 KpF = 0xC1,
190 KpXor = 0xC2,
191 KpPower = 0xC3,
192 KpPercent = 0xC4,
193 KpLess = 0xC5,
194 KpGreater = 0xC6,
195 KpAmpersand = 0xC7,
196 KpDblAmpersand = 0xC8,
197 KpVerticalBar = 0xC9,
198 KpDblVerticalBar = 0xCA,
199 KpColon = 0xCB,
200 KpHash = 0xCC,
201 KpSpace = 0xCD,
202 KpAt = 0xCE,
203 KpExclam = 0xCF,
204 KpMemStore = 0xD0,
205 KpMemRecall = 0xD1,
206 KpMemClear = 0xD2,
207 KpMemAdd = 0xD3,
208 KpMemSubtract = 0xD4,
209 KpMemMultiply = 0xD5,
210 KpMemDivide = 0xD6,
211 KpPlusMinus = 0xD7,
212 KpClear = 0xD8,
213 KpClearEntry = 0xD9,
214 KpBinary = 0xDA,
215 KpOctal = 0xDB,
216 KpDecimal = 0xDC,
217 KpHexadecimal = 0xDD,
218 }
227
228impl_display!(Key);
229
230normal!(BS, Key, Backspace);
232normal!(DEL, Key, Delete);
233normal!(ESC, Key, Escape);
234normal!(SEMI, Key, Semicolon);
235normal!(COMM, Key, Comma);
236normal!(LBRC, Key, LeftBracket);
237normal!(RBRC, Key, RightBracket);
238normal!(PRTSC, Key, PrintScreen);
239normal!(BSLSH, Key, Backslash);
240normal!(SCLN, Key, Semicolon);
241normal!(PGUP, Key, PageUp);
242normal!(PGDN, Key, PageDown);
243
244normal!(JCOLN, Key, Quote);
246normal!(JBSLSH, Key, International1);
247normal!(JBSLSH2, Key, International3);
248normal!(JAT, Key, LeftBracket);
249normal!(JCARET, Key, Equal);
250normal!(JZNHN, Key, Grave);
251normal!(JHNKN, Key, International4);
252normal!(JMHNKN, Key, International5);
253normal!(JLBRC, Key, RightBracket);
254normal!(JRBRC, Key, NonUsHash);