implement get_cursor_pos

This commit is contained in:
mtgmonkey
2025-07-08 12:15:21 -04:00
parent 6b973008e0
commit e1082e47cb
3 changed files with 5 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ use heapless::Vec;
#[derive(Debug, PartialEq, Clone)]
pub enum AnsiSequence {
Escape,
GetCursorPos,
CursorPos(u32, u32),
CursorUp(u32),
CursorDown(u32),
@@ -65,6 +66,7 @@ impl Display for AnsiSequence {
use AnsiSequence::*;
match self {
Escape => write!(formatter, "\u{1b}"),
GetCursorPos => write!(formatter, "[6n"),
CursorPos(line, col) => write!(formatter, "[{};{}H", line, col),
CursorUp(amt) => write!(formatter, "[{}A", amt),
CursorDown(amt) => write!(formatter, "[{}B", amt),

View File

@@ -182,6 +182,7 @@ fn set_top_and_bottom(input: &str) -> IResult<&str, AnsiSequence> {
.parse(input)
}
tag_parser!(get_cursor_pos, "[6n", AnsiSequence::GetCursorPos);
tag_parser!(cursor_save, "[s", AnsiSequence::CursorSave);
tag_parser!(cursor_restore, "[u", AnsiSequence::CursorRestore);
tag_parser!(erase_display, "[2J", AnsiSequence::EraseDisplay);
@@ -281,6 +282,7 @@ fn combined(input: &str) -> IResult<&str, AnsiSequence> {
set_g1_graph,
set_single_shift2,
set_single_shift3,
get_cursor_pos,
))
.parse(input)
}

View File

@@ -44,6 +44,7 @@ macro_rules! test_def_val_parser {
};
}
test_parser!(get_cursor_pos, "\u{1b}[6n");
test_def_val_parser!(cursor_pos_default, "\u{1b}[H");
test_def_val_parser!(cursor_pos, "\u{1b}[10;5H");
test_def_val_parser!(cursor_up_default, "\u{1b}[A");