use windowing_api::{Event, ScrollDelta};
pub fn convert_event(event: &Event) -> Option<fui_core::InputEvent> {
match event {
Event::MouseEnter { .. } => Some(fui_core::InputEvent::CursorEntered {}),
Event::MouseLeave { .. } => Some(fui_core::InputEvent::CursorLeft {}),
Event::MouseMove { position, .. } => Some(fui_core::InputEvent::CursorMoved {
position: fui_core::Point::new(position.x, position.y),
}),
Event::MouseButton { state, button } => Some(fui_core::InputEvent::MouseInput {
state: match state {
windowing_api::ElementState::Pressed => fui_core::ElementState::Pressed,
windowing_api::ElementState::Released => fui_core::ElementState::Released,
},
button: match button {
windowing_api::MouseButton::Left => fui_core::MouseButton::Left,
windowing_api::MouseButton::Right => fui_core::MouseButton::Right,
windowing_api::MouseButton::Middle => fui_core::MouseButton::Middle,
windowing_api::MouseButton::Other(other) => fui_core::MouseButton::Other(*other),
},
}),
Event::ScrollWheel { delta } => Some(fui_core::InputEvent::ScrollWheel {
delta: match delta {
ScrollDelta::LineDelta(x, y) => fui_core::ScrollDelta::LineDelta(*x, *y),
ScrollDelta::PixelDelta(x, y) => fui_core::ScrollDelta::PixelDelta(*x, *y),
},
}),
Event::KeyEvent {
state,
keycode,
is_repeat,
modifiers,
text,
} => Some(fui_core::InputEvent::KeyboardInput(fui_core::KeyEvent {
state: match state {
windowing_api::ElementState::Pressed => fui_core::KeyState::Pressed,
windowing_api::ElementState::Released => fui_core::KeyState::Released,
},
keycode: match keycode {
Some(windowing_api::Keycode::Esc) => Some(fui_core::Keycode::Esc),
Some(windowing_api::Keycode::F1) => Some(fui_core::Keycode::F1),
Some(windowing_api::Keycode::F2) => Some(fui_core::Keycode::F2),
Some(windowing_api::Keycode::F3) => Some(fui_core::Keycode::F3),
Some(windowing_api::Keycode::F4) => Some(fui_core::Keycode::F4),
Some(windowing_api::Keycode::F5) => Some(fui_core::Keycode::F5),
Some(windowing_api::Keycode::F6) => Some(fui_core::Keycode::F6),
Some(windowing_api::Keycode::F7) => Some(fui_core::Keycode::F7),
Some(windowing_api::Keycode::F8) => Some(fui_core::Keycode::F8),
Some(windowing_api::Keycode::F9) => Some(fui_core::Keycode::F9),
Some(windowing_api::Keycode::F10) => Some(fui_core::Keycode::F10),
Some(windowing_api::Keycode::F11) => Some(fui_core::Keycode::F11),
Some(windowing_api::Keycode::F12) => Some(fui_core::Keycode::F12),
Some(windowing_api::Keycode::F13) => Some(fui_core::Keycode::F13),
Some(windowing_api::Keycode::F14) => Some(fui_core::Keycode::F14),
Some(windowing_api::Keycode::F15) => Some(fui_core::Keycode::F15),
Some(windowing_api::Keycode::F16) => Some(fui_core::Keycode::F16),
Some(windowing_api::Keycode::F17) => Some(fui_core::Keycode::F17),
Some(windowing_api::Keycode::F18) => Some(fui_core::Keycode::F18),
Some(windowing_api::Keycode::F19) => Some(fui_core::Keycode::F19),
Some(windowing_api::Keycode::F20) => Some(fui_core::Keycode::F20),
Some(windowing_api::Keycode::PrintScreen) => Some(fui_core::Keycode::PrintScreen),
Some(windowing_api::Keycode::ScrollLock) => Some(fui_core::Keycode::ScrollLock),
Some(windowing_api::Keycode::Pause) => Some(fui_core::Keycode::Pause),
Some(windowing_api::Keycode::Insert) => Some(fui_core::Keycode::Insert),
Some(windowing_api::Keycode::Delete) => Some(fui_core::Keycode::Delete),
Some(windowing_api::Keycode::Home) => Some(fui_core::Keycode::Home),
Some(windowing_api::Keycode::End) => Some(fui_core::Keycode::End),
Some(windowing_api::Keycode::PageUp) => Some(fui_core::Keycode::PageUp),
Some(windowing_api::Keycode::PageDown) => Some(fui_core::Keycode::PageDown),
Some(windowing_api::Keycode::Left) => Some(fui_core::Keycode::Left),
Some(windowing_api::Keycode::Right) => Some(fui_core::Keycode::Right),
Some(windowing_api::Keycode::Up) => Some(fui_core::Keycode::Up),
Some(windowing_api::Keycode::Down) => Some(fui_core::Keycode::Down),
Some(windowing_api::Keycode::Shift) => Some(fui_core::Keycode::Shift),
Some(windowing_api::Keycode::Ctrl) => Some(fui_core::Keycode::Ctrl),
Some(windowing_api::Keycode::Win) => Some(fui_core::Keycode::Win),
Some(windowing_api::Keycode::Alt) => Some(fui_core::Keycode::Alt),
Some(windowing_api::Keycode::AltGr) => Some(fui_core::Keycode::AltGr),
Some(windowing_api::Keycode::Menu) => Some(fui_core::Keycode::Menu),
Some(windowing_api::Keycode::Backspace) => Some(fui_core::Keycode::Backspace),
Some(windowing_api::Keycode::Tab) => Some(fui_core::Keycode::Tab),
Some(windowing_api::Keycode::CapsLock) => Some(fui_core::Keycode::CapsLock),
Some(windowing_api::Keycode::Return) => Some(fui_core::Keycode::Return),
Some(windowing_api::Keycode::Enter) => Some(fui_core::Keycode::Enter),
Some(windowing_api::Keycode::Space) => Some(fui_core::Keycode::Space),
Some(windowing_api::Keycode::QuoteLeft) => Some(fui_core::Keycode::QuoteLeft),
Some(windowing_api::Keycode::Minus) => Some(fui_core::Keycode::Minus),
Some(windowing_api::Keycode::Equal) => Some(fui_core::Keycode::Equal),
Some(windowing_api::Keycode::Asterisk) => Some(fui_core::Keycode::Asterisk),
Some(windowing_api::Keycode::Plus) => Some(fui_core::Keycode::Plus),
Some(windowing_api::Keycode::Period) => Some(fui_core::Keycode::Period),
Some(windowing_api::Keycode::Slash) => Some(fui_core::Keycode::Slash),
Some(windowing_api::Keycode::BracketLeft) => Some(fui_core::Keycode::BracketLeft),
Some(windowing_api::Keycode::BracketRight) => Some(fui_core::Keycode::BracketRight),
Some(windowing_api::Keycode::Backslash) => Some(fui_core::Keycode::Backslash),
Some(windowing_api::Keycode::Semicolon) => Some(fui_core::Keycode::Semicolon),
Some(windowing_api::Keycode::Quote) => Some(fui_core::Keycode::Quote),
Some(windowing_api::Keycode::Comma) => Some(fui_core::Keycode::Comma),
Some(windowing_api::Keycode::KeyA) => Some(fui_core::Keycode::KeyA),
Some(windowing_api::Keycode::KeyB) => Some(fui_core::Keycode::KeyB),
Some(windowing_api::Keycode::KeyC) => Some(fui_core::Keycode::KeyC),
Some(windowing_api::Keycode::KeyD) => Some(fui_core::Keycode::KeyD),
Some(windowing_api::Keycode::KeyE) => Some(fui_core::Keycode::KeyE),
Some(windowing_api::Keycode::KeyF) => Some(fui_core::Keycode::KeyF),
Some(windowing_api::Keycode::KeyG) => Some(fui_core::Keycode::KeyG),
Some(windowing_api::Keycode::KeyH) => Some(fui_core::Keycode::KeyH),
Some(windowing_api::Keycode::KeyI) => Some(fui_core::Keycode::KeyI),
Some(windowing_api::Keycode::KeyJ) => Some(fui_core::Keycode::KeyJ),
Some(windowing_api::Keycode::KeyK) => Some(fui_core::Keycode::KeyK),
Some(windowing_api::Keycode::KeyL) => Some(fui_core::Keycode::KeyL),
Some(windowing_api::Keycode::KeyM) => Some(fui_core::Keycode::KeyM),
Some(windowing_api::Keycode::KeyN) => Some(fui_core::Keycode::KeyN),
Some(windowing_api::Keycode::KeyO) => Some(fui_core::Keycode::KeyO),
Some(windowing_api::Keycode::KeyP) => Some(fui_core::Keycode::KeyP),
Some(windowing_api::Keycode::KeyQ) => Some(fui_core::Keycode::KeyQ),
Some(windowing_api::Keycode::KeyR) => Some(fui_core::Keycode::KeyR),
Some(windowing_api::Keycode::KeyS) => Some(fui_core::Keycode::KeyS),
Some(windowing_api::Keycode::KeyT) => Some(fui_core::Keycode::KeyT),
Some(windowing_api::Keycode::KeyU) => Some(fui_core::Keycode::KeyU),
Some(windowing_api::Keycode::KeyV) => Some(fui_core::Keycode::KeyV),
Some(windowing_api::Keycode::KeyW) => Some(fui_core::Keycode::KeyW),
Some(windowing_api::Keycode::KeyX) => Some(fui_core::Keycode::KeyX),
Some(windowing_api::Keycode::KeyY) => Some(fui_core::Keycode::KeyY),
Some(windowing_api::Keycode::KeyZ) => Some(fui_core::Keycode::KeyZ),
Some(windowing_api::Keycode::Key0) => Some(fui_core::Keycode::Key0),
Some(windowing_api::Keycode::Key1) => Some(fui_core::Keycode::Key1),
Some(windowing_api::Keycode::Key2) => Some(fui_core::Keycode::Key2),
Some(windowing_api::Keycode::Key3) => Some(fui_core::Keycode::Key3),
Some(windowing_api::Keycode::Key4) => Some(fui_core::Keycode::Key4),
Some(windowing_api::Keycode::Key5) => Some(fui_core::Keycode::Key5),
Some(windowing_api::Keycode::Key6) => Some(fui_core::Keycode::Key6),
Some(windowing_api::Keycode::Key7) => Some(fui_core::Keycode::Key7),
Some(windowing_api::Keycode::Key8) => Some(fui_core::Keycode::Key8),
Some(windowing_api::Keycode::Key9) => Some(fui_core::Keycode::Key9),
Some(windowing_api::Keycode::NumLock) => Some(fui_core::Keycode::NumLock),
_ => None,
},
is_repeat: *is_repeat,
text: text.clone(),
modifiers: fui_core::KeyModifiers {
shift: modifiers.shift,
ctrl: modifiers.ctrl,
alt: modifiers.alt,
win: modifiers.win,
keypad: modifiers.keypad,
right: modifiers.right,
},
})),
_ => None,
}
}