aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-08-13 07:45:10 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-08-13 07:45:10 +0400
commit0acd1d04e175735631e69617cb636b9f12a38489 (patch)
treee79c3a7e4dfceb84a2857ce26c167cda94c7649c
parente8e4853e93d5827611b8a00fc030917b5b8e22f0 (diff)
downloadniri-0acd1d04e175735631e69617cb636b9f12a38489.tar.gz
niri-0acd1d04e175735631e69617cb636b9f12a38489.tar.bz2
niri-0acd1d04e175735631e69617cb636b9f12a38489.zip
Use Alt as mod with winit backend
-rw-r--r--src/input.rs19
-rw-r--r--src/tty.rs4
-rw-r--r--src/winit.rs5
3 files changed, 22 insertions, 6 deletions
diff --git a/src/input.rs b/src/input.rs
index aa03a593..1b7c65ee 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -22,10 +22,16 @@ enum InputAction {
ToggleFullscreen,
}
+pub enum CompositorMod {
+ Super,
+ Alt,
+}
+
impl Niri {
pub fn process_input_event<I: InputBackend>(
&mut self,
change_vt: &mut dyn FnMut(i32),
+ compositor_mod: CompositorMod,
event: InputEvent<I>,
) {
let _span = tracy_client::span!("process_input_event");
@@ -44,10 +50,15 @@ impl Niri {
time,
|_, mods, keysym| {
if event.state() == KeyState::Pressed {
+ let mod_down = match compositor_mod {
+ CompositorMod::Super => mods.logo,
+ CompositorMod::Alt => mods.alt,
+ };
+
// FIXME: these don't work in the Russian layout. I guess I'll need to
// find a US keymap, then map keys somehow.
match keysym.modified_sym() {
- keysyms::KEY_E if mods.logo => {
+ keysyms::KEY_E if mod_down => {
FilterResult::Intercept(InputAction::Quit)
}
keysym @ keysyms::KEY_XF86Switch_VT_1
@@ -55,13 +66,13 @@ impl Niri {
let vt = (keysym - keysyms::KEY_XF86Switch_VT_1 + 1) as i32;
FilterResult::Intercept(InputAction::ChangeVt(vt))
}
- keysyms::KEY_t if mods.logo => {
+ keysyms::KEY_t if mod_down => {
FilterResult::Intercept(InputAction::SpawnTerminal)
}
- keysyms::KEY_q if mods.logo => {
+ keysyms::KEY_q if mod_down => {
FilterResult::Intercept(InputAction::CloseWindow)
}
- keysyms::KEY_f if mods.logo => {
+ keysyms::KEY_f if mod_down => {
FilterResult::Intercept(InputAction::ToggleFullscreen)
}
_ => FilterResult::Forward,
diff --git a/src/tty.rs b/src/tty.rs
index 9594945a..0971fd43 100644
--- a/src/tty.rs
+++ b/src/tty.rs
@@ -28,6 +28,7 @@ use smithay::utils::DeviceFd;
use smithay_drm_extras::edid::EdidInfo;
use crate::backend::Backend;
+use crate::input::CompositorMod;
use crate::niri::OutputRenderElements;
use crate::{LoopData, Niri};
@@ -111,7 +112,8 @@ impl Tty {
.insert_source(input_backend, |event, _, data| {
let tty = data.tty.as_mut().unwrap();
let mut change_vt = |vt| tty.change_vt(vt);
- data.niri.process_input_event(&mut change_vt, event);
+ data.niri
+ .process_input_event(&mut change_vt, CompositorMod::Super, event);
})
.unwrap();
diff --git a/src/winit.rs b/src/winit.rs
index e63ac30c..3de74ce4 100644
--- a/src/winit.rs
+++ b/src/winit.rs
@@ -10,6 +10,7 @@ use smithay::reexports::calloop::LoopHandle;
use smithay::utils::{Rectangle, Transform};
use crate::backend::Backend;
+use crate::input::CompositorMod;
use crate::niri::OutputRenderElements;
use crate::{LoopData, Niri};
@@ -116,7 +117,9 @@ impl Winit {
None,
);
}
- WinitEvent::Input(event) => niri.process_input_event(&mut |_| (), event),
+ WinitEvent::Input(event) => {
+ niri.process_input_event(&mut |_| (), CompositorMod::Alt, event)
+ }
WinitEvent::Focus(_) => (),
WinitEvent::Refresh => niri.queue_redraw(),
});