1
0
Fork 0
forked from wry/wry

keyboard: move KeyboardState to dedicated module

This commit is contained in:
Julian Orth 2025-01-07 11:48:10 +01:00
parent 1a35ba3909
commit e7d5a23af3
16 changed files with 60 additions and 43 deletions

37
src/keyboard.rs Normal file
View file

@ -0,0 +1,37 @@
use {
crate::utils::vecset::VecSet,
std::{
cell::{Ref, RefCell},
rc::Rc,
},
uapi::OwnedFd,
};
#[derive(Copy, Clone, Debug, Default)]
pub struct ModifierState {
pub mods_depressed: u32,
pub mods_latched: u32,
pub mods_locked: u32,
pub mods_effective: u32,
pub group: u32,
}
linear_ids!(KeyboardStateIds, KeyboardStateId, u64);
pub struct KeyboardState {
pub id: KeyboardStateId,
pub map: Rc<OwnedFd>,
pub map_len: usize,
pub pressed_keys: VecSet<u32>,
pub mods: ModifierState,
}
pub trait DynKeyboardState {
fn borrow(&self) -> Ref<'_, KeyboardState>;
}
impl DynKeyboardState for RefCell<KeyboardState> {
fn borrow(&self) -> Ref<'_, KeyboardState> {
self.borrow()
}
}