use buffr_engine::{KeyEventKind, MouseButton, NeutralKeyEvent};
pub(crate) fn neutral_to_cef_key(ev: NeutralKeyEvent) -> cef::KeyEvent {
use cef::KeyEventType;
let type_ = match ev.kind {
KeyEventKind::RawDown => KeyEventType::RAWKEYDOWN,
KeyEventKind::Char => KeyEventType::CHAR,
KeyEventKind::Up => KeyEventType::KEYUP,
};
cef::KeyEvent {
type_,
modifiers: ev.modifiers,
windows_key_code: ev.windows_key_code,
native_key_code: ev.native_key_code,
is_system_key: if ev.is_system_key { 1 } else { 0 },
character: ev.character,
unmodified_character: ev.unmodified_character,
focus_on_editable_field: if ev.focus_on_editable_field { 1 } else { 0 },
..cef::KeyEvent::default()
}
}
pub(crate) fn neutral_to_cef_button(button: MouseButton) -> cef::MouseButtonType {
match button {
MouseButton::Left => cef::MouseButtonType::LEFT,
MouseButton::Middle => cef::MouseButtonType::MIDDLE,
MouseButton::Right => cef::MouseButtonType::RIGHT,
MouseButton::Other(n) => {
tracing::debug!(
button = n,
"neutral_to_cef_button: Other({n}) — no CEF equivalent, mapping to LEFT"
);
cef::MouseButtonType::LEFT
}
}
}