small software-rendered rust tty
Diffstat (limited to 'src/term.rs')
-rw-r--r--src/term.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/term.rs b/src/term.rs
index aaf1cec..30e77d5 100644
--- a/src/term.rs
+++ b/src/term.rs
@@ -1,5 +1,6 @@
use std::iter::repeat_n;
use std::ops::Not;
+use std::os::fd::BorrowedFd;
mod cells;
use cells::*;
use ctlfun::Parameter::*;
@@ -52,7 +53,7 @@ impl Terminal {
self.cells.cells().fill(Cell::default());
}
#[implicit_fn::implicit_fn]
- pub fn rx(&mut self, x: u8) {
+ pub fn rx(&mut self, x: u8, pty: BorrowedFd<'_>) {
match self.p.parse_byte(x) {
Continue => {}
Char(x) => {
@@ -225,6 +226,19 @@ impl Terminal {
}
Control(ControlFunction {
start: b'[',
+ params: [Value(6)],
+ end: b'n',
+ ..
+ }) => {
+ super::write(
+ pty,
+ format!("\x1b[{};{}R", self.cells.r(), self.cells.c())
+ .as_bytes(),
+ )
+ .unwrap();
+ }
+ Control(ControlFunction {
+ start: b'[',
params: [x],
end: b'X',
..