actions: Shortcut handling changes for #1005

This commit is contained in:
Victoria Brekenfeld 2025-02-26 17:13:31 +01:00 committed by Victoria Brekenfeld
parent 638684642c
commit d76f372c29
6 changed files with 286 additions and 477 deletions

View file

@ -1,8 +1,6 @@
use cosmic_comp_config::workspace::WorkspaceLayout;
use cosmic_settings_config::shortcuts::State as KeyState;
use cosmic_settings_config::shortcuts::{self, Modifiers, Shortcuts};
use cosmic_settings_config::shortcuts::{self, Modifiers};
use smithay::input::keyboard::ModifiersState;
use xkbcommon::xkb;
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum Action {
@ -23,88 +21,6 @@ pub enum PrivateAction {
),
}
pub fn add_default_bindings(shortcuts: &mut Shortcuts, workspace_layout: WorkspaceLayout) {
let (
workspace_previous,
workspace_next,
(output_previous, output_previous_dir),
(output_next, output_next_dir),
) = match workspace_layout {
WorkspaceLayout::Horizontal => (
[xkb::Keysym::Left, xkb::Keysym::h],
[xkb::Keysym::Right, xkb::Keysym::l],
(
[xkb::Keysym::Up, xkb::Keysym::k],
shortcuts::action::Direction::Up,
),
(
[xkb::Keysym::Down, xkb::Keysym::j],
shortcuts::action::Direction::Down,
),
),
WorkspaceLayout::Vertical => (
[xkb::Keysym::Up, xkb::Keysym::k],
[xkb::Keysym::Down, xkb::Keysym::j],
(
[xkb::Keysym::Left, xkb::Keysym::h],
shortcuts::action::Direction::Left,
),
(
[xkb::Keysym::Right, xkb::Keysym::l],
shortcuts::action::Direction::Right,
),
),
};
shortcuts.insert_default_binding(
Modifiers::new().logo().ctrl(),
workspace_previous.iter().copied(),
shortcuts::Action::PreviousWorkspace,
);
shortcuts.insert_default_binding(
Modifiers::new().logo().ctrl(),
workspace_next.iter().copied(),
shortcuts::Action::NextWorkspace,
);
shortcuts.insert_default_binding(
Modifiers::new().logo().ctrl().shift(),
workspace_previous.iter().copied(),
shortcuts::Action::MoveToPreviousWorkspace,
);
shortcuts.insert_default_binding(
Modifiers::new().logo().ctrl().shift(),
workspace_next.iter().copied(),
shortcuts::Action::MoveToNextWorkspace,
);
shortcuts.insert_default_binding(
Modifiers::new().logo().ctrl(),
output_previous.iter().copied(),
shortcuts::Action::SwitchOutput(output_previous_dir),
);
shortcuts.insert_default_binding(
Modifiers::new().logo().ctrl(),
output_next.iter().copied(),
shortcuts::Action::SwitchOutput(output_next_dir),
);
shortcuts.insert_default_binding(
Modifiers::new().logo().ctrl().shift(),
output_previous.iter().copied(),
shortcuts::Action::MoveToOutput(output_previous_dir),
);
shortcuts.insert_default_binding(
Modifiers::new().logo().ctrl().shift(),
output_next.iter().copied(),
shortcuts::Action::MoveToOutput(output_next_dir),
);
}
/// Convert `cosmic_settings_config::shortcuts::State` to `smithay::backend::input::KeyState`.
pub fn cosmic_keystate_to_smithay(value: KeyState) -> smithay::backend::input::KeyState {
match value {