diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-08-13 07:45:10 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-08-13 07:45:10 +0400 |
| commit | 0acd1d04e175735631e69617cb636b9f12a38489 (patch) | |
| tree | e79c3a7e4dfceb84a2857ce26c167cda94c7649c /src/input.rs | |
| parent | e8e4853e93d5827611b8a00fc030917b5b8e22f0 (diff) | |
| download | niri-0acd1d04e175735631e69617cb636b9f12a38489.tar.gz niri-0acd1d04e175735631e69617cb636b9f12a38489.tar.bz2 niri-0acd1d04e175735631e69617cb636b9f12a38489.zip | |
Use Alt as mod with winit backend
Diffstat (limited to 'src/input.rs')
| -rw-r--r-- | src/input.rs | 19 |
1 files changed, 15 insertions, 4 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, |
