aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Meissl <meissl.christian@gmail.com>2024-01-26 15:13:54 +0100
committerIvan Molodetskikh <yalterz@gmail.com>2024-01-28 23:43:08 +0400
commit597ea62d179e51e45cbdd99085795567322ff2f7 (patch)
tree2501c0f1534c7cbed80460376a0a80f179d573c2 /src
parent51243a0a505a533057e7326fbbae882420f0d363 (diff)
downloadniri-597ea62d179e51e45cbdd99085795567322ff2f7.tar.gz
niri-597ea62d179e51e45cbdd99085795567322ff2f7.tar.bz2
niri-597ea62d179e51e45cbdd99085795567322ff2f7.zip
input: update keyboard led state
Diffstat (limited to 'src')
-rw-r--r--src/handlers/mod.rs16
-rw-r--r--src/input.rs11
2 files changed, 26 insertions, 1 deletions
diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs
index be8bab55..d44d9e8c 100644
--- a/src/handlers/mod.rs
+++ b/src/handlers/mod.rs
@@ -11,8 +11,9 @@ use std::thread;
use smithay::backend::allocator::dmabuf::Dmabuf;
use smithay::desktop::{PopupKind, PopupManager};
use smithay::input::pointer::{CursorIcon, CursorImageStatus, PointerHandle};
-use smithay::input::{Seat, SeatHandler, SeatState};
+use smithay::input::{keyboard, Seat, SeatHandler, SeatState};
use smithay::output::Output;
+use smithay::reexports::input;
use smithay::reexports::wayland_server::protocol::wl_data_source::WlDataSource;
use smithay::reexports::wayland_server::protocol::wl_output::WlOutput;
use smithay::reexports::wayland_server::protocol::wl_surface::WlSurface;
@@ -73,6 +74,19 @@ impl SeatHandler for State {
set_data_device_focus(dh, seat, client.clone());
set_primary_focus(dh, seat, client);
}
+
+ fn led_state_changed(&mut self, _seat: &Seat<Self>, led_state: keyboard::LedState) {
+ let keyboards = self
+ .niri
+ .devices
+ .iter()
+ .filter(|device| device.has_capability(input::DeviceCapability::Keyboard))
+ .cloned();
+
+ for mut keyboard in keyboards {
+ keyboard.led_update(led_state.into());
+ }
+ }
}
delegate_seat!(State);
delegate_cursor_shape!(State);
diff --git a/src/input.rs b/src/input.rs
index 23ba6958..b9b91545 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -127,6 +127,17 @@ impl State {
}
}
+ if device.has_capability(input::DeviceCapability::Keyboard) {
+ if let Some(led_state) = self
+ .niri
+ .seat
+ .get_keyboard()
+ .map(|keyboard| keyboard.led_state())
+ {
+ device.led_update(led_state.into());
+ }
+ }
+
apply_libinput_settings(&self.niri.config.borrow().input, device);
}
InputEvent::DeviceRemoved { device } => {