diff options
Diffstat (limited to 'tcvt.py')
-rwxr-xr-x | tcvt.py | 22 |
1 files changed, 15 insertions, 7 deletions
@@ -520,6 +520,10 @@ class Terminal: self.screen.move(n - 1, x) self.request_refresh() + def do_u7(self): + y, x = self.screen.getyx() + return b"\x1b[%d;%dR" % (y + 1, x + 1) + def feed_reset(self): if self.graphics_font: self.mode = (self.feed_graphics,) @@ -527,7 +531,7 @@ class Terminal: self.mode = (self.feed_simple,) def feed(self, char): - self.mode[0](char, *self.mode[1:]) + return self.mode[0](char, *self.mode[1:]) feed_simple_table = { ord('\a'): do_bel, @@ -661,6 +665,8 @@ class Terminal: self.request_refresh() elif char == ord(b'K') and prev == b'1': self.do_el1() + elif char == ord(b'n') and prev == b'6': + return self.do_u7() else: raise ValueError("feed esc [ %r %r" % (prev, char)) @@ -845,13 +851,15 @@ def main(): if not data: break for char in bytearray(data): - if "TCVT_DEVEL" in os.environ: - t.feed(char) + try: + response = t.feed(char) + except ValueError: + if "TCVT_DEVEL" in os.environ: + raise + t.feed_reset() else: - try: - t.feed(char) - except ValueError: - t.feed_reset() + if response: + os.write(masterfd, response) t.refresh(0.1) else: t.refresh() |