1use easy_imgui as imgui;
6use easy_imgui_sys::*;
7use winit::{
8 event::MouseButton,
9 keyboard::{KeyCode, PhysicalKey},
10 window::CursorIcon,
11};
12
13pub fn to_imgui_button(btncode: MouseButton) -> Option<imgui::MouseButton> {
15 let btn = match btncode {
16 MouseButton::Left => imgui::MouseButton::Left,
17 MouseButton::Right => imgui::MouseButton::Right,
18 MouseButton::Middle => imgui::MouseButton::Middle,
19 MouseButton::Other(x) if x < ImGuiMouseButton_::ImGuiMouseButton_COUNT.0 as u16 => {
20 imgui::MouseButton::Other(x)
21 }
22 _ => return None,
23 };
24 Some(btn)
25}
26
27pub fn to_imgui_key(phys_key: PhysicalKey) -> Option<imgui::Key> {
29 let key = match phys_key {
30 PhysicalKey::Code(code) => match code {
31 KeyCode::Tab => imgui::Key::Tab,
32 KeyCode::ArrowLeft => imgui::Key::LeftArrow,
33 KeyCode::ArrowRight => imgui::Key::RightArrow,
34 KeyCode::ArrowUp => imgui::Key::UpArrow,
35 KeyCode::ArrowDown => imgui::Key::DownArrow,
36 KeyCode::PageUp => imgui::Key::PageUp,
37 KeyCode::PageDown => imgui::Key::PageDown,
38 KeyCode::Home => imgui::Key::Home,
39 KeyCode::End => imgui::Key::End,
40 KeyCode::Insert => imgui::Key::Insert,
41 KeyCode::Delete => imgui::Key::Delete,
42 KeyCode::Backspace => imgui::Key::Backspace,
43 KeyCode::Space => imgui::Key::Space,
44 KeyCode::Enter => imgui::Key::Enter,
45 KeyCode::Escape => imgui::Key::Escape,
46 KeyCode::ControlLeft => imgui::Key::LeftCtrl,
47 KeyCode::ShiftLeft => imgui::Key::LeftShift,
48 KeyCode::AltLeft => imgui::Key::LeftAlt,
49 KeyCode::SuperLeft => imgui::Key::LeftSuper,
50 KeyCode::ControlRight => imgui::Key::RightCtrl,
51 KeyCode::ShiftRight => imgui::Key::RightShift,
52 KeyCode::AltRight => imgui::Key::RightAlt,
53 KeyCode::SuperRight => imgui::Key::RightSuper,
54 KeyCode::Digit0 => imgui::Key::Num0,
55 KeyCode::Digit1 => imgui::Key::Num1,
56 KeyCode::Digit2 => imgui::Key::Num2,
57 KeyCode::Digit3 => imgui::Key::Num3,
58 KeyCode::Digit4 => imgui::Key::Num4,
59 KeyCode::Digit5 => imgui::Key::Num5,
60 KeyCode::Digit6 => imgui::Key::Num6,
61 KeyCode::Digit7 => imgui::Key::Num7,
62 KeyCode::Digit8 => imgui::Key::Num8,
63 KeyCode::Digit9 => imgui::Key::Num9,
64 KeyCode::KeyA => imgui::Key::A,
65 KeyCode::KeyB => imgui::Key::B,
66 KeyCode::KeyC => imgui::Key::C,
67 KeyCode::KeyD => imgui::Key::D,
68 KeyCode::KeyE => imgui::Key::E,
69 KeyCode::KeyF => imgui::Key::F,
70 KeyCode::KeyG => imgui::Key::G,
71 KeyCode::KeyH => imgui::Key::H,
72 KeyCode::KeyI => imgui::Key::I,
73 KeyCode::KeyJ => imgui::Key::J,
74 KeyCode::KeyK => imgui::Key::K,
75 KeyCode::KeyL => imgui::Key::L,
76 KeyCode::KeyM => imgui::Key::M,
77 KeyCode::KeyN => imgui::Key::N,
78 KeyCode::KeyO => imgui::Key::O,
79 KeyCode::KeyP => imgui::Key::P,
80 KeyCode::KeyQ => imgui::Key::Q,
81 KeyCode::KeyR => imgui::Key::R,
82 KeyCode::KeyS => imgui::Key::S,
83 KeyCode::KeyT => imgui::Key::T,
84 KeyCode::KeyU => imgui::Key::U,
85 KeyCode::KeyV => imgui::Key::V,
86 KeyCode::KeyW => imgui::Key::W,
87 KeyCode::KeyX => imgui::Key::X,
88 KeyCode::KeyY => imgui::Key::Y,
89 KeyCode::KeyZ => imgui::Key::Z,
90 KeyCode::F1 => imgui::Key::F1,
91 KeyCode::F2 => imgui::Key::F2,
92 KeyCode::F3 => imgui::Key::F3,
93 KeyCode::F4 => imgui::Key::F4,
94 KeyCode::F5 => imgui::Key::F5,
95 KeyCode::F6 => imgui::Key::F6,
96 KeyCode::F7 => imgui::Key::F7,
97 KeyCode::F8 => imgui::Key::F8,
98 KeyCode::F9 => imgui::Key::F9,
99 KeyCode::F10 => imgui::Key::F10,
100 KeyCode::F11 => imgui::Key::F11,
101 KeyCode::F12 => imgui::Key::F12,
102 KeyCode::Quote => imgui::Key::Apostrophe,
103 KeyCode::Comma => imgui::Key::Comma,
104 KeyCode::Minus => imgui::Key::Minus,
105 KeyCode::Period => imgui::Key::Period,
106 KeyCode::Slash => imgui::Key::Slash,
107 KeyCode::Semicolon => imgui::Key::Semicolon,
108 KeyCode::Equal => imgui::Key::Equal,
109 KeyCode::BracketLeft => imgui::Key::LeftBracket,
110 KeyCode::Backslash => imgui::Key::Backslash,
111 KeyCode::BracketRight => imgui::Key::RightBracket,
112 KeyCode::Backquote => imgui::Key::GraveAccent,
113 KeyCode::CapsLock => imgui::Key::CapsLock,
114 KeyCode::ScrollLock => imgui::Key::ScrollLock,
115 KeyCode::NumLock => imgui::Key::NumLock,
116 KeyCode::PrintScreen => imgui::Key::PrintScreen,
117 KeyCode::Pause => imgui::Key::Pause,
118 KeyCode::Numpad0 => imgui::Key::Keypad0,
119 KeyCode::Numpad1 => imgui::Key::Keypad1,
120 KeyCode::Numpad2 => imgui::Key::Keypad2,
121 KeyCode::Numpad3 => imgui::Key::Keypad3,
122 KeyCode::Numpad4 => imgui::Key::Keypad4,
123 KeyCode::Numpad5 => imgui::Key::Keypad5,
124 KeyCode::Numpad6 => imgui::Key::Keypad6,
125 KeyCode::Numpad7 => imgui::Key::Keypad7,
126 KeyCode::Numpad8 => imgui::Key::Keypad8,
127 KeyCode::Numpad9 => imgui::Key::Keypad9,
128 KeyCode::NumpadDecimal => imgui::Key::KeypadDecimal,
129 KeyCode::NumpadDivide => imgui::Key::KeypadDivide,
130 KeyCode::NumpadMultiply => imgui::Key::KeypadMultiply,
131 KeyCode::NumpadSubtract => imgui::Key::KeypadSubtract,
132 KeyCode::NumpadAdd => imgui::Key::KeypadAdd,
133 KeyCode::NumpadEnter => imgui::Key::KeypadEnter,
134 KeyCode::NumpadEqual => imgui::Key::KeypadEqual,
135 KeyCode::NumpadBackspace => imgui::Key::Backspace,
136 _ => return None,
137 },
138 PhysicalKey::Unidentified(_) => return None,
139 };
140 Some(key)
141}
142
143pub fn from_imgui_cursor(cursor: imgui::MouseCursor) -> Option<CursorIcon> {
145 use CursorIcon::*;
146 let c = match cursor {
147 imgui::MouseCursor::Arrow => Default,
148 imgui::MouseCursor::TextInput => Text,
149 imgui::MouseCursor::ResizeAll => Move,
150 imgui::MouseCursor::ResizeNS => NsResize,
151 imgui::MouseCursor::ResizeEW => EwResize,
152 imgui::MouseCursor::ResizeNESW => NeswResize,
153 imgui::MouseCursor::ResizeNWSE => NwseResize,
154 imgui::MouseCursor::Hand => Pointer,
155 imgui::MouseCursor::NotAllowed => NotAllowed,
156 imgui::MouseCursor::None => return None,
157 };
158 Some(c)
159}