1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-24 22:01:47 +03:00

wezterm: add disable_default_(key|mouse)_bindings config

If set to true, then none of the default key or mouse bindings,
respectively, will be registered in the GUI, leaving it up to
the user to provide all key assignments.
This commit is contained in:
Wez Furlong 2020-05-28 22:22:02 -07:00
parent acd016cdd4
commit 9e89a557d4
2 changed files with 192 additions and 184 deletions

View File

@ -416,9 +416,13 @@ pub struct Config {
#[serde(default)] #[serde(default)]
pub keys: Vec<Key>, pub keys: Vec<Key>,
#[serde(default)]
pub disable_default_key_bindings: bool,
#[serde(default)] #[serde(default)]
pub mouse_bindings: Vec<Mouse>, pub mouse_bindings: Vec<Mouse>,
#[serde(default)]
pub disable_default_mouse_bindings: bool,
#[serde(default)] #[serde(default)]
pub daemon_options: DaemonOptions, pub daemon_options: DaemonOptions,

View File

@ -143,192 +143,196 @@ impl InputMap {
let ctrl_shift = KeyModifiers::CTRL | KeyModifiers::SHIFT; let ctrl_shift = KeyModifiers::CTRL | KeyModifiers::SHIFT;
// Apply the default bindings; if the user has already mapped if !config.disable_default_key_bindings {
// a given entry then that will take precedence. // Apply the default bindings; if the user has already mapped
k!( // a given entry then that will take precedence.
// Clipboard k!(
[KeyModifiers::SHIFT, KeyCode::Insert, Paste], // Clipboard
[KeyModifiers::SUPER, KeyCode::Char('c'), Copy], [KeyModifiers::SHIFT, KeyCode::Insert, Paste],
[KeyModifiers::SUPER, KeyCode::Char('v'), Paste], [KeyModifiers::SUPER, KeyCode::Char('c'), Copy],
[ctrl_shift, KeyCode::Char('C'), Copy], [KeyModifiers::SUPER, KeyCode::Char('v'), Paste],
[ctrl_shift, KeyCode::Char('V'), Paste], [ctrl_shift, KeyCode::Char('C'), Copy],
// Window management [ctrl_shift, KeyCode::Char('V'), Paste],
[KeyModifiers::ALT, KeyCode::Char('\n'), ToggleFullScreen], // Window management
[KeyModifiers::ALT, KeyCode::Char('\r'), ToggleFullScreen], [KeyModifiers::ALT, KeyCode::Char('\n'), ToggleFullScreen],
[KeyModifiers::ALT, KeyCode::Enter, ToggleFullScreen], [KeyModifiers::ALT, KeyCode::Char('\r'), ToggleFullScreen],
[KeyModifiers::SUPER, KeyCode::Char('m'), Hide], [KeyModifiers::ALT, KeyCode::Enter, ToggleFullScreen],
[KeyModifiers::SUPER, KeyCode::Char('n'), SpawnWindow], [KeyModifiers::SUPER, KeyCode::Char('m'), Hide],
[ctrl_shift, KeyCode::Char('M'), Hide], [KeyModifiers::SUPER, KeyCode::Char('n'), SpawnWindow],
[ctrl_shift, KeyCode::Char('N'), SpawnWindow], [ctrl_shift, KeyCode::Char('M'), Hide],
[KeyModifiers::SUPER, KeyCode::Char('k'), ClearScrollback], [ctrl_shift, KeyCode::Char('N'), SpawnWindow],
[ctrl_shift, KeyCode::Char('K'), ClearScrollback], [KeyModifiers::SUPER, KeyCode::Char('k'), ClearScrollback],
[KeyModifiers::SUPER, KeyCode::Char('f'), Search], [ctrl_shift, KeyCode::Char('K'), ClearScrollback],
[ctrl_shift, KeyCode::Char('F'), Search], [KeyModifiers::SUPER, KeyCode::Char('f'), Search],
// Font size manipulation [ctrl_shift, KeyCode::Char('F'), Search],
[KeyModifiers::CTRL, KeyCode::Char('-'), DecreaseFontSize], // Font size manipulation
[KeyModifiers::CTRL, KeyCode::Char('0'), ResetFontSize], [KeyModifiers::CTRL, KeyCode::Char('-'), DecreaseFontSize],
[KeyModifiers::CTRL, KeyCode::Char('='), IncreaseFontSize], [KeyModifiers::CTRL, KeyCode::Char('0'), ResetFontSize],
[KeyModifiers::SUPER, KeyCode::Char('-'), DecreaseFontSize], [KeyModifiers::CTRL, KeyCode::Char('='), IncreaseFontSize],
[KeyModifiers::SUPER, KeyCode::Char('0'), ResetFontSize], [KeyModifiers::SUPER, KeyCode::Char('-'), DecreaseFontSize],
[KeyModifiers::SUPER, KeyCode::Char('='), IncreaseFontSize], [KeyModifiers::SUPER, KeyCode::Char('0'), ResetFontSize],
// Tab navigation and management [KeyModifiers::SUPER, KeyCode::Char('='), IncreaseFontSize],
[ // Tab navigation and management
KeyModifiers::SUPER, [
KeyCode::Char('t'), KeyModifiers::SUPER,
SpawnTab(SpawnTabDomain::CurrentTabDomain) KeyCode::Char('t'),
], SpawnTab(SpawnTabDomain::CurrentTabDomain)
[ ],
ctrl_shift, [
KeyCode::Char('T'), ctrl_shift,
SpawnTab(SpawnTabDomain::CurrentTabDomain) KeyCode::Char('T'),
], SpawnTab(SpawnTabDomain::CurrentTabDomain)
[ ],
KeyModifiers::SUPER | KeyModifiers::SHIFT, [
KeyCode::Char('T'), KeyModifiers::SUPER | KeyModifiers::SHIFT,
SpawnTab(SpawnTabDomain::CurrentTabDomain) KeyCode::Char('T'),
], SpawnTab(SpawnTabDomain::CurrentTabDomain)
[KeyModifiers::SUPER, KeyCode::Char('1'), ActivateTab(0)], ],
[KeyModifiers::SUPER, KeyCode::Char('2'), ActivateTab(1)], [KeyModifiers::SUPER, KeyCode::Char('1'), ActivateTab(0)],
[KeyModifiers::SUPER, KeyCode::Char('3'), ActivateTab(2)], [KeyModifiers::SUPER, KeyCode::Char('2'), ActivateTab(1)],
[KeyModifiers::SUPER, KeyCode::Char('4'), ActivateTab(3)], [KeyModifiers::SUPER, KeyCode::Char('3'), ActivateTab(2)],
[KeyModifiers::SUPER, KeyCode::Char('5'), ActivateTab(4)], [KeyModifiers::SUPER, KeyCode::Char('4'), ActivateTab(3)],
[KeyModifiers::SUPER, KeyCode::Char('6'), ActivateTab(5)], [KeyModifiers::SUPER, KeyCode::Char('5'), ActivateTab(4)],
[KeyModifiers::SUPER, KeyCode::Char('7'), ActivateTab(6)], [KeyModifiers::SUPER, KeyCode::Char('6'), ActivateTab(5)],
[KeyModifiers::SUPER, KeyCode::Char('8'), ActivateTab(7)], [KeyModifiers::SUPER, KeyCode::Char('7'), ActivateTab(6)],
[KeyModifiers::SUPER, KeyCode::Char('9'), ActivateTab(8)], [KeyModifiers::SUPER, KeyCode::Char('8'), ActivateTab(7)],
[KeyModifiers::SUPER, KeyCode::Char('w'), CloseCurrentTab], [KeyModifiers::SUPER, KeyCode::Char('9'), ActivateTab(8)],
[ctrl_shift, KeyCode::Char('1'), ActivateTab(0)], [KeyModifiers::SUPER, KeyCode::Char('w'), CloseCurrentTab],
[ctrl_shift, KeyCode::Char('2'), ActivateTab(1)], [ctrl_shift, KeyCode::Char('1'), ActivateTab(0)],
[ctrl_shift, KeyCode::Char('3'), ActivateTab(2)], [ctrl_shift, KeyCode::Char('2'), ActivateTab(1)],
[ctrl_shift, KeyCode::Char('4'), ActivateTab(3)], [ctrl_shift, KeyCode::Char('3'), ActivateTab(2)],
[ctrl_shift, KeyCode::Char('5'), ActivateTab(4)], [ctrl_shift, KeyCode::Char('4'), ActivateTab(3)],
[ctrl_shift, KeyCode::Char('6'), ActivateTab(5)], [ctrl_shift, KeyCode::Char('5'), ActivateTab(4)],
[ctrl_shift, KeyCode::Char('7'), ActivateTab(6)], [ctrl_shift, KeyCode::Char('6'), ActivateTab(5)],
[ctrl_shift, KeyCode::Char('8'), ActivateTab(7)], [ctrl_shift, KeyCode::Char('7'), ActivateTab(6)],
[ctrl_shift, KeyCode::Char('9'), ActivateTab(8)], [ctrl_shift, KeyCode::Char('8'), ActivateTab(7)],
[ctrl_shift, KeyCode::Char('W'), CloseCurrentTab], [ctrl_shift, KeyCode::Char('9'), ActivateTab(8)],
[ [ctrl_shift, KeyCode::Char('W'), CloseCurrentTab],
KeyModifiers::SUPER | KeyModifiers::SHIFT, [
KeyCode::Char('['), KeyModifiers::SUPER | KeyModifiers::SHIFT,
ActivateTabRelative(-1) KeyCode::Char('['),
], ActivateTabRelative(-1)
[ ],
KeyModifiers::SUPER | KeyModifiers::SHIFT, [
KeyCode::Char('{'), KeyModifiers::SUPER | KeyModifiers::SHIFT,
ActivateTabRelative(-1) KeyCode::Char('{'),
], ActivateTabRelative(-1)
[ ],
KeyModifiers::SUPER | KeyModifiers::SHIFT, [
KeyCode::Char(']'), KeyModifiers::SUPER | KeyModifiers::SHIFT,
ActivateTabRelative(1) KeyCode::Char(']'),
], ActivateTabRelative(1)
[ ],
KeyModifiers::SUPER | KeyModifiers::SHIFT, [
KeyCode::Char('}'), KeyModifiers::SUPER | KeyModifiers::SHIFT,
ActivateTabRelative(1) KeyCode::Char('}'),
], ActivateTabRelative(1)
[KeyModifiers::SUPER, KeyCode::Char('r'), ReloadConfiguration], ],
[ctrl_shift, KeyCode::Char('R'), ReloadConfiguration], [KeyModifiers::SUPER, KeyCode::Char('r'), ReloadConfiguration],
[ctrl_shift, KeyCode::PageUp, MoveTabRelative(-1)], [ctrl_shift, KeyCode::Char('R'), ReloadConfiguration],
[ctrl_shift, KeyCode::PageDown, MoveTabRelative(1)], [ctrl_shift, KeyCode::PageUp, MoveTabRelative(-1)],
[KeyModifiers::SHIFT, KeyCode::PageUp, ScrollByPage(-1)], [ctrl_shift, KeyCode::PageDown, MoveTabRelative(1)],
[KeyModifiers::SHIFT, KeyCode::PageDown, ScrollByPage(1)], [KeyModifiers::SHIFT, KeyCode::PageUp, ScrollByPage(-1)],
[KeyModifiers::ALT, KeyCode::Char('9'), ShowTabNavigator], [KeyModifiers::SHIFT, KeyCode::PageDown, ScrollByPage(1)],
); [KeyModifiers::ALT, KeyCode::Char('9'), ShowTabNavigator],
);
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
k!([KeyModifiers::SUPER, KeyCode::Char('h'), HideApplication],); k!([KeyModifiers::SUPER, KeyCode::Char('h'), HideApplication],);
}
m!( if !config.disable_default_mouse_bindings {
[ m!(
KeyModifiers::NONE, [
MouseEventTrigger::Down { KeyModifiers::NONE,
streak: 3, MouseEventTrigger::Down {
button: MouseButton::Left streak: 3,
}, button: MouseButton::Left
SelectTextAtMouseCursor(SelectionMode::Line) },
], SelectTextAtMouseCursor(SelectionMode::Line)
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Down { KeyModifiers::NONE,
streak: 2, MouseEventTrigger::Down {
button: MouseButton::Left streak: 2,
}, button: MouseButton::Left
SelectTextAtMouseCursor(SelectionMode::Word) },
], SelectTextAtMouseCursor(SelectionMode::Word)
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Down { KeyModifiers::NONE,
streak: 1, MouseEventTrigger::Down {
button: MouseButton::Left streak: 1,
}, button: MouseButton::Left
SelectTextAtMouseCursor(SelectionMode::Cell) },
], SelectTextAtMouseCursor(SelectionMode::Cell)
[ ],
KeyModifiers::SHIFT, [
MouseEventTrigger::Down { KeyModifiers::SHIFT,
streak: 1, MouseEventTrigger::Down {
button: MouseButton::Left streak: 1,
}, button: MouseButton::Left
ExtendSelectionToMouseCursor(None) },
], ExtendSelectionToMouseCursor(None)
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Up { KeyModifiers::NONE,
streak: 1, MouseEventTrigger::Up {
button: MouseButton::Left streak: 1,
}, button: MouseButton::Left
CompleteSelectionOrOpenLinkAtMouseCursor },
], CompleteSelectionOrOpenLinkAtMouseCursor
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Up { KeyModifiers::NONE,
streak: 2, MouseEventTrigger::Up {
button: MouseButton::Left streak: 2,
}, button: MouseButton::Left
CompleteSelection },
], CompleteSelection
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Up { KeyModifiers::NONE,
streak: 3, MouseEventTrigger::Up {
button: MouseButton::Left streak: 3,
}, button: MouseButton::Left
CompleteSelection },
], CompleteSelection
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Drag { KeyModifiers::NONE,
streak: 1, MouseEventTrigger::Drag {
button: MouseButton::Left streak: 1,
}, button: MouseButton::Left
ExtendSelectionToMouseCursor(Some(SelectionMode::Cell)) },
], ExtendSelectionToMouseCursor(Some(SelectionMode::Cell))
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Drag { KeyModifiers::NONE,
streak: 2, MouseEventTrigger::Drag {
button: MouseButton::Left streak: 2,
}, button: MouseButton::Left
ExtendSelectionToMouseCursor(Some(SelectionMode::Word)) },
], ExtendSelectionToMouseCursor(Some(SelectionMode::Word))
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Drag { KeyModifiers::NONE,
streak: 3, MouseEventTrigger::Drag {
button: MouseButton::Left streak: 3,
}, button: MouseButton::Left
ExtendSelectionToMouseCursor(Some(SelectionMode::Line)) },
], ExtendSelectionToMouseCursor(Some(SelectionMode::Line))
[ ],
KeyModifiers::NONE, [
MouseEventTrigger::Down { KeyModifiers::NONE,
streak: 1, MouseEventTrigger::Down {
button: MouseButton::Middle streak: 1,
}, button: MouseButton::Middle
Paste },
], Paste
); ],
);
}
Self { keys, mouse } Self { keys, mouse }
} }