gluten_keyboard/lib.rs
1// Generated by gluten-keyboard-generator, and is dual licensed under the MIT and Apache2 Licenses
2
3#![no_std]
4
5//! Provides an enum containing keys found on most keyboards. Useful for implementing a system where the user
6//! needs to handle keyboard input. Made because I couldn't find a useful standard that didn't pretend everything
7//! used `char`.
8
9/// A set of keys.
10#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
11pub enum Key {
12 /// The Unknown key.
13 Unknown,
14 /// The Zero (0) key.
15 Zero,
16 /// The One (1) key.
17 One,
18 /// The Two (2) key.
19 Two,
20 /// The Three (3) key.
21 Three,
22 /// The Four (4) key.
23 Four,
24 /// The Five (5) key.
25 Five,
26 /// The Six (6) key.
27 Six,
28 /// The Seven (7) key.
29 Seven,
30 /// The Eight (8) key.
31 Eight,
32 /// The Nine (9) key.
33 Nine,
34 /// The A (A) key.
35 A,
36 /// The B (B) key.
37 B,
38 /// The C (C) key.
39 C,
40 /// The D (D) key.
41 D,
42 /// The E (E) key.
43 E,
44 /// The F (F) key.
45 F,
46 /// The G (G) key.
47 G,
48 /// The H (H) key.
49 H,
50 /// The I (I) key.
51 I,
52 /// The J (J) key.
53 J,
54 /// The K (K) key.
55 K,
56 /// The L (L) key.
57 L,
58 /// The M (M) key.
59 M,
60 /// The N (N) key.
61 N,
62 /// The O (O) key.
63 O,
64 /// The P (P) key.
65 P,
66 /// The Q (Q) key.
67 Q,
68 /// The R (R) key.
69 R,
70 /// The S (S) key.
71 S,
72 /// The T (T) key.
73 T,
74 /// The U (U) key.
75 U,
76 /// The V (V) key.
77 V,
78 /// The W (W) key.
79 W,
80 /// The X (X) key.
81 X,
82 /// The Y (Y) key.
83 Y,
84 /// The Z (Z) key.
85 Z,
86 /// The Accept key.
87 Accept,
88 /// The Add key.
89 Add,
90 /// The Again key.
91 Again,
92 /// The AllCandidates key.
93 AllCandidates,
94 /// The Alphanumeric key.
95 Alphanumeric,
96 /// The Alt key.
97 Alt,
98 /// The AltGraph key.
99 AltGraph,
100 /// The Ampersand (&) key.
101 Ampersand,
102 /// The Asterisk (*) key.
103 Asterisk,
104 /// The BackQuote key.
105 BackQuote,
106 /// The BackSlash (\) key.
107 BackSlash,
108 /// The Begin key.
109 Begin,
110 /// The BraceLeft ({) key.
111 BraceLeft,
112 /// The BraceRight (}) key.
113 BraceRight,
114 /// The Cancel key.
115 Cancel,
116 /// The CapsLock key.
117 CapsLock,
118 /// The Circumflex (^) key.
119 Circumflex,
120 /// The Clear key.
121 Clear,
122 /// The BracketLeft ([) key.
123 BracketLeft,
124 /// The BracketRight (]) key.
125 BracketRight,
126 /// The CodeInput key.
127 CodeInput,
128 /// The Colon (:) key.
129 Colon,
130 /// The Comma (,) key.
131 Comma,
132 /// The Compose key.
133 Compose,
134 /// The ContextMenu key.
135 ContextMenu,
136 /// The LeftControl key.
137 LeftControl,
138 /// The RightControl key.
139 RightControl,
140 /// The Convert key.
141 Convert,
142 /// The Copy key.
143 Copy,
144 /// The Cut key.
145 Cut,
146 /// The Decimal key.
147 Decimal,
148 /// The Delete key.
149 Delete,
150 /// The Divide key.
151 Divide,
152 /// The Dollar ($) key.
153 Dollar,
154 /// The Down key.
155 Down,
156 /// The End key.
157 End,
158 /// The Enter key.
159 Enter,
160 /// The Equals (=) key.
161 Equals,
162 /// The Escape key.
163 Escape,
164 /// The EuroSign (€) key.
165 EuroSign,
166 /// The ExclamationMark (!) key.
167 ExclamationMark,
168 /// The F1 key.
169 F1,
170 /// The F2 key.
171 F2,
172 /// The F3 key.
173 F3,
174 /// The F4 key.
175 F4,
176 /// The F5 key.
177 F5,
178 /// The F6 key.
179 F6,
180 /// The F7 key.
181 F7,
182 /// The F8 key.
183 F8,
184 /// The F9 key.
185 F9,
186 /// The F10 key.
187 F10,
188 /// The F11 key.
189 F11,
190 /// The F12 key.
191 F12,
192 /// The F13 key.
193 F13,
194 /// The F14 key.
195 F14,
196 /// The F15 key.
197 F15,
198 /// The F16 key.
199 F16,
200 /// The F17 key.
201 F17,
202 /// The F18 key.
203 F18,
204 /// The F19 key.
205 F19,
206 /// The F20 key.
207 F20,
208 /// The F21 key.
209 F21,
210 /// The F22 key.
211 F22,
212 /// The F23 key.
213 F23,
214 /// The F24 key.
215 F24,
216 /// The Final key.
217 Final,
218 /// The Find key.
219 Find,
220 /// The FullWidth key.
221 FullWidth,
222 /// The Greater (>) key.
223 Greater,
224 /// The HalfWidth key.
225 HalfWidth,
226 /// The Help key.
227 Help,
228 /// The Hiragana key.
229 Hiragana,
230 /// The Home key.
231 Home,
232 /// The InputMethodOnOff key.
233 InputMethodOnOff,
234 /// The Insert key.
235 Insert,
236 /// The InvertedExclamationMark (¡) key.
237 InvertedExclamationMark,
238 /// The JapaneseHiragana key.
239 JapaneseHiragana,
240 /// The JapaneseKatakana key.
241 JapaneseKatakana,
242 /// The JapaneseRoman key.
243 JapaneseRoman,
244 /// The Kana key.
245 Kana,
246 /// The KanaLock key.
247 KanaLock,
248 /// The KpLeft key.
249 KpLeft,
250 /// The KpDown key.
251 KpDown,
252 /// The KpRight key.
253 KpRight,
254 /// The KpUp key.
255 KpUp,
256 /// The Left key.
257 Left,
258 /// The ParenthesisLeft (() key.
259 ParenthesisLeft,
260 /// The ParenthesisRight ()) key.
261 ParenthesisRight,
262 /// The Less (<) key.
263 Less,
264 /// The Meta key.
265 Meta,
266 /// The Minus (-) key.
267 Minus,
268 /// The ModeChange key.
269 ModeChange,
270 /// The Multiply key.
271 Multiply,
272 /// The DontConvert key.
273 DontConvert,
274 /// The NumLock key.
275 NumLock,
276 /// The NumberSign (#) key.
277 NumberSign,
278 /// The NumpadZero (0) key.
279 NumpadZero,
280 /// The NumpadOne (1) key.
281 NumpadOne,
282 /// The NumpadTwo (2) key.
283 NumpadTwo,
284 /// The NumpadThree (3) key.
285 NumpadThree,
286 /// The NumpadFour (4) key.
287 NumpadFour,
288 /// The NumpadFive (5) key.
289 NumpadFive,
290 /// The NumpadSix (6) key.
291 NumpadSix,
292 /// The NumpadSeven (7) key.
293 NumpadSeven,
294 /// The NumpadEight (8) key.
295 NumpadEight,
296 /// The NumpadNine (9) key.
297 NumpadNine,
298 /// The PageDown key.
299 PageDown,
300 /// The PageUp key.
301 PageUp,
302 /// The Paste key.
303 Paste,
304 /// The Pause key.
305 Pause,
306 /// The Period (.) key.
307 Period,
308 /// The Plus (+) key.
309 Plus,
310 /// The PreviousCandidate key.
311 PreviousCandidate,
312 /// The Props key.
313 Props,
314 /// The Quote (') key.
315 Quote,
316 /// The DoubleQuote (") key.
317 DoubleQuote,
318 /// The Right key.
319 Right,
320 /// The RomanCharacters key.
321 RomanCharacters,
322 /// The ScrollLock key.
323 ScrollLock,
324 /// The Separator key.
325 Separator,
326 /// The LeftShift key.
327 LeftShift,
328 /// The RightShift key.
329 RightShift,
330 /// The ShiftLock key.
331 ShiftLock,
332 /// The LeftMeta key.
333 LeftMeta,
334 /// The RightMeta key.
335 RightMeta,
336 /// The LeftAlt key.
337 LeftAlt,
338 /// The RightAlt key.
339 RightAlt,
340 /// The LeftSuper key.
341 LeftSuper,
342 /// The RightSuper key.
343 RightSuper,
344 /// The LeftHyper key.
345 LeftHyper,
346 /// The RightHyper key.
347 RightHyper,
348 /// The Slash (/) key.
349 Slash,
350 /// The Space ( ) key.
351 Space,
352 /// The Stop key.
353 Stop,
354 /// The Subtract key.
355 Subtract,
356 /// The Tab key.
357 Tab,
358 /// The Underscore (_) key.
359 Underscore,
360 /// The Undo key.
361 Undo,
362 /// The Up key.
363 Up,
364 /// The Windows key.
365 Windows,
366 /// The Percent (%) key.
367 Percent,
368 /// The Question (?) key.
369 Question,
370 /// The At (@) key.
371 At,
372 /// The Tilde (~) key.
373 Tilde,
374 /// The Semicolon (;) key.
375 Semicolon,
376 /// The Backquote (`) key.
377 Backquote,
378 /// The Bar (|) key.
379 Bar,
380 /// The Backspace key.
381 Backspace,
382}
383
384impl Default for Key {
385 #[inline]
386 fn default() -> Self {
387 Self::Unknown
388 }
389}
390
391impl Key {
392 #[inline]
393 pub fn as_char(self) -> Option<char> {
394 match self {
395 Key::Zero => Some('\u{30}'),
396 Key::One => Some('\u{31}'),
397 Key::Two => Some('\u{32}'),
398 Key::Three => Some('\u{33}'),
399 Key::Four => Some('\u{34}'),
400 Key::Five => Some('\u{35}'),
401 Key::Six => Some('\u{36}'),
402 Key::Seven => Some('\u{37}'),
403 Key::Eight => Some('\u{38}'),
404 Key::Nine => Some('\u{39}'),
405 Key::A => Some('\u{41}'),
406 Key::B => Some('\u{42}'),
407 Key::C => Some('\u{43}'),
408 Key::D => Some('\u{44}'),
409 Key::E => Some('\u{45}'),
410 Key::F => Some('\u{46}'),
411 Key::G => Some('\u{47}'),
412 Key::H => Some('\u{48}'),
413 Key::I => Some('\u{49}'),
414 Key::J => Some('\u{4a}'),
415 Key::K => Some('\u{4b}'),
416 Key::L => Some('\u{4c}'),
417 Key::M => Some('\u{4d}'),
418 Key::N => Some('\u{4e}'),
419 Key::O => Some('\u{4f}'),
420 Key::P => Some('\u{50}'),
421 Key::Q => Some('\u{51}'),
422 Key::R => Some('\u{52}'),
423 Key::S => Some('\u{53}'),
424 Key::T => Some('\u{54}'),
425 Key::U => Some('\u{55}'),
426 Key::V => Some('\u{56}'),
427 Key::W => Some('\u{57}'),
428 Key::X => Some('\u{58}'),
429 Key::Y => Some('\u{59}'),
430 Key::Z => Some('\u{5a}'),
431 Key::Ampersand => Some('\u{26}'),
432 Key::Asterisk => Some('\u{2a}'),
433 Key::BackSlash => Some('\u{5c}'),
434 Key::BraceLeft => Some('\u{7b}'),
435 Key::BraceRight => Some('\u{7d}'),
436 Key::Circumflex => Some('\u{5e}'),
437 Key::BracketLeft => Some('\u{5b}'),
438 Key::BracketRight => Some('\u{5d}'),
439 Key::Colon => Some('\u{3a}'),
440 Key::Comma => Some('\u{2c}'),
441 Key::Dollar => Some('\u{24}'),
442 Key::Equals => Some('\u{3d}'),
443 Key::EuroSign => Some('\u{20ac}'),
444 Key::ExclamationMark => Some('\u{21}'),
445 Key::Greater => Some('\u{3e}'),
446 Key::InvertedExclamationMark => Some('\u{a1}'),
447 Key::ParenthesisLeft => Some('\u{28}'),
448 Key::ParenthesisRight => Some('\u{29}'),
449 Key::Less => Some('\u{3c}'),
450 Key::Minus => Some('\u{2d}'),
451 Key::NumberSign => Some('\u{23}'),
452 Key::NumpadZero => Some('\u{30}'),
453 Key::NumpadOne => Some('\u{31}'),
454 Key::NumpadTwo => Some('\u{32}'),
455 Key::NumpadThree => Some('\u{33}'),
456 Key::NumpadFour => Some('\u{34}'),
457 Key::NumpadFive => Some('\u{35}'),
458 Key::NumpadSix => Some('\u{36}'),
459 Key::NumpadSeven => Some('\u{37}'),
460 Key::NumpadEight => Some('\u{38}'),
461 Key::NumpadNine => Some('\u{39}'),
462 Key::Period => Some('\u{2e}'),
463 Key::Plus => Some('\u{2b}'),
464 Key::Quote => Some('\u{27}'),
465 Key::DoubleQuote => Some('\u{22}'),
466 Key::Slash => Some('\u{2f}'),
467 Key::Space => Some('\u{20}'),
468 Key::Underscore => Some('\u{5f}'),
469 Key::Percent => Some('\u{25}'),
470 Key::Question => Some('\u{3f}'),
471 Key::At => Some('\u{40}'),
472 Key::Tilde => Some('\u{7e}'),
473 Key::Semicolon => Some('\u{3b}'),
474 Key::Backquote => Some('\u{60}'),
475 Key::Bar => Some('\u{7c}'),
476 _ => None,
477 }
478 }
479}