summaryrefslogtreecommitdiff
path: root/tcvt.py
diff options
context:
space:
mode:
Diffstat (limited to 'tcvt.py')
-rwxr-xr-xtcvt.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/tcvt.py b/tcvt.py
index c30f4e0..de62116 100755
--- a/tcvt.py
+++ b/tcvt.py
@@ -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()