mirror of
https://github.com/zellij-org/zellij.git
synced 2024-11-22 04:33:22 +03:00
Add Unbind for Keybindings (#241)
* will unbind all default keybindings for now * add test for toplevel unbind * add example/default.yaml * add example/README.md
This commit is contained in:
parent
60ad749473
commit
e5fc158503
14
README.md
14
README.md
@ -45,8 +45,11 @@ An example file can be found under `example/config.yaml`.
|
||||
|
||||
Zellij will look for a file `/zellij/config.yaml` in the default configuration location of your os.
|
||||
|
||||
To pass a config file directly to zellij run it either with:
|
||||
`cargo run -- config [FILE]` or `zellij config [FILE]`.
|
||||
* To ignore the default config file location:
|
||||
`zellij config --clean` or `cargo make run -- config --clean`
|
||||
|
||||
* To pass a config file directly to zellij run it either with:
|
||||
`zellij config [FILE]` or `cargo make run -- config [FILE]` .
|
||||
|
||||
The structure is as follows:
|
||||
```
|
||||
@ -77,6 +80,13 @@ keybinds:
|
||||
```
|
||||
Will create a new tab on pressing either the `c` or the `d` key.
|
||||
|
||||
* It is possible to unbind the default Keybindings:
|
||||
```
|
||||
keybinds:
|
||||
unbind: true
|
||||
```
|
||||
|
||||
|
||||
# What is the current status of the project?
|
||||
|
||||
Zellij is in the last stages of being VT compatible. As much as modern terminals are.
|
||||
|
5
example/README.md
Normal file
5
example/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Special considerations when using the configuration:
|
||||
|
||||
While trying to bind the newline character in the Config, use double quotes:
|
||||
|
||||
`Ctrl: "\n"` instead of `Ctrl: '\n'`
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [GoToTab: 1,]
|
||||
key: [F: 1,]
|
||||
|
211
example/default.yaml
Normal file
211
example/default.yaml
Normal file
@ -0,0 +1,211 @@
|
||||
---
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'r',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [NewPane: ]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Alt: 'h',]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Alt: 'l',]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j',]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k',]
|
||||
- action: [FocusPreviousPane,]
|
||||
key: [ Alt: '[',]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Alt: ']',]
|
||||
locked:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'g',]
|
||||
resize:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p', ]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't', ]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'r', Char: "\n", Char: ' ',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [Resize: Left,]
|
||||
key: [Char: 'h', Left, ]
|
||||
- action: [Resize: Down,]
|
||||
key: [Char: 'h', Down, ]
|
||||
- action: [Resize: Up,]
|
||||
key: [Char: 'h', Up, ]
|
||||
- action: [Resize: Right,]
|
||||
key: [Char: 'h', Right, ]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Alt: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Alt: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Up,]
|
||||
- action: [FocusPreviousPane,]
|
||||
key: [ Alt: '[',]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Alt: ']',]
|
||||
pane:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p', ]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't', ]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'r', Char: "\n", Char: ' ',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Alt: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Alt: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Up,]
|
||||
- action: [SwitchFocus,]
|
||||
key: [Char: 'p']
|
||||
- action: [NewPane: ,]
|
||||
key: [Char: 'n', Alt: 'n',]
|
||||
- action: [NewPane: Down,]
|
||||
key: [Char: 'd', ]
|
||||
- action: [NewPane: Right,]
|
||||
key: [Char: 'r', ]
|
||||
- action: [CloseFocus,]
|
||||
key: [Char: 'x', ]
|
||||
- action: [ToggleFocusFullscreen,]
|
||||
key: [Char: 'f', ]
|
||||
- action: [FocusPreviousPane,]
|
||||
key: [ Alt: '[',]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Alt: ']',]
|
||||
tab:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p', ]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'r', Ctrl: 't', Char: "\n", Char: ' ',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: 'r']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [FocusPreviousPane,]
|
||||
key: [ Alt: '[',]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Alt: ']',]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'h',]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'l', ]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'j', ]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'k', ]
|
||||
- action: [NewTab,]
|
||||
key: [ Char: 'n', ]
|
||||
- action: [CloseTab,]
|
||||
key: [ Char: 'x', ]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Alt: 'h',]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Alt: 'l', ]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', ]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', ]
|
||||
- action: [GoToTab: 1,]
|
||||
key: [ Char: '1', ]
|
||||
- action: [GoToTab: 2,]
|
||||
key: [ Char: '2', ]
|
||||
- action: [GoToTab: 3,]
|
||||
key: [ Char: '3', ]
|
||||
- action: [GoToTab: 4,]
|
||||
key: [ Char: '4', ]
|
||||
- action: [GoToTab: 5,]
|
||||
key: [ Char: '5', ]
|
||||
- action: [GoToTab: 6,]
|
||||
key: [ Char: '6', ]
|
||||
- action: [GoToTab: 7,]
|
||||
key: [ Char: '7', ]
|
||||
- action: [GoToTab: 8,]
|
||||
key: [ Char: '8', ]
|
||||
- action: [GoToTab: 9,]
|
||||
key: [ Char: '9', ]
|
||||
scroll:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'r', Ctrl: 's', Char: ' ',
|
||||
Char: "\n",]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't', ]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g', ]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p', ]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Alt: 'h',]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Alt: 'l',]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j',]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k',]
|
||||
- action: [FocusPreviousPane,]
|
||||
key: [ Alt: '[',]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Alt: ']',]
|
||||
renametab:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'r', Ctrl: 's', Char: ' ', Char: 'g',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Char: "\n",]
|
||||
- action: [TabNameInput: [27] , SwitchToMode: Tab,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Alt: 'h',]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Alt: 'l',]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j',]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k',]
|
||||
- action: [FocusPreviousPane,]
|
||||
key: [ Alt: '[',]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Alt: ']',]
|
@ -19,6 +19,7 @@ pub struct ModeKeybinds(HashMap<Key, Vec<Action>>);
|
||||
pub struct KeybindsFromYaml {
|
||||
#[serde(flatten)]
|
||||
keybinds: HashMap<InputMode, Vec<KeyActionUnbind>>,
|
||||
#[serde(default)]
|
||||
unbind: Unbind,
|
||||
}
|
||||
|
||||
@ -50,7 +51,7 @@ struct UnbindFromYaml {
|
||||
#[serde(untagged)]
|
||||
enum Unbind {
|
||||
All(bool),
|
||||
// TODO: use the enum
|
||||
// TODO@a-kenji: use the enum
|
||||
//Keys(Vec<Key>),
|
||||
}
|
||||
|
||||
@ -456,6 +457,12 @@ impl From<KeyActionUnbind> for ModeKeybinds {
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for Unbind {
|
||||
fn default() -> Unbind {
|
||||
Unbind::All(false)
|
||||
}
|
||||
}
|
||||
|
||||
// The unit test location.
|
||||
#[cfg(test)]
|
||||
#[path = "./unit/keybinds_test.rs"]
|
||||
|
@ -124,12 +124,25 @@ fn from_keyaction_from_yaml_to_mode_keybindings() {
|
||||
assert_eq!(expected, ModeKeybinds::from(keyaction));
|
||||
}
|
||||
|
||||
//#[test]
|
||||
//fn from_keybinds_from_yaml_to_keybinds(){
|
||||
//let mut keybinds_from_yaml = KeybindsFromYaml(HashMap<InputMode, Vec<KeyActionFromYaml>>);
|
||||
//let actions = vec![Action::NoOp, Action::GoToTab(1), ];
|
||||
//let keyaction = KeyActionFromYaml {
|
||||
//action : actions.clone(),
|
||||
//key : vec![ Key::F(1), Key::Backspace , Key::Char('t'), ],
|
||||
//};
|
||||
//}
|
||||
#[test]
|
||||
fn toplevel_unbind_unbinds_all() {
|
||||
let from_yaml = KeybindsFromYaml {
|
||||
unbind: Unbind::All(true),
|
||||
keybinds: HashMap::new(),
|
||||
};
|
||||
|
||||
let keybinds_from_yaml = Keybinds::get_default_keybinds_with_config(Some(from_yaml));
|
||||
|
||||
assert_eq!(keybinds_from_yaml, Keybinds::new());
|
||||
}
|
||||
|
||||
fn no_unbind_unbinds_none() {
|
||||
let from_yaml = KeybindsFromYaml {
|
||||
unbind: Unbind::All(false),
|
||||
keybinds: HashMap::new(),
|
||||
};
|
||||
|
||||
let keybinds_from_yaml = Keybinds::get_default_keybinds_with_config(Some(from_yaml));
|
||||
|
||||
assert_eq!(keybinds_from_yaml, Keybinds::new());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user