summaryrefslogtreecommitdiff
path: root/tcvt.py
diff options
context:
space:
mode:
Diffstat (limited to 'tcvt.py')
-rwxr-xr-xtcvt.py39
1 files changed, 33 insertions, 6 deletions
diff --git a/tcvt.py b/tcvt.py
index e97da3c..75ad9f3 100755
--- a/tcvt.py
+++ b/tcvt.py
@@ -454,17 +454,26 @@ class Terminal:
self.screen.clrtobot()
self.request_refresh()
- def do_el(self):
+ def do_el0(self):
self.screen.clrtoeol()
self.request_refresh()
+ do_el = do_el0
+
def do_el1(self):
y, x = self.screen.getyx()
- if x > 0:
- self.screen.move(y, 0)
- for _ in range(x):
- self.screen.addch(ord(b' '))
- self.request_refresh()
+ self.screen.move(y, 0)
+ for _ in range(x + 1):
+ self.screen.addch(ord(b' '))
+ self.screen.move(y, x)
+ self.request_refresh()
+
+ def do_el2(self):
+ y, x = self.screen.getyx()
+ self.screen.move(y, 0)
+ self.screen.clrtoeol()
+ self.screen.move(y, x)
+ self.request_refresh()
def do_home(self):
self.screen.move(0, 0)
@@ -600,6 +609,8 @@ class Terminal:
func(self)
elif char == ord(b'm'):
self.feed_esc_opbr_next(char, bytearray(b'0'))
+ elif char == ord(b'?'):
+ self.mode = (self.feed_esc_opbr_quest_next, bytearray())
elif char in bytearray(b'0123456789'):
self.mode = (self.feed_esc_opbr_next, bytearray((char,)))
else:
@@ -640,6 +651,18 @@ class Terminal:
else:
raise ValueError("feed esc [ %r m" % code)
+ def feed_esc_opbr_quest_next(self, char, prev):
+ self.feed_reset()
+ if char in bytearray(b'0123456789'):
+ self.mode = (self.feed_esc_opbr_quest_next,
+ prev + bytearray((char,)))
+ elif char == ord('h') and int(prev) == 2004:
+ pass # ignore enabling bracketed paste mode for now
+ elif char == ord('l') and int(prev) == 2004:
+ pass # ignore disabling bracketed paste mode for now
+ else:
+ raise ValueError("feed esc [ ? %r %r" % (prev, char))
+
feed_esc_opbr_next_table = {
ord('A'): do_cuu,
ord('B'): do_cud,
@@ -675,8 +698,12 @@ class Terminal:
self.screen.move(0, 0)
self.screen.clrtobot()
self.request_refresh()
+ elif char == ord(b'K') and prev == b'0':
+ self.do_el0()
elif char == ord(b'K') and prev == b'1':
self.do_el1()
+ elif char == ord(b'K') and prev == b'2':
+ self.do_el2()
elif char == ord(b'n') and prev == b'6':
return self.do_u7()
else: