1#[derive(Debug, PartialEq)]
3#[allow(missing_docs)]
4pub enum Key {
5 Unknow = 0,
6 BackSpace = 8,
7 Tab = 9,
8 Enter = 13,
9 Shift = 16,
10 Ctrl = 17,
11 Alt = 18,
12 Pause = 19,
13 CapsLock = 20,
14 Escape = 27,
15 PageUp = 33,
16 PageDown = 34,
17 End = 35,
18 Home = 36,
19 LeftArrow = 37,
20 UpArrow = 38,
21 RightArrow = 39,
22 DownArrow = 40,
23 Insert = 45,
24 Delete = 46,
25 Zero = 48,
26 One = 49,
27 Two = 50,
28 Three = 51,
29 Four = 52,
30 Five = 53,
31 Six = 54,
32 Seven = 55,
33 Eight = 56,
34 Nine = 57,
35 A = 65,
36 B = 66,
37 C = 67,
38 D = 68,
39 E = 69,
40 F = 70,
41 G = 71,
42 H = 72,
43 I = 73,
44 J = 74,
45 K = 75,
46 L = 76,
47 M = 77,
48 N = 78,
49 O = 79,
50 P = 80,
51 Q = 81,
52 R = 82,
53 S = 83,
54 T = 84,
55 U = 85,
56 V = 86,
57 W = 87,
58 X = 88,
59 Y = 89,
60 Z = 90,
61 LeftWindowKey = 91,
62 RightWindowKey = 92,
63 SelectKey = 93,
64 Numpad0 = 96,
65 Numpad1 = 97,
66 Numpad2 = 98,
67 Numpad3 = 99,
68 Numpad4 = 100,
69 Numpad5 = 101,
70 Numpad6 = 102,
71 Numpad7 = 103,
72 Numpad8 = 104,
73 Numpad9 = 105,
74 Multiply = 106,
75 Add = 107,
76 Subtract = 109,
77 DecimalPoint = 110,
78 Divide = 111,
79 F1 = 112,
80 F2 = 113,
81 F3 = 114,
82 F4 = 115,
83 F5 = 116,
84 F6 = 117,
85 F7 = 118,
86 F8 = 119,
87 F9 = 120,
88 F10 = 121,
89 F11 = 122,
90 F12 = 123,
91 NumLock = 144,
92 ScrollLock = 145,
93 SemiColon = 186,
94 EqualSign = 187,
95 Comma = 188,
96 Dash = 189,
97 Period = 190,
98 ForwardSlash = 191,
99 GraveAccent = 192,
100 OpenBracket = 219,
101 BackSlash = 220,
102 CloseBraket = 221,
103 SingleQuote = 222,
104}
105
106impl From<u32> for Key {
107 fn from(key_code: u32) -> Self {
108 match key_code {
109 8 => Key::BackSpace,
110 9 => Key::Tab,
111 13 => Key::Enter,
112 16 => Key::Shift,
113 17 => Key::Ctrl,
114 18 => Key::Alt,
115 19 => Key::Pause,
116 20 => Key::CapsLock,
117 27 => Key::Escape,
118 33 => Key::PageUp,
119 34 => Key::PageDown,
120 35 => Key::End,
121 36 => Key::Home,
122 37 => Key::LeftArrow,
123 38 => Key::UpArrow,
124 39 => Key::RightArrow,
125 40 => Key::DownArrow,
126 45 => Key::Insert,
127 46 => Key::Delete,
128 48 => Key::Zero,
129 49 => Key::One,
130 50 => Key::Two,
131 51 => Key::Three,
132 52 => Key::Four,
133 53 => Key::Five,
134 54 => Key::Six,
135 55 => Key::Seven,
136 56 => Key::Eight,
137 57 => Key::Nine,
138 65 => Key::A,
139 66 => Key::B,
140 67 => Key::C,
141 68 => Key::D,
142 69 => Key::E,
143 70 => Key::F,
144 71 => Key::G,
145 72 => Key::H,
146 73 => Key::I,
147 74 => Key::J,
148 75 => Key::K,
149 76 => Key::L,
150 77 => Key::M,
151 78 => Key::N,
152 79 => Key::O,
153 80 => Key::P,
154 81 => Key::Q,
155 82 => Key::R,
156 83 => Key::S,
157 84 => Key::T,
158 85 => Key::U,
159 86 => Key::V,
160 87 => Key::W,
161 88 => Key::X,
162 89 => Key::Y,
163 90 => Key::Z,
164 91 => Key::LeftWindowKey,
165 92 => Key::RightWindowKey,
166 93 => Key::SelectKey,
167 96 => Key::Numpad0,
168 97 => Key::Numpad1,
169 98 => Key::Numpad2,
170 99 => Key::Numpad3,
171 100 => Key::Numpad4,
172 101 => Key::Numpad5,
173 102 => Key::Numpad6,
174 103 => Key::Numpad7,
175 104 => Key::Numpad8,
176 105 => Key::Numpad9,
177 106 => Key::Multiply,
178 107 => Key::Add,
179 109 => Key::Subtract,
180 110 => Key::DecimalPoint,
181 111 => Key::Divide,
182 112 => Key::F1,
183 113 => Key::F2,
184 114 => Key::F3,
185 115 => Key::F4,
186 116 => Key::F5,
187 117 => Key::F6,
188 118 => Key::F7,
189 119 => Key::F8,
190 120 => Key::F9,
191 121 => Key::F10,
192 122 => Key::F11,
193 123 => Key::F12,
194 144 => Key::NumLock,
195 145 => Key::ScrollLock,
196 186 => Key::SemiColon,
197 187 => Key::EqualSign,
198 188 => Key::Comma,
199 189 => Key::Dash,
200 190 => Key::Period,
201 191 => Key::ForwardSlash,
202 192 => Key::GraveAccent,
203 219 => Key::OpenBracket,
204 220 => Key::BackSlash,
205 221 => Key::CloseBraket,
206 222 => Key::SingleQuote,
207 _ => Key::Unknow
208 }
209 }
210}
211
212#[derive(Debug)]
213pub enum KeyboardEvent {
215 Down(Key),
217 Up(Key)
219}