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}