diff options
Diffstat (limited to 'tcvt.py')
-rwxr-xr-x | tcvt.py | 39 |
1 files changed, 33 insertions, 6 deletions
@@ -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: |