first pass of merging in warp (doesn't build)

This commit is contained in:
Ryan Ward
2026-07-01 16:08:58 -05:00
parent 2f64909469
commit 4770ac06b5
3662 changed files with 414574 additions and 89772 deletions
@@ -3,11 +3,11 @@ use std::collections::HashMap;
use galaxyui::keymap::Keystroke;
use galaxyui::platform::OperatingSystem;
use lazy_static::lazy_static;
use galaxyui_core::keymap::Keystroke;
use galaxyui_core::platform::OperatingSystem;
use super::{
mouse::{MouseAction, MouseButton, MouseState},
TermMode,
};
use super::mouse::{MouseAction, MouseButton, MouseState};
use super::TermMode;
mod kitty_keyboard_protocol;
@@ -249,6 +249,7 @@ impl<T: ModeProvider> ToEscapeSequence<T> for KeystrokeWithDetails<'_> {
.or_else(|| keystroke_to_c0_control_code(keystroke, mode_provider))
.or_else(|| cursor_movement_keystroke_to_escape_sequence(keystroke, mode_provider))
.or_else(|| meta_keystroke_to_escape_sequence(keystroke, mode_provider))
.or_else(|| backspace_keystroke_to_escape_sequence(keystroke))
}
}
@@ -550,6 +551,9 @@ fn cursor_movement_keystroke_to_escape_sequence(
/// further than a HashMap.
fn map_special_key_to_bytes(key: &str) -> Option<&[u8]> {
match key {
"enter" | "numpadenter" => Some("\r".as_bytes()),
"tab" => Some("\t".as_bytes()),
"escape" => Some("\x1b".as_bytes()),
"backspace" => Some("\x7f".as_bytes()),
"insert" => Some("\x1b[2~".as_bytes()),
"delete" => Some("\x1b[3~".as_bytes()),
@@ -592,6 +596,19 @@ fn meta_keystroke_to_escape_sequence(
}
}
/// Returns DEL (0x7f) for an unmodified or Shift-only Backspace.
/// Guards against winit on Windows reporting `\x08` (Ctrl+H) for Shift+Backspace,
/// which readline-style TUIs interpret as `backward-kill-word`. See GH#11342.
fn backspace_keystroke_to_escape_sequence(keystroke: &Keystroke) -> Option<Vec<u8>> {
if keystroke.ctrl || keystroke.alt || keystroke.meta || keystroke.cmd {
return None;
}
match keystroke.key.as_str() {
"backspace" => Some(vec![C0::DEL]),
_ => None,
}
}
#[cfg(test)]
#[path = "escape_sequences_test.rs"]
#[path = "escape_sequences_tests.rs"]
mod tests;