1use loam_egui::egui;
2
3pub fn mouse_button_egui(button: u8) -> Option<egui::PointerButton> {
4 match button {
5 0 => Some(egui::PointerButton::Primary),
6 1 => Some(egui::PointerButton::Middle),
7 2 => Some(egui::PointerButton::Secondary),
8 3 => Some(egui::PointerButton::Extra1),
9 4 => Some(egui::PointerButton::Extra2),
10 _ => None,
11 }
12}
13
14pub fn keycode_egui(code: &str) -> Option<egui::Key> {
15 if let Some(k) = letter_egui(code) {
16 return Some(k);
17 }
18 if let Some(k) = digit_egui(code) {
19 return Some(k);
20 }
21 if let Some(k) = function_egui(code) {
22 return Some(k);
23 }
24 match code {
25 "Space" => Some(egui::Key::Space),
26 "Enter" => Some(egui::Key::Enter),
27 "Escape" => Some(egui::Key::Escape),
28 "Tab" => Some(egui::Key::Tab),
29 "Backspace" => Some(egui::Key::Backspace),
30 "Delete" => Some(egui::Key::Delete),
31 "ArrowUp" => Some(egui::Key::ArrowUp),
32 "ArrowDown" => Some(egui::Key::ArrowDown),
33 "ArrowLeft" => Some(egui::Key::ArrowLeft),
34 "ArrowRight" => Some(egui::Key::ArrowRight),
35 "Home" => Some(egui::Key::Home),
36 "End" => Some(egui::Key::End),
37 "PageUp" => Some(egui::Key::PageUp),
38 "PageDown" => Some(egui::Key::PageDown),
39 "Backquote" => Some(egui::Key::Backtick),
40 "Minus" => Some(egui::Key::Minus),
41 "Equal" => Some(egui::Key::Equals),
42 _ => None,
43 }
44}
45
46fn letter_egui(code: &str) -> Option<egui::Key> {
47 match code {
48 "KeyA" => Some(egui::Key::A),
49 "KeyB" => Some(egui::Key::B),
50 "KeyC" => Some(egui::Key::C),
51 "KeyD" => Some(egui::Key::D),
52 "KeyE" => Some(egui::Key::E),
53 "KeyF" => Some(egui::Key::F),
54 "KeyG" => Some(egui::Key::G),
55 "KeyH" => Some(egui::Key::H),
56 "KeyI" => Some(egui::Key::I),
57 "KeyJ" => Some(egui::Key::J),
58 "KeyK" => Some(egui::Key::K),
59 "KeyL" => Some(egui::Key::L),
60 "KeyM" => Some(egui::Key::M),
61 "KeyN" => Some(egui::Key::N),
62 "KeyO" => Some(egui::Key::O),
63 "KeyP" => Some(egui::Key::P),
64 "KeyQ" => Some(egui::Key::Q),
65 "KeyR" => Some(egui::Key::R),
66 "KeyS" => Some(egui::Key::S),
67 "KeyT" => Some(egui::Key::T),
68 "KeyU" => Some(egui::Key::U),
69 "KeyV" => Some(egui::Key::V),
70 "KeyW" => Some(egui::Key::W),
71 "KeyX" => Some(egui::Key::X),
72 "KeyY" => Some(egui::Key::Y),
73 "KeyZ" => Some(egui::Key::Z),
74 _ => None,
75 }
76}
77
78fn digit_egui(code: &str) -> Option<egui::Key> {
79 match code {
80 "Digit0" => Some(egui::Key::Num0),
81 "Digit1" => Some(egui::Key::Num1),
82 "Digit2" => Some(egui::Key::Num2),
83 "Digit3" => Some(egui::Key::Num3),
84 "Digit4" => Some(egui::Key::Num4),
85 "Digit5" => Some(egui::Key::Num5),
86 "Digit6" => Some(egui::Key::Num6),
87 "Digit7" => Some(egui::Key::Num7),
88 "Digit8" => Some(egui::Key::Num8),
89 "Digit9" => Some(egui::Key::Num9),
90 _ => None,
91 }
92}
93
94fn function_egui(code: &str) -> Option<egui::Key> {
95 match code {
96 "F1" => Some(egui::Key::F1),
97 "F2" => Some(egui::Key::F2),
98 "F3" => Some(egui::Key::F3),
99 "F4" => Some(egui::Key::F4),
100 "F5" => Some(egui::Key::F5),
101 "F6" => Some(egui::Key::F6),
102 "F7" => Some(egui::Key::F7),
103 "F8" => Some(egui::Key::F8),
104 "F9" => Some(egui::Key::F9),
105 "F10" => Some(egui::Key::F10),
106 "F11" => Some(egui::Key::F11),
107 "F12" => Some(egui::Key::F12),
108 _ => None,
109 }
110}