actions: Shortcut handling changes for #1005
This commit is contained in:
parent
638684642c
commit
d76f372c29
6 changed files with 286 additions and 477 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -192,7 +192,6 @@ impl Config {
|
|||
})
|
||||
.expect("Failed to add cosmic-config to the event loop");
|
||||
let xdg = xdg::BaseDirectories::new().ok();
|
||||
let workspace = get_config::<WorkspaceConfig>(&config, "workspaces");
|
||||
|
||||
let cosmic_comp_config =
|
||||
CosmicCompConfig::get_entry(&config).unwrap_or_else(|(errs, c)| {
|
||||
|
|
@ -241,10 +240,7 @@ impl Config {
|
|||
// Source key bindings from com.system76.CosmicSettings.Shortcuts
|
||||
let settings_context = shortcuts::context().expect("Failed to load shortcuts config");
|
||||
let system_actions = shortcuts::system_actions(&settings_context);
|
||||
let mut shortcuts = shortcuts::shortcuts(&settings_context);
|
||||
|
||||
// Add any missing default shortcuts recommended by the compositor.
|
||||
key_bindings::add_default_bindings(&mut shortcuts, workspace.workspace_layout);
|
||||
let shortcuts = shortcuts::shortcuts(&settings_context);
|
||||
|
||||
// Listen for updates to the keybindings config.
|
||||
match cosmic_config::calloop::ConfigWatchSource::new(&settings_context) {
|
||||
|
|
@ -254,11 +250,7 @@ impl Config {
|
|||
match key.as_str() {
|
||||
// Reload the keyboard shortcuts config.
|
||||
"custom" | "defaults" => {
|
||||
let mut shortcuts = shortcuts::shortcuts(&config);
|
||||
let layout = get_config::<WorkspaceConfig>(&config, "workspaces")
|
||||
.workspace_layout;
|
||||
key_bindings::add_default_bindings(&mut shortcuts, layout);
|
||||
state.common.config.shortcuts = shortcuts;
|
||||
state.common.config.shortcuts = shortcuts::shortcuts(&config);
|
||||
}
|
||||
|
||||
"system_actions" => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue