Files
ruin/lib/ui/src/keyboard.rs

58 lines
1.0 KiB
Rust

#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct KeyboardModifiers {
pub shift: bool,
pub control: bool,
pub alt: bool,
pub super_key: bool,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum KeyboardKey {
Character(String),
Enter,
Tab,
Escape,
Backspace,
Delete,
ArrowLeft,
ArrowRight,
ArrowUp,
ArrowDown,
Home,
End,
Unknown,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum KeyboardEventKind {
Pressed,
Released,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct KeyboardEvent {
pub keycode: u32,
pub kind: KeyboardEventKind,
pub key: KeyboardKey,
pub modifiers: KeyboardModifiers,
pub text: Option<String>,
}
impl KeyboardEvent {
pub fn new(
keycode: u32,
kind: KeyboardEventKind,
key: KeyboardKey,
modifiers: KeyboardModifiers,
text: Option<String>,
) -> Self {
Self {
keycode,
kind,
key,
modifiers,
text,
}
}
}