aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/app/input/navigate.rs33
-rw-r--r--src/config/keybinds.rs4
2 files changed, 35 insertions, 2 deletions
diff --git a/src/app/input/navigate.rs b/src/app/input/navigate.rs
index fd6ef273..beb2f363 100644
--- a/src/app/input/navigate.rs
+++ b/src/app/input/navigate.rs
@@ -2816,6 +2816,39 @@ resize_pane_left = "prefix+shift+left"
}
#[test]
+ fn shifted_backslash_layout_prefers_horizontal_split_binding() {
+ let config: Config = toml::from_str(
+ r#"
+[keys]
+split_vertical = "prefix+|"
+split_horizontal = 'prefix+\'
+"#,
+ )
+ .unwrap();
+ let mut state = state_with_workspaces(&["test"]);
+ state.keybinds = config.keybinds();
+ let key = crate::input::parse_terminal_key_sequence("\x1b[124:92;2:1u").unwrap();
+ assert_eq!(key.code, KeyCode::Char('|'));
+ assert_eq!(key.modifiers, KeyModifiers::SHIFT);
+ assert_eq!(key.shifted_codepoint, Some('\\' as u32));
+ assert!(state.keybinds.split_horizontal.matches_prefix_key(&key));
+ assert!(!state.keybinds.split_vertical.matches_prefix_key(&key));
+
+ assert_eq!(
+ action_for_key(&state, key, BindingDispatch::Prefix),
+ Some(NavigateAction::SplitHorizontal)
+ );
+ assert_eq!(
+ action_for_key(
+ &state,
+ TerminalKey::new(KeyCode::Char('|'), KeyModifiers::empty()),
+ BindingDispatch::Prefix,
+ ),
+ Some(NavigateAction::SplitVertical)
+ );
+ }
+
+ #[test]
fn prefix_tab_override_can_map_to_last_pane() {
let config: Config = toml::from_str(
r#"
diff --git a/src/config/keybinds.rs b/src/config/keybinds.rs
index 79dc87e3..6cddd3ac 100644
--- a/src/config/keybinds.rs
+++ b/src/config/keybinds.rs
@@ -1437,8 +1437,8 @@ fn shifted_char_matches_expected(
let KeyCode::Char(expected) = expected_code else {
return false;
};
- if shifted_codepoint.and_then(char::from_u32) == Some(expected) {
- return true;
+ if let Some(shifted) = shifted_codepoint.and_then(char::from_u32) {
+ return shifted == expected;
}
matches!(actual_code, KeyCode::Char(actual) if actual == expected && is_shifted_punctuation(expected))
}