diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-07 16:24:26 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-07 16:25:36 +0300 |
| commit | d190c1f55e05419b299fc68f60ea0aabc1ff7379 (patch) | |
| tree | 7bb615cf57dbe49b1505b6de1607e98f168886b2 /src/app | |
| parent | 39ba6b7a0242768b7d3684e8163d13a0609fcaa3 (diff) | |
fix: send shifted punctuation as text in kitty mode
refs #1105
Diffstat (limited to 'src/app')
| -rw-r--r-- | src/app/api/panes.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/app/api/panes.rs b/src/app/api/panes.rs index 14c62942..fdda8750 100644 --- a/src/app/api/panes.rs +++ b/src/app/api/panes.rs @@ -2013,6 +2013,35 @@ mod tests { } #[tokio::test] + async fn api_pane_send_keys_sends_shifted_punctuation_as_text_in_kitty_mode() { + let (mut app, pane_id) = app_with_test_workspace(); + let internal_pane_id = app.state.workspaces[0].tabs[0].root_pane; + let (runtime, mut rx) = + crate::terminal::TerminalRuntime::test_with_channel_and_scrollback_bytes( + 80, + 24, + 0, + b"\x1b[>7u", + 1, + ); + app.state.insert_test_runtime(internal_pane_id, runtime); + + let response = app.handle_api_request(crate::api::schema::Request { + id: "req".into(), + method: crate::api::schema::Method::PaneSendKeys(PaneSendKeysParams { + pane_id, + keys: vec!["shift+?".into()], + }), + }); + + let success: SuccessResponse = serde_json::from_str(&response).unwrap(); + assert_eq!(success.id, "req"); + assert_eq!(success.result, ResponseResult::Ok {}); + assert_eq!(rx.try_recv().unwrap(), bytes::Bytes::from_static(b"?")); + assert!(rx.try_recv().is_err()); + } + + #[tokio::test] async fn api_pane_send_input_keys_accept_key_combo_chords() { let (mut app, pane_id, mut rx) = app_with_send_key_runtime(1); |
