1#[derive(Clone, Copy)]
2pub struct Color {
3 r: f64,
4 g: f64,
5 b: f64,
6 a: f64,
7}
8
9impl Color {
10 pub fn new(r: f64, g: f64, b: f64, a: f64) -> Self {
12 Self { r, g, b, a }
13 }
14
15 pub fn from_hex(hex: u32) -> Self {
17 let r = ((hex >> 16) & 0xFF) as f64 / 255.0;
18 let g = ((hex >> 8) & 0xFF) as f64 / 255.0;
19 let b = (hex & 0xFF) as f64 / 255.0;
20 Self { r, g, b, a: 1.0 }
21 }
22
23 pub fn as_wgpu_color(&self) -> wgpu::Color {
24 wgpu::Color {
25 r: self.r,
26 g: self.g,
27 b: self.b,
28 a: self.a,
29 }
30 }
31}
32
33#[non_exhaustive]
34#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
35pub enum KeyCode {
36 Backquote,
40 Backslash,
45 BracketLeft,
47 BracketRight,
49 Comma,
51 Digit0,
53 Digit1,
55 Digit2,
57 Digit3,
59 Digit4,
61 Digit5,
63 Digit6,
65 Digit7,
67 Digit8,
69 Digit9,
71 Equal,
73 IntlBackslash,
76 IntlRo,
79 IntlYen,
83 KeyA,
86 KeyB,
88 KeyC,
90 KeyD,
92 KeyE,
94 KeyF,
96 KeyG,
98 KeyH,
100 KeyI,
102 KeyJ,
104 KeyK,
106 KeyL,
108 KeyM,
110 KeyN,
112 KeyO,
114 KeyP,
116 KeyQ,
119 KeyR,
121 KeyS,
123 KeyT,
125 KeyU,
127 KeyV,
129 KeyW,
132 KeyX,
134 KeyY,
137 KeyZ,
141 Minus,
143 Period,
145 Quote,
147 Semicolon,
149 Slash,
151 AltLeft,
153 AltRight,
156 Backspace,
159 CapsLock,
161 ContextMenu,
164 ControlLeft,
166 ControlRight,
168 Enter,
170 SuperLeft,
172 SuperRight,
174 ShiftLeft,
176 ShiftRight,
178 Space,
180 Tab,
182 Convert,
184 KanaMode,
187 Lang1,
191 Lang2,
195 Lang3,
197 Lang4,
199 Lang5,
201 NonConvert,
203 Delete,
209 End,
211 Help,
213 Home,
215 Insert,
217 PageDown,
219 PageUp,
221 ArrowDown,
223 ArrowLeft,
225 ArrowRight,
227 ArrowUp,
229 NumLock,
231 Numpad0,
233 Numpad1,
236 Numpad2,
238 Numpad3,
240 Numpad4,
242 Numpad5,
244 Numpad6,
246 Numpad7,
249 Numpad8,
251 Numpad9,
254 NumpadAdd,
256 NumpadBackspace,
258 NumpadClear,
264 NumpadClearEntry,
266 NumpadComma,
269 NumpadDecimal,
272 NumpadDivide,
274 NumpadEnter,
275 NumpadEqual,
277 NumpadHash,
280 NumpadMemoryAdd,
282 NumpadMemoryClear,
284 NumpadMemoryRecall,
286 NumpadMemoryStore,
288 NumpadMemorySubtract,
290 NumpadMultiply,
295 NumpadParenLeft,
297 NumpadParenRight,
299 NumpadStar,
307 NumpadSubtract,
309 Escape,
311 Fn,
313 FnLock,
316 PrintScreen,
318 ScrollLock,
320 Pause,
322 BrowserBack,
326 BrowserFavorites,
327 BrowserForward,
329 BrowserHome,
331 BrowserRefresh,
332 BrowserSearch,
333 BrowserStop,
334 Eject,
337 LaunchApp1,
339 LaunchApp2,
341 LaunchMail,
342 MediaPlayPause,
343 MediaSelect,
344 MediaStop,
345 MediaTrackNext,
346 MediaTrackPrevious,
347 Power,
350 Sleep,
351 AudioVolumeDown,
352 AudioVolumeMute,
353 AudioVolumeUp,
354 WakeUp,
355 Meta,
357 Hyper,
359 Turbo,
360 Abort,
361 Resume,
362 Suspend,
363 Again,
365 Copy,
367 Cut,
369 Find,
371 Open,
373 Paste,
375 Props,
377 Select,
379 Undo,
381 Hiragana,
383 Katakana,
385 F1,
388 F2,
391 F3,
394 F4,
397 F5,
400 F6,
403 F7,
406 F8,
409 F9,
412 F10,
415 F11,
418 F12,
421 F13,
424 F14,
427 F15,
430 F16,
433 F17,
436 F18,
439 F19,
442 F20,
445 F21,
448 F22,
451 F23,
454 F24,
457 F25,
459 F26,
461 F27,
463 F28,
465 F29,
467 F30,
469 F31,
471 F32,
473 F33,
475 F34,
477 F35,
479}
480
481impl KeyCode {
482 pub fn from_winit_keycode(keycode: winit::keyboard::KeyCode) -> Option<Self> {
483 match keycode {
484 winit::keyboard::KeyCode::Backquote => Some(Self::Backquote),
485 winit::keyboard::KeyCode::Backslash => Some(Self::Backslash),
486 winit::keyboard::KeyCode::BracketLeft => Some(Self::BracketLeft),
487 winit::keyboard::KeyCode::BracketRight => Some(Self::BracketRight),
488 winit::keyboard::KeyCode::Comma => Some(Self::Comma),
489 winit::keyboard::KeyCode::Digit0 => Some(Self::Digit0),
490 winit::keyboard::KeyCode::Digit1 => Some(Self::Digit1),
491 winit::keyboard::KeyCode::Digit2 => Some(Self::Digit2),
492 winit::keyboard::KeyCode::Digit3 => Some(Self::Digit3),
493 winit::keyboard::KeyCode::Digit4 => Some(Self::Digit4),
494 winit::keyboard::KeyCode::Digit5 => Some(Self::Digit5),
495 winit::keyboard::KeyCode::Digit6 => Some(Self::Digit6),
496 winit::keyboard::KeyCode::Digit7 => Some(Self::Digit7),
497 winit::keyboard::KeyCode::Digit8 => Some(Self::Digit8),
498 winit::keyboard::KeyCode::Digit9 => Some(Self::Digit9),
499 winit::keyboard::KeyCode::Equal => Some(Self::Equal),
500 winit::keyboard::KeyCode::IntlBackslash => Some(Self::IntlBackslash),
501 winit::keyboard::KeyCode::IntlRo => Some(Self::IntlRo),
502 winit::keyboard::KeyCode::IntlYen => Some(Self::IntlYen),
503 winit::keyboard::KeyCode::KeyA => Some(Self::KeyA),
504 winit::keyboard::KeyCode::KeyB => Some(Self::KeyB),
505 winit::keyboard::KeyCode::KeyC => Some(Self::KeyC),
506 winit::keyboard::KeyCode::KeyD => Some(Self::KeyD),
507 winit::keyboard::KeyCode::KeyE => Some(Self::KeyE),
508 winit::keyboard::KeyCode::KeyF => Some(Self::KeyF),
509 winit::keyboard::KeyCode::KeyG => Some(Self::KeyG),
510 winit::keyboard::KeyCode::KeyH => Some(Self::KeyH),
511 winit::keyboard::KeyCode::KeyI => Some(Self::KeyI),
512 winit::keyboard::KeyCode::KeyJ => Some(Self::KeyJ),
513 winit::keyboard::KeyCode::KeyK => Some(Self::KeyK),
514 winit::keyboard::KeyCode::KeyL => Some(Self::KeyL),
515 winit::keyboard::KeyCode::KeyM => Some(Self::KeyM),
516 winit::keyboard::KeyCode::KeyN => Some(Self::KeyN),
517 winit::keyboard::KeyCode::KeyO => Some(Self::KeyO),
518 winit::keyboard::KeyCode::KeyP => Some(Self::KeyP),
519 winit::keyboard::KeyCode::KeyQ => Some(Self::KeyQ),
520 winit::keyboard::KeyCode::KeyR => Some(Self::KeyR),
521 winit::keyboard::KeyCode::KeyS => Some(Self::KeyS),
522 winit::keyboard::KeyCode::KeyT => Some(Self::KeyT),
523 winit::keyboard::KeyCode::KeyU => Some(Self::KeyU),
524 winit::keyboard::KeyCode::KeyV => Some(Self::KeyV),
525 winit::keyboard::KeyCode::KeyW => Some(Self::KeyW),
526 winit::keyboard::KeyCode::KeyX => Some(Self::KeyX),
527 winit::keyboard::KeyCode::KeyY => Some(Self::KeyY),
528 winit::keyboard::KeyCode::KeyZ => Some(Self::KeyZ),
529 winit::keyboard::KeyCode::Minus => Some(Self::Minus),
530 winit::keyboard::KeyCode::Period => Some(Self::Period),
531 winit::keyboard::KeyCode::Quote => Some(Self::Quote),
532 winit::keyboard::KeyCode::Semicolon => Some(Self::Semicolon),
533 winit::keyboard::KeyCode::Slash => Some(Self::Slash),
534 winit::keyboard::KeyCode::AltLeft => Some(Self::AltLeft),
535 winit::keyboard::KeyCode::AltRight => Some(Self::AltRight),
536 winit::keyboard::KeyCode::Backspace => Some(Self::Backspace),
537 winit::keyboard::KeyCode::CapsLock => Some(Self::CapsLock),
538 winit::keyboard::KeyCode::ContextMenu => Some(Self::ContextMenu),
539 winit::keyboard::KeyCode::ControlLeft => Some(Self::ControlLeft),
540 winit::keyboard::KeyCode::ControlRight => Some(Self::ControlRight),
541 winit::keyboard::KeyCode::Enter => Some(Self::Enter),
542 winit::keyboard::KeyCode::SuperLeft => Some(Self::SuperLeft),
543 winit::keyboard::KeyCode::SuperRight => Some(Self::SuperRight),
544 winit::keyboard::KeyCode::ShiftLeft => Some(Self::ShiftLeft),
545 winit::keyboard::KeyCode::ShiftRight => Some(Self::ShiftRight),
546 winit::keyboard::KeyCode::Space => Some(Self::Space),
547 winit::keyboard::KeyCode::Tab => Some(Self::Tab),
548 winit::keyboard::KeyCode::Convert => Some(Self::Convert),
549 winit::keyboard::KeyCode::KanaMode => Some(Self::KanaMode),
550 winit::keyboard::KeyCode::Lang1 => Some(Self::Lang1),
551 winit::keyboard::KeyCode::Lang2 => Some(Self::Lang2),
552 winit::keyboard::KeyCode::Lang3 => Some(Self::Lang3),
553 winit::keyboard::KeyCode::Lang4 => Some(Self::Lang4),
554 winit::keyboard::KeyCode::Lang5 => Some(Self::Lang5),
555 winit::keyboard::KeyCode::NonConvert => Some(Self::NonConvert),
556 winit::keyboard::KeyCode::Delete => Some(Self::Delete),
557 winit::keyboard::KeyCode::End => Some(Self::End),
558 winit::keyboard::KeyCode::Help => Some(Self::Help),
559 winit::keyboard::KeyCode::Home => Some(Self::Home),
560 winit::keyboard::KeyCode::Insert => Some(Self::Insert),
561 winit::keyboard::KeyCode::PageDown => Some(Self::PageDown),
562 winit::keyboard::KeyCode::PageUp => Some(Self::PageUp),
563 winit::keyboard::KeyCode::ArrowDown => Some(Self::ArrowDown),
564 winit::keyboard::KeyCode::ArrowLeft => Some(Self::ArrowLeft),
565 winit::keyboard::KeyCode::ArrowRight => Some(Self::ArrowRight),
566 winit::keyboard::KeyCode::ArrowUp => Some(Self::ArrowUp),
567 winit::keyboard::KeyCode::NumLock => Some(Self::NumLock),
568 winit::keyboard::KeyCode::Numpad0 => Some(Self::Numpad0),
569 winit::keyboard::KeyCode::Numpad1 => Some(Self::Numpad1),
570 winit::keyboard::KeyCode::Numpad2 => Some(Self::Numpad2),
571 winit::keyboard::KeyCode::Numpad3 => Some(Self::Numpad3),
572 winit::keyboard::KeyCode::Numpad4 => Some(Self::Numpad4),
573 winit::keyboard::KeyCode::Numpad5 => Some(Self::Numpad5),
574 winit::keyboard::KeyCode::Numpad6 => Some(Self::Numpad6),
575 winit::keyboard::KeyCode::Numpad7 => Some(Self::Numpad7),
576 winit::keyboard::KeyCode::Numpad8 => Some(Self::Numpad8),
577 winit::keyboard::KeyCode::Numpad9 => Some(Self::Numpad9),
578 winit::keyboard::KeyCode::NumpadAdd => Some(Self::NumpadAdd),
579 winit::keyboard::KeyCode::NumpadBackspace => Some(Self::NumpadBackspace),
580 winit::keyboard::KeyCode::NumpadClear => Some(Self::NumpadClear),
581 winit::keyboard::KeyCode::NumpadClearEntry => Some(Self::NumpadClearEntry),
582 winit::keyboard::KeyCode::NumpadComma => Some(Self::NumpadComma),
583 winit::keyboard::KeyCode::NumpadDecimal => Some(Self::NumpadDecimal),
584 winit::keyboard::KeyCode::NumpadDivide => Some(Self::NumpadDivide),
585 winit::keyboard::KeyCode::NumpadEnter => Some(Self::NumpadEnter),
586 winit::keyboard::KeyCode::NumpadEqual => Some(Self::NumpadEqual),
587 winit::keyboard::KeyCode::NumpadHash => Some(Self::NumpadHash),
588 winit::keyboard::KeyCode::NumpadMemoryAdd => Some(Self::NumpadMemoryAdd),
589 winit::keyboard::KeyCode::NumpadMemoryClear => Some(Self::NumpadMemoryClear),
590 winit::keyboard::KeyCode::NumpadMemoryRecall => Some(Self::NumpadMemoryRecall),
591 winit::keyboard::KeyCode::NumpadMemoryStore => Some(Self::NumpadMemoryStore),
592 winit::keyboard::KeyCode::NumpadMemorySubtract => Some(Self::NumpadMemorySubtract),
593 winit::keyboard::KeyCode::NumpadMultiply => Some(Self::NumpadMultiply),
594 winit::keyboard::KeyCode::NumpadParenLeft => Some(Self::NumpadParenLeft),
595 winit::keyboard::KeyCode::NumpadParenRight => Some(Self::NumpadParenRight),
596 winit::keyboard::KeyCode::NumpadStar => Some(Self::NumpadStar),
597 winit::keyboard::KeyCode::NumpadSubtract => Some(Self::NumpadSubtract),
598 winit::keyboard::KeyCode::Escape => Some(Self::Escape),
599 winit::keyboard::KeyCode::Fn => Some(Self::Fn),
600 winit::keyboard::KeyCode::FnLock => Some(Self::FnLock),
601 winit::keyboard::KeyCode::PrintScreen => Some(Self::PrintScreen),
602 winit::keyboard::KeyCode::ScrollLock => Some(Self::ScrollLock),
603 winit::keyboard::KeyCode::Pause => Some(Self::Pause),
604 winit::keyboard::KeyCode::BrowserBack => Some(Self::BrowserBack),
605 winit::keyboard::KeyCode::BrowserFavorites => Some(Self::BrowserFavorites),
606 winit::keyboard::KeyCode::BrowserForward => Some(Self::BrowserForward),
607 winit::keyboard::KeyCode::BrowserHome => Some(Self::BrowserHome),
608 winit::keyboard::KeyCode::BrowserRefresh => Some(Self::BrowserRefresh),
609 winit::keyboard::KeyCode::BrowserSearch => Some(Self::BrowserSearch),
610 winit::keyboard::KeyCode::BrowserStop => Some(Self::BrowserStop),
611 winit::keyboard::KeyCode::Eject => Some(Self::Eject),
612 winit::keyboard::KeyCode::LaunchApp1 => Some(Self::LaunchApp1),
613 winit::keyboard::KeyCode::LaunchApp2 => Some(Self::LaunchApp2),
614 winit::keyboard::KeyCode::LaunchMail => Some(Self::LaunchMail),
615 winit::keyboard::KeyCode::MediaPlayPause => Some(Self::MediaPlayPause),
616 winit::keyboard::KeyCode::MediaSelect => Some(Self::MediaSelect),
617 winit::keyboard::KeyCode::MediaStop => Some(Self::MediaStop),
618 winit::keyboard::KeyCode::MediaTrackNext => Some(Self::MediaTrackNext),
619 winit::keyboard::KeyCode::MediaTrackPrevious => Some(Self::MediaTrackPrevious),
620 winit::keyboard::KeyCode::Power => Some(Self::Power),
621 winit::keyboard::KeyCode::Sleep => Some(Self::Sleep),
622 winit::keyboard::KeyCode::AudioVolumeDown => Some(Self::AudioVolumeDown),
623 winit::keyboard::KeyCode::AudioVolumeMute => Some(Self::AudioVolumeMute),
624 winit::keyboard::KeyCode::AudioVolumeUp => Some(Self::AudioVolumeUp),
625 winit::keyboard::KeyCode::WakeUp => Some(Self::WakeUp),
626 winit::keyboard::KeyCode::Meta => Some(Self::Meta),
627 winit::keyboard::KeyCode::Hyper => Some(Self::Hyper),
628 winit::keyboard::KeyCode::Turbo => Some(Self::Turbo),
629 winit::keyboard::KeyCode::Abort => Some(Self::Abort),
630 winit::keyboard::KeyCode::Resume => Some(Self::Resume),
631 winit::keyboard::KeyCode::Suspend => Some(Self::Suspend),
632 winit::keyboard::KeyCode::Again => Some(Self::Again),
633 winit::keyboard::KeyCode::Copy => Some(Self::Copy),
634 winit::keyboard::KeyCode::Cut => Some(Self::Cut),
635 winit::keyboard::KeyCode::Find => Some(Self::Find),
636 winit::keyboard::KeyCode::Open => Some(Self::Open),
637 winit::keyboard::KeyCode::Paste => Some(Self::Paste),
638 winit::keyboard::KeyCode::Props => Some(Self::Props),
639 winit::keyboard::KeyCode::Select => Some(Self::Select),
640 winit::keyboard::KeyCode::Undo => Some(Self::Undo),
641 winit::keyboard::KeyCode::Hiragana => Some(Self::Hiragana),
642 winit::keyboard::KeyCode::Katakana => Some(Self::Katakana),
643 winit::keyboard::KeyCode::F1 => Some(Self::F1),
644 winit::keyboard::KeyCode::F2 => Some(Self::F2),
645 winit::keyboard::KeyCode::F3 => Some(Self::F3),
646 winit::keyboard::KeyCode::F4 => Some(Self::F4),
647 winit::keyboard::KeyCode::F5 => Some(Self::F5),
648 winit::keyboard::KeyCode::F6 => Some(Self::F6),
649 winit::keyboard::KeyCode::F7 => Some(Self::F7),
650 winit::keyboard::KeyCode::F8 => Some(Self::F8),
651 winit::keyboard::KeyCode::F9 => Some(Self::F9),
652 winit::keyboard::KeyCode::F10 => Some(Self::F10),
653 winit::keyboard::KeyCode::F11 => Some(Self::F11),
654 winit::keyboard::KeyCode::F12 => Some(Self::F12),
655 winit::keyboard::KeyCode::F13 => Some(Self::F13),
656 winit::keyboard::KeyCode::F14 => Some(Self::F14),
657 winit::keyboard::KeyCode::F15 => Some(Self::F15),
658 winit::keyboard::KeyCode::F16 => Some(Self::F16),
659 winit::keyboard::KeyCode::F17 => Some(Self::F17),
660 winit::keyboard::KeyCode::F18 => Some(Self::F18),
661 winit::keyboard::KeyCode::F19 => Some(Self::F19),
662 winit::keyboard::KeyCode::F20 => Some(Self::F20),
663 winit::keyboard::KeyCode::F21 => Some(Self::F21),
664 winit::keyboard::KeyCode::F22 => Some(Self::F22),
665 winit::keyboard::KeyCode::F23 => Some(Self::F23),
666 winit::keyboard::KeyCode::F24 => Some(Self::F24),
667 winit::keyboard::KeyCode::F25 => Some(Self::F25),
668 winit::keyboard::KeyCode::F26 => Some(Self::F26),
669 winit::keyboard::KeyCode::F27 => Some(Self::F27),
670 winit::keyboard::KeyCode::F28 => Some(Self::F28),
671 winit::keyboard::KeyCode::F29 => Some(Self::F29),
672 winit::keyboard::KeyCode::F30 => Some(Self::F30),
673 winit::keyboard::KeyCode::F31 => Some(Self::F31),
674 winit::keyboard::KeyCode::F32 => Some(Self::F32),
675 winit::keyboard::KeyCode::F33 => Some(Self::F33),
676 winit::keyboard::KeyCode::F34 => Some(Self::F34),
677 winit::keyboard::KeyCode::F35 => Some(Self::F35),
678 _ => None,
679 }
680 }
681
682 pub fn as_winit_keycode(&self) -> Option<winit::keyboard::KeyCode> {
683 match self {
684 KeyCode::Backquote => Some(winit::keyboard::KeyCode::Backquote),
685 KeyCode::Backslash => Some(winit::keyboard::KeyCode::Backslash),
686 KeyCode::BracketLeft => Some(winit::keyboard::KeyCode::BracketLeft),
687 KeyCode::BracketRight => Some(winit::keyboard::KeyCode::BracketRight),
688 KeyCode::Comma => Some(winit::keyboard::KeyCode::Comma),
689 KeyCode::Digit0 => Some(winit::keyboard::KeyCode::Digit0),
690 KeyCode::Digit1 => Some(winit::keyboard::KeyCode::Digit1),
691 KeyCode::Digit2 => Some(winit::keyboard::KeyCode::Digit2),
692 KeyCode::Digit3 => Some(winit::keyboard::KeyCode::Digit3),
693 KeyCode::Digit4 => Some(winit::keyboard::KeyCode::Digit4),
694 KeyCode::Digit5 => Some(winit::keyboard::KeyCode::Digit5),
695 KeyCode::Digit6 => Some(winit::keyboard::KeyCode::Digit6),
696 KeyCode::Digit7 => Some(winit::keyboard::KeyCode::Digit7),
697 KeyCode::Digit8 => Some(winit::keyboard::KeyCode::Digit8),
698 KeyCode::Digit9 => Some(winit::keyboard::KeyCode::Digit9),
699 KeyCode::Equal => Some(winit::keyboard::KeyCode::Equal),
700 KeyCode::IntlBackslash => Some(winit::keyboard::KeyCode::IntlBackslash),
701 KeyCode::IntlRo => Some(winit::keyboard::KeyCode::IntlRo),
702 KeyCode::IntlYen => Some(winit::keyboard::KeyCode::IntlYen),
703 KeyCode::KeyA => Some(winit::keyboard::KeyCode::KeyA),
704 KeyCode::KeyB => Some(winit::keyboard::KeyCode::KeyB),
705 KeyCode::KeyC => Some(winit::keyboard::KeyCode::KeyC),
706 KeyCode::KeyD => Some(winit::keyboard::KeyCode::KeyD),
707 KeyCode::KeyE => Some(winit::keyboard::KeyCode::KeyE),
708 KeyCode::KeyF => Some(winit::keyboard::KeyCode::KeyF),
709 KeyCode::KeyG => Some(winit::keyboard::KeyCode::KeyG),
710 KeyCode::KeyH => Some(winit::keyboard::KeyCode::KeyH),
711 KeyCode::KeyI => Some(winit::keyboard::KeyCode::KeyI),
712 KeyCode::KeyJ => Some(winit::keyboard::KeyCode::KeyJ),
713 KeyCode::KeyK => Some(winit::keyboard::KeyCode::KeyK),
714 KeyCode::KeyL => Some(winit::keyboard::KeyCode::KeyL),
715 KeyCode::KeyM => Some(winit::keyboard::KeyCode::KeyM),
716 KeyCode::KeyN => Some(winit::keyboard::KeyCode::KeyN),
717 KeyCode::KeyO => Some(winit::keyboard::KeyCode::KeyO),
718 KeyCode::KeyP => Some(winit::keyboard::KeyCode::KeyP),
719 KeyCode::KeyQ => Some(winit::keyboard::KeyCode::KeyQ),
720 KeyCode::KeyR => Some(winit::keyboard::KeyCode::KeyR),
721 KeyCode::KeyS => Some(winit::keyboard::KeyCode::KeyS),
722 KeyCode::KeyT => Some(winit::keyboard::KeyCode::KeyT),
723 KeyCode::KeyU => Some(winit::keyboard::KeyCode::KeyU),
724 KeyCode::KeyV => Some(winit::keyboard::KeyCode::KeyV),
725 KeyCode::KeyW => Some(winit::keyboard::KeyCode::KeyW),
726 KeyCode::KeyX => Some(winit::keyboard::KeyCode::KeyX),
727 KeyCode::KeyY => Some(winit::keyboard::KeyCode::KeyY),
728 KeyCode::KeyZ => Some(winit::keyboard::KeyCode::KeyZ),
729 KeyCode::Minus => Some(winit::keyboard::KeyCode::Minus),
730 KeyCode::Period => Some(winit::keyboard::KeyCode::Period),
731 KeyCode::Quote => Some(winit::keyboard::KeyCode::Quote),
732 KeyCode::Semicolon => Some(winit::keyboard::KeyCode::Semicolon),
733 KeyCode::Slash => Some(winit::keyboard::KeyCode::Slash),
734 KeyCode::AltLeft => Some(winit::keyboard::KeyCode::AltLeft),
735 KeyCode::AltRight => Some(winit::keyboard::KeyCode::AltRight),
736 KeyCode::Backspace => Some(winit::keyboard::KeyCode::Backspace),
737 KeyCode::CapsLock => Some(winit::keyboard::KeyCode::CapsLock),
738 KeyCode::ContextMenu => Some(winit::keyboard::KeyCode::ContextMenu),
739 KeyCode::ControlLeft => Some(winit::keyboard::KeyCode::ControlLeft),
740 KeyCode::ControlRight => Some(winit::keyboard::KeyCode::ControlRight),
741 KeyCode::Enter => Some(winit::keyboard::KeyCode::Enter),
742 KeyCode::SuperLeft => Some(winit::keyboard::KeyCode::SuperLeft),
743 KeyCode::SuperRight => Some(winit::keyboard::KeyCode::SuperRight),
744 KeyCode::ShiftLeft => Some(winit::keyboard::KeyCode::ShiftLeft),
745 KeyCode::ShiftRight => Some(winit::keyboard::KeyCode::ShiftRight),
746 KeyCode::Space => Some(winit::keyboard::KeyCode::Space),
747 KeyCode::Tab => Some(winit::keyboard::KeyCode::Tab),
748 KeyCode::Convert => Some(winit::keyboard::KeyCode::Convert),
749 KeyCode::KanaMode => Some(winit::keyboard::KeyCode::KanaMode),
750 KeyCode::Lang1 => Some(winit::keyboard::KeyCode::Lang1),
751 KeyCode::Lang2 => Some(winit::keyboard::KeyCode::Lang2),
752 KeyCode::Lang3 => Some(winit::keyboard::KeyCode::Lang3),
753 KeyCode::Lang4 => Some(winit::keyboard::KeyCode::Lang4),
754 KeyCode::Lang5 => Some(winit::keyboard::KeyCode::Lang5),
755 KeyCode::NonConvert => Some(winit::keyboard::KeyCode::NonConvert),
756 KeyCode::Delete => Some(winit::keyboard::KeyCode::Delete),
757 KeyCode::End => Some(winit::keyboard::KeyCode::End),
758 KeyCode::Help => Some(winit::keyboard::KeyCode::Help),
759 KeyCode::Home => Some(winit::keyboard::KeyCode::Home),
760 KeyCode::Insert => Some(winit::keyboard::KeyCode::Insert),
761 KeyCode::PageDown => Some(winit::keyboard::KeyCode::PageDown),
762 KeyCode::PageUp => Some(winit::keyboard::KeyCode::PageUp),
763 KeyCode::ArrowDown => Some(winit::keyboard::KeyCode::ArrowDown),
764 KeyCode::ArrowLeft => Some(winit::keyboard::KeyCode::ArrowLeft),
765 KeyCode::ArrowRight => Some(winit::keyboard::KeyCode::ArrowRight),
766 KeyCode::ArrowUp => Some(winit::keyboard::KeyCode::ArrowUp),
767 KeyCode::NumLock => Some(winit::keyboard::KeyCode::NumLock),
768 KeyCode::Numpad0 => Some(winit::keyboard::KeyCode::Numpad0),
769 KeyCode::Numpad1 => Some(winit::keyboard::KeyCode::Numpad1),
770 KeyCode::Numpad2 => Some(winit::keyboard::KeyCode::Numpad2),
771 KeyCode::Numpad3 => Some(winit::keyboard::KeyCode::Numpad3),
772 KeyCode::Numpad4 => Some(winit::keyboard::KeyCode::Numpad4),
773 KeyCode::Numpad5 => Some(winit::keyboard::KeyCode::Numpad5),
774 KeyCode::Numpad6 => Some(winit::keyboard::KeyCode::Numpad6),
775 KeyCode::Numpad7 => Some(winit::keyboard::KeyCode::Numpad7),
776 KeyCode::Numpad8 => Some(winit::keyboard::KeyCode::Numpad8),
777 KeyCode::Numpad9 => Some(winit::keyboard::KeyCode::Numpad9),
778 KeyCode::NumpadAdd => Some(winit::keyboard::KeyCode::NumpadAdd),
779 KeyCode::NumpadBackspace => Some(winit::keyboard::KeyCode::NumpadBackspace),
780 KeyCode::NumpadClear => Some(winit::keyboard::KeyCode::NumpadClear),
781 KeyCode::NumpadClearEntry => Some(winit::keyboard::KeyCode::NumpadClearEntry),
782 KeyCode::NumpadComma => Some(winit::keyboard::KeyCode::NumpadComma),
783 KeyCode::NumpadDecimal => Some(winit::keyboard::KeyCode::NumpadDecimal),
784 KeyCode::NumpadDivide => Some(winit::keyboard::KeyCode::NumpadDivide),
785 KeyCode::NumpadEnter => Some(winit::keyboard::KeyCode::NumpadEnter),
786 KeyCode::NumpadEqual => Some(winit::keyboard::KeyCode::NumpadEqual),
787 KeyCode::NumpadHash => Some(winit::keyboard::KeyCode::NumpadHash),
788 KeyCode::NumpadMemoryAdd => Some(winit::keyboard::KeyCode::NumpadMemoryAdd),
789 KeyCode::NumpadMemoryClear => Some(winit::keyboard::KeyCode::NumpadMemoryClear),
790 KeyCode::NumpadMemoryRecall => Some(winit::keyboard::KeyCode::NumpadMemoryRecall),
791 KeyCode::NumpadMemoryStore => Some(winit::keyboard::KeyCode::NumpadMemoryStore),
792 KeyCode::NumpadMemorySubtract => Some(winit::keyboard::KeyCode::NumpadMemorySubtract),
793 KeyCode::NumpadMultiply => Some(winit::keyboard::KeyCode::NumpadMultiply),
794 KeyCode::NumpadParenLeft => Some(winit::keyboard::KeyCode::NumpadParenLeft),
795 KeyCode::NumpadParenRight => Some(winit::keyboard::KeyCode::NumpadParenRight),
796 KeyCode::NumpadStar => Some(winit::keyboard::KeyCode::NumpadStar),
797 KeyCode::NumpadSubtract => Some(winit::keyboard::KeyCode::NumpadSubtract),
798 KeyCode::Escape => Some(winit::keyboard::KeyCode::Escape),
799 KeyCode::Fn => Some(winit::keyboard::KeyCode::Fn),
800 KeyCode::FnLock => Some(winit::keyboard::KeyCode::FnLock),
801 KeyCode::PrintScreen => Some(winit::keyboard::KeyCode::PrintScreen),
802 KeyCode::ScrollLock => Some(winit::keyboard::KeyCode::ScrollLock),
803 KeyCode::Pause => Some(winit::keyboard::KeyCode::Pause),
804 KeyCode::BrowserBack => Some(winit::keyboard::KeyCode::BrowserBack),
805 KeyCode::BrowserFavorites => Some(winit::keyboard::KeyCode::BrowserFavorites),
806 KeyCode::BrowserForward => Some(winit::keyboard::KeyCode::BrowserForward),
807 KeyCode::BrowserHome => Some(winit::keyboard::KeyCode::BrowserHome),
808 KeyCode::BrowserRefresh => Some(winit::keyboard::KeyCode::BrowserRefresh),
809 KeyCode::BrowserSearch => Some(winit::keyboard::KeyCode::BrowserSearch),
810 KeyCode::BrowserStop => Some(winit::keyboard::KeyCode::BrowserStop),
811 KeyCode::Eject => Some(winit::keyboard::KeyCode::Eject),
812 KeyCode::LaunchApp1 => Some(winit::keyboard::KeyCode::LaunchApp1),
813 KeyCode::LaunchApp2 => Some(winit::keyboard::KeyCode::LaunchApp2),
814 KeyCode::LaunchMail => Some(winit::keyboard::KeyCode::LaunchMail),
815 KeyCode::MediaPlayPause => Some(winit::keyboard::KeyCode::MediaPlayPause),
816 KeyCode::MediaSelect => Some(winit::keyboard::KeyCode::MediaSelect),
817 KeyCode::MediaStop => Some(winit::keyboard::KeyCode::MediaStop),
818 KeyCode::MediaTrackNext => Some(winit::keyboard::KeyCode::MediaTrackNext),
819 KeyCode::MediaTrackPrevious => Some(winit::keyboard::KeyCode::MediaTrackPrevious),
820 KeyCode::Power => Some(winit::keyboard::KeyCode::Power),
821 KeyCode::Sleep => Some(winit::keyboard::KeyCode::Sleep),
822 KeyCode::AudioVolumeDown => Some(winit::keyboard::KeyCode::AudioVolumeDown),
823 KeyCode::AudioVolumeMute => Some(winit::keyboard::KeyCode::AudioVolumeMute),
824 KeyCode::AudioVolumeUp => Some(winit::keyboard::KeyCode::AudioVolumeUp),
825 KeyCode::WakeUp => Some(winit::keyboard::KeyCode::WakeUp),
826 KeyCode::Meta => Some(winit::keyboard::KeyCode::Meta),
827 KeyCode::Hyper => Some(winit::keyboard::KeyCode::Hyper),
828 KeyCode::Turbo => Some(winit::keyboard::KeyCode::Turbo),
829 KeyCode::Abort => Some(winit::keyboard::KeyCode::Abort),
830 KeyCode::Resume => Some(winit::keyboard::KeyCode::Resume),
831 KeyCode::Suspend => Some(winit::keyboard::KeyCode::Suspend),
832 KeyCode::Again => Some(winit::keyboard::KeyCode::Again),
833 KeyCode::Copy => Some(winit::keyboard::KeyCode::Copy),
834 KeyCode::Cut => Some(winit::keyboard::KeyCode::Cut),
835 KeyCode::Find => Some(winit::keyboard::KeyCode::Find),
836 KeyCode::Open => Some(winit::keyboard::KeyCode::Open),
837 KeyCode::Paste => Some(winit::keyboard::KeyCode::Paste),
838 KeyCode::Props => Some(winit::keyboard::KeyCode::Props),
839 KeyCode::Select => Some(winit::keyboard::KeyCode::Select),
840 KeyCode::Undo => Some(winit::keyboard::KeyCode::Undo),
841 KeyCode::Hiragana => Some(winit::keyboard::KeyCode::Hiragana),
842 KeyCode::Katakana => Some(winit::keyboard::KeyCode::Katakana),
843 KeyCode::F1 => Some(winit::keyboard::KeyCode::F1),
844 KeyCode::F2 => Some(winit::keyboard::KeyCode::F2),
845 KeyCode::F3 => Some(winit::keyboard::KeyCode::F3),
846 KeyCode::F4 => Some(winit::keyboard::KeyCode::F4),
847 KeyCode::F5 => Some(winit::keyboard::KeyCode::F5),
848 KeyCode::F6 => Some(winit::keyboard::KeyCode::F6),
849 KeyCode::F7 => Some(winit::keyboard::KeyCode::F7),
850 KeyCode::F8 => Some(winit::keyboard::KeyCode::F8),
851 KeyCode::F9 => Some(winit::keyboard::KeyCode::F9),
852 KeyCode::F10 => Some(winit::keyboard::KeyCode::F10),
853 KeyCode::F11 => Some(winit::keyboard::KeyCode::F11),
854 KeyCode::F12 => Some(winit::keyboard::KeyCode::F12),
855 KeyCode::F13 => Some(winit::keyboard::KeyCode::F13),
856 KeyCode::F14 => Some(winit::keyboard::KeyCode::F14),
857 KeyCode::F15 => Some(winit::keyboard::KeyCode::F15),
858 KeyCode::F16 => Some(winit::keyboard::KeyCode::F16),
859 KeyCode::F17 => Some(winit::keyboard::KeyCode::F17),
860 KeyCode::F18 => Some(winit::keyboard::KeyCode::F18),
861 KeyCode::F19 => Some(winit::keyboard::KeyCode::F19),
862 KeyCode::F20 => Some(winit::keyboard::KeyCode::F20),
863 KeyCode::F21 => Some(winit::keyboard::KeyCode::F21),
864 KeyCode::F22 => Some(winit::keyboard::KeyCode::F22),
865 KeyCode::F23 => Some(winit::keyboard::KeyCode::F23),
866 KeyCode::F24 => Some(winit::keyboard::KeyCode::F24),
867 KeyCode::F25 => Some(winit::keyboard::KeyCode::F25),
868 KeyCode::F26 => Some(winit::keyboard::KeyCode::F26),
869 KeyCode::F27 => Some(winit::keyboard::KeyCode::F27),
870 KeyCode::F28 => Some(winit::keyboard::KeyCode::F28),
871 KeyCode::F29 => Some(winit::keyboard::KeyCode::F29),
872 KeyCode::F30 => Some(winit::keyboard::KeyCode::F30),
873 KeyCode::F31 => Some(winit::keyboard::KeyCode::F31),
874 KeyCode::F32 => Some(winit::keyboard::KeyCode::F32),
875 KeyCode::F33 => Some(winit::keyboard::KeyCode::F33),
876 KeyCode::F34 => Some(winit::keyboard::KeyCode::F34),
877 KeyCode::F35 => Some(winit::keyboard::KeyCode::F35),
878 }
879 }
880
881 pub fn from_name(name: &str) -> Option<Self> {
886 Some(match name {
887 "Backquote" => Self::Backquote,
888 "Backslash" => Self::Backslash,
889 "BracketLeft" => Self::BracketLeft,
890 "BracketRight" => Self::BracketRight,
891 "Comma" => Self::Comma,
892 "Digit0" => Self::Digit0,
893 "Digit1" => Self::Digit1,
894 "Digit2" => Self::Digit2,
895 "Digit3" => Self::Digit3,
896 "Digit4" => Self::Digit4,
897 "Digit5" => Self::Digit5,
898 "Digit6" => Self::Digit6,
899 "Digit7" => Self::Digit7,
900 "Digit8" => Self::Digit8,
901 "Digit9" => Self::Digit9,
902 "Equal" => Self::Equal,
903 "IntlBackslash" => Self::IntlBackslash,
904 "IntlRo" => Self::IntlRo,
905 "IntlYen" => Self::IntlYen,
906 "KeyA" => Self::KeyA,
907 "KeyB" => Self::KeyB,
908 "KeyC" => Self::KeyC,
909 "KeyD" => Self::KeyD,
910 "KeyE" => Self::KeyE,
911 "KeyF" => Self::KeyF,
912 "KeyG" => Self::KeyG,
913 "KeyH" => Self::KeyH,
914 "KeyI" => Self::KeyI,
915 "KeyJ" => Self::KeyJ,
916 "KeyK" => Self::KeyK,
917 "KeyL" => Self::KeyL,
918 "KeyM" => Self::KeyM,
919 "KeyN" => Self::KeyN,
920 "KeyO" => Self::KeyO,
921 "KeyP" => Self::KeyP,
922 "KeyQ" => Self::KeyQ,
923 "KeyR" => Self::KeyR,
924 "KeyS" => Self::KeyS,
925 "KeyT" => Self::KeyT,
926 "KeyU" => Self::KeyU,
927 "KeyV" => Self::KeyV,
928 "KeyW" => Self::KeyW,
929 "KeyX" => Self::KeyX,
930 "KeyY" => Self::KeyY,
931 "KeyZ" => Self::KeyZ,
932 "Minus" => Self::Minus,
933 "Period" => Self::Period,
934 "Quote" => Self::Quote,
935 "Semicolon" => Self::Semicolon,
936 "Slash" => Self::Slash,
937 "AltLeft" => Self::AltLeft,
938 "AltRight" => Self::AltRight,
939 "Backspace" => Self::Backspace,
940 "CapsLock" => Self::CapsLock,
941 "ContextMenu" => Self::ContextMenu,
942 "ControlLeft" => Self::ControlLeft,
943 "ControlRight" => Self::ControlRight,
944 "Enter" => Self::Enter,
945 "SuperLeft" => Self::SuperLeft,
946 "SuperRight" => Self::SuperRight,
947 "ShiftLeft" => Self::ShiftLeft,
948 "ShiftRight" => Self::ShiftRight,
949 "Space" => Self::Space,
950 "Tab" => Self::Tab,
951 "Convert" => Self::Convert,
952 "KanaMode" => Self::KanaMode,
953 "Lang1" => Self::Lang1,
954 "Lang2" => Self::Lang2,
955 "Lang3" => Self::Lang3,
956 "Lang4" => Self::Lang4,
957 "Lang5" => Self::Lang5,
958 "NonConvert" => Self::NonConvert,
959 "Delete" => Self::Delete,
960 "End" => Self::End,
961 "Help" => Self::Help,
962 "Home" => Self::Home,
963 "Insert" => Self::Insert,
964 "PageDown" => Self::PageDown,
965 "PageUp" => Self::PageUp,
966 "ArrowDown" => Self::ArrowDown,
967 "ArrowLeft" => Self::ArrowLeft,
968 "ArrowRight" => Self::ArrowRight,
969 "ArrowUp" => Self::ArrowUp,
970 "NumLock" => Self::NumLock,
971 "Numpad0" => Self::Numpad0,
972 "Numpad1" => Self::Numpad1,
973 "Numpad2" => Self::Numpad2,
974 "Numpad3" => Self::Numpad3,
975 "Numpad4" => Self::Numpad4,
976 "Numpad5" => Self::Numpad5,
977 "Numpad6" => Self::Numpad6,
978 "Numpad7" => Self::Numpad7,
979 "Numpad8" => Self::Numpad8,
980 "Numpad9" => Self::Numpad9,
981 "NumpadAdd" => Self::NumpadAdd,
982 "NumpadBackspace" => Self::NumpadBackspace,
983 "NumpadClear" => Self::NumpadClear,
984 "NumpadClearEntry" => Self::NumpadClearEntry,
985 "NumpadComma" => Self::NumpadComma,
986 "NumpadDecimal" => Self::NumpadDecimal,
987 "NumpadDivide" => Self::NumpadDivide,
988 "NumpadEnter" => Self::NumpadEnter,
989 "NumpadEqual" => Self::NumpadEqual,
990 "NumpadHash" => Self::NumpadHash,
991 "NumpadMemoryAdd" => Self::NumpadMemoryAdd,
992 "NumpadMemoryClear" => Self::NumpadMemoryClear,
993 "NumpadMemoryRecall" => Self::NumpadMemoryRecall,
994 "NumpadMemoryStore" => Self::NumpadMemoryStore,
995 "NumpadMemorySubtract" => Self::NumpadMemorySubtract,
996 "NumpadMultiply" => Self::NumpadMultiply,
997 "NumpadParenLeft" => Self::NumpadParenLeft,
998 "NumpadParenRight" => Self::NumpadParenRight,
999 "NumpadStar" => Self::NumpadStar,
1000 "NumpadSubtract" => Self::NumpadSubtract,
1001 "Escape" => Self::Escape,
1002 "Fn" => Self::Fn,
1003 "FnLock" => Self::FnLock,
1004 "PrintScreen" => Self::PrintScreen,
1005 "ScrollLock" => Self::ScrollLock,
1006 "Pause" => Self::Pause,
1007 "BrowserBack" => Self::BrowserBack,
1008 "BrowserFavorites" => Self::BrowserFavorites,
1009 "BrowserForward" => Self::BrowserForward,
1010 "BrowserHome" => Self::BrowserHome,
1011 "BrowserRefresh" => Self::BrowserRefresh,
1012 "BrowserSearch" => Self::BrowserSearch,
1013 "BrowserStop" => Self::BrowserStop,
1014 "Eject" => Self::Eject,
1015 "LaunchApp1" => Self::LaunchApp1,
1016 "LaunchApp2" => Self::LaunchApp2,
1017 "LaunchMail" => Self::LaunchMail,
1018 "MediaPlayPause" => Self::MediaPlayPause,
1019 "MediaSelect" => Self::MediaSelect,
1020 "MediaStop" => Self::MediaStop,
1021 "MediaTrackNext" => Self::MediaTrackNext,
1022 "MediaTrackPrevious" => Self::MediaTrackPrevious,
1023 "Power" => Self::Power,
1024 "Sleep" => Self::Sleep,
1025 "AudioVolumeDown" => Self::AudioVolumeDown,
1026 "AudioVolumeMute" => Self::AudioVolumeMute,
1027 "AudioVolumeUp" => Self::AudioVolumeUp,
1028 "WakeUp" => Self::WakeUp,
1029 "Meta" => Self::Meta,
1030 "Hyper" => Self::Hyper,
1031 "Turbo" => Self::Turbo,
1032 "Abort" => Self::Abort,
1033 "Resume" => Self::Resume,
1034 "Suspend" => Self::Suspend,
1035 "Again" => Self::Again,
1036 "Copy" => Self::Copy,
1037 "Cut" => Self::Cut,
1038 "Find" => Self::Find,
1039 "Open" => Self::Open,
1040 "Paste" => Self::Paste,
1041 "Props" => Self::Props,
1042 "Select" => Self::Select,
1043 "Undo" => Self::Undo,
1044 "Hiragana" => Self::Hiragana,
1045 "Katakana" => Self::Katakana,
1046 "F1" => Self::F1,
1047 "F2" => Self::F2,
1048 "F3" => Self::F3,
1049 "F4" => Self::F4,
1050 "F5" => Self::F5,
1051 "F6" => Self::F6,
1052 "F7" => Self::F7,
1053 "F8" => Self::F8,
1054 "F9" => Self::F9,
1055 "F10" => Self::F10,
1056 "F11" => Self::F11,
1057 "F12" => Self::F12,
1058 "F13" => Self::F13,
1059 "F14" => Self::F14,
1060 "F15" => Self::F15,
1061 "F16" => Self::F16,
1062 "F17" => Self::F17,
1063 "F18" => Self::F18,
1064 "F19" => Self::F19,
1065 "F20" => Self::F20,
1066 "F21" => Self::F21,
1067 "F22" => Self::F22,
1068 "F23" => Self::F23,
1069 "F24" => Self::F24,
1070 "F25" => Self::F25,
1071 "F26" => Self::F26,
1072 "F27" => Self::F27,
1073 "F28" => Self::F28,
1074 "F29" => Self::F29,
1075 "F30" => Self::F30,
1076 "F31" => Self::F31,
1077 "F32" => Self::F32,
1078 "F33" => Self::F33,
1079 "F34" => Self::F34,
1080 "F35" => Self::F35,
1081 _ => return None,
1082 })
1083 }
1084}