pub use keyboard_types::{
Code,
Key,
Modifiers,
};
use crate::{
events::ErasedEventData,
impl_event,
};
impl_event! [
KeyboardData;
onkeydown
onkeyup
onglobalkeydown
onglobalkeyup
];
#[derive(Debug, Clone, PartialEq)]
pub struct KeyboardData {
pub key: Key,
pub code: Code,
pub modifiers: Modifiers,
}
impl KeyboardData {
pub fn new(key: Key, code: Code, modifiers: Modifiers) -> Self {
Self {
key,
code,
modifiers,
}
}
}
impl KeyboardData {
pub fn to_text(&self) -> Option<&str> {
if let Key::Character(c) = &self.key {
Some(c)
} else {
None
}
}
}
impl From<&ErasedEventData> for KeyboardData {
fn from(val: &ErasedEventData) -> Self {
val.downcast::<KeyboardData>().cloned().unwrap()
}
}