From d004089dee8a51d2083fef1bf58ef66b2b166448 Mon Sep 17 00:00:00 2001 From: akbash Date: Tue, 11 Aug 2026 23:08:34 +0300 Subject: fix: disambiguate shifted punctuation keybinds (#2676) refs #2674 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Can Celik --- src/app/input/navigate.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/app/input') 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 @@ -2815,6 +2815,39 @@ resize_pane_left = "prefix+shift+left" assert_eq!(action, Some(NavigateAction::LastPane)); } + #[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( -- cgit v1.2.3