summaryrefslogtreecommitdiff
path: root/tcvt.py
diff options
context:
space:
mode:
Diffstat (limited to 'tcvt.py')
-rwxr-xr-xtcvt.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/tcvt.py b/tcvt.py
index 55084b8..0e1a528 100755
--- a/tcvt.py
+++ b/tcvt.py
@@ -562,6 +562,8 @@ class Terminal:
def feed_esc(self, char):
if char == ord(b'['):
self.mode = (self.feed_esc_opbr,)
+ elif char == ord(b']'):
+ self.mode = (self.feed_esc_clbr, bytearray())
else:
raise ValueError("feed esc %r" % char)
@@ -660,6 +662,28 @@ class Terminal:
else:
raise ValueError("feed esc [ %r %r" % (prev, char))
+ def feed_esc_clbr(self, char, prev):
+ self.feed_reset()
+ if char == 7:
+ # Bell character, end of control sequence; pass it through
+ # if one of those that do not interfere with the other curses.
+ if not prev.startswith((b"0;", b"1;", b"2;")):
+ raise ValueError("dropped osc sequence: esc ] %r bel"
+ % (prev,))
+ self.refresh()
+ if sys.version_info.major == 2:
+ stdout = sys.stdout
+ else:
+ stdout = sys.stdout.buffer
+ stdout.write(bytearray(b"\x1b]") + prev + bytearray(b"\x07"))
+ stdout.flush()
+
+ elif 8 <= char <= 13 or 32 <= char <= 126:
+ self.mode = (self.feed_esc_clbr, prev + bytearray((char,)))
+ else:
+ raise ValueError("feed esc ] %r %r" % (prev, char))
+
+
symbolic_keymapping = {
ord(b"\n"): "cr",
curses.KEY_LEFT: "kcub1",