1
0
Fork 0
forked from wry/wry

metal: enable keyboard LEDs

This commit is contained in:
Julian Orth 2025-09-07 12:09:43 +02:00
parent 0e51b9469b
commit 11c10fde70
14 changed files with 188 additions and 22 deletions

View file

@ -890,7 +890,7 @@ impl WlSeatGlobal {
let mut shortcuts = SmallVec::<[_; 1]>::new();
let mut components_changed = false;
while let Some(event) = events.pop() {
components_changed |= kbvm_state.kb_state.mods.apply_event(event);
components_changed |= kbvm_state.kb_state.apply_event(event);
let (key_state, kc) = match event {
Event::KeyDown(kc) => (KeyState::Pressed, kc),
Event::KeyUp(kc) => (KeyState::Released, kc),

View file

@ -90,6 +90,7 @@ impl ZwpVirtualKeyboardManagerV1RequestHandler for ZwpVirtualKeyboardManagerV1 {
xwayland_map: seat_keymap.xwayland_map.clone(),
pressed_keys: Default::default(),
mods: Default::default(),
mods_changed: Default::default(),
})),
});
track!(self.client, kb);

View file

@ -84,6 +84,7 @@ impl ZwpVirtualKeyboardV1RequestHandler for ZwpVirtualKeyboardV1 {
xwayland_map: map.xwayland_map.clone(),
pressed_keys: Default::default(),
mods: Default::default(),
mods_changed: Default::default(),
};
Ok(())
}
@ -112,11 +113,15 @@ impl ZwpVirtualKeyboardV1RequestHandler for ZwpVirtualKeyboardV1 {
fn modifiers(&self, req: Modifiers, _slf: &Rc<Self>) -> Result<(), Self::Error> {
let kb_state = &mut *self.kb_state.borrow_mut();
let locked_mods = kb_state.mods.mods_locked;
kb_state.mods.mods_pressed.0 = req.mods_depressed;
kb_state.mods.mods_latched.0 = req.mods_latched;
kb_state.mods.mods_locked.0 = req.mods_locked;
kb_state.mods.group_locked.0 = req.group;
kb_state.mods.update_effective();
if locked_mods != kb_state.mods.mods_locked {
kb_state.dispatch_locked_mods_listeners();
}
self.for_each_kb(|serial, surface, kb| {
kb.on_mods_changed(serial, surface.id, &kb_state);
});