aboutsummaryrefslogtreecommitdiff
path: root/src/input.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/input.rs')
-rw-r--r--src/input.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/input.rs b/src/input.rs
index b57c4c20..83f186fd 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -17,7 +17,7 @@ use smithay::input::pointer::{
use smithay::utils::SERIAL_COUNTER;
use smithay::wayland::tablet_manager::{TabletDescriptor, TabletSeatTrait};
-use crate::config::{Action, Binds, Modifiers};
+use crate::config::{Action, Binds, LayoutAction, Modifiers};
use crate::niri::State;
use crate::screenshot_ui::ScreenshotUi;
use crate::utils::{center, get_monotonic_time, spawn};
@@ -90,6 +90,7 @@ impl State {
| Action::ChangeVt(_)
| Action::Suspend
| Action::PowerOffMonitors
+ | Action::SwitchLayout(_)
)
{
return;
@@ -186,6 +187,16 @@ impl State {
self.niri.layout.toggle_fullscreen(&window);
}
}
+ Action::SwitchLayout(action) => {
+ self.niri
+ .seat
+ .get_keyboard()
+ .unwrap()
+ .with_kkb_state(self, |mut state| match action {
+ LayoutAction::Next => state.cycle_next_layout(),
+ LayoutAction::Prev => state.cycle_prev_layout(),
+ });
+ }
Action::MoveColumnLeft => {
self.niri.layout.move_left();
// FIXME: granular