summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtcvt.py42
1 files changed, 24 insertions, 18 deletions
diff --git a/tcvt.py b/tcvt.py
index 2a857df..55084b8 100755
--- a/tcvt.py
+++ b/tcvt.py
@@ -462,7 +462,7 @@ class Terminal:
def do_hpa(self, n):
y, _ = self.screen.getyx()
- self.screen.move(y, n)
+ self.screen.move(y, n - 1)
self.request_refresh()
def do_ht(self):
@@ -498,12 +498,28 @@ class Terminal:
def do_invis(self):
self.screen.attron(curses.A_INVIS)
+ def do_rep(self, n):
+ for _ in range(n):
+ self.screen.addch(self.lastchar)
+ self.request_refresh()
+
+ def do_rmacs(self):
+ self.graphics_font = False
+ self.feed_reset()
+
+ def do_smacs(self):
+ self.graphics_font = True
+ self.feed_reset()
+
+ def do_smso(self):
+ self.screen.attron(curses.A_REVERSE)
+
def do_smul(self):
self.screen.attron(curses.A_UNDERLINE)
def do_vpa(self, n):
_, x = self.screen.getyx()
- self.screen.move(n, x)
+ self.screen.move(n - 1, x)
self.request_refresh()
def feed_reset(self):
@@ -577,7 +593,10 @@ class Terminal:
1: do_bold,
4: do_smul,
5: do_blink,
+ 7: do_smso,
8: do_invis,
+ 10: do_rmacs,
+ 11: do_smacs,
}
def feed_color(self, code):
func = self.feed_color_table.get(code)
@@ -586,14 +605,6 @@ class Terminal:
elif code == 0:
self.fg = self.bg = 0
self.screen.attrset(0)
- elif code == 7:
- self.screen.attron(curses.A_REVERSE)
- elif code == 10:
- self.graphics_font = False
- self.feed_reset()
- elif code == 11:
- self.graphics_font = True
- self.feed_reset()
elif 30 <= code <= 37:
self.fg = code - 30
self.screen.attron(get_color(self.fg, self.bg))
@@ -614,11 +625,14 @@ class Terminal:
ord('B'): do_cud,
ord('C'): do_cuf,
ord('D'): do_cub,
+ ord('G'): do_hpa,
ord('L'): do_il,
ord('M'): do_dl,
ord('P'): do_dch,
ord('X'): do_ech,
ord('@'): do_ich,
+ ord('b'): do_rep,
+ ord('d'): do_vpa,
}
def feed_esc_opbr_next(self, char, prev):
self.feed_reset()
@@ -641,14 +655,6 @@ class Terminal:
self.screen.move(0, 0)
self.screen.clrtobot()
self.request_refresh()
- elif char == ord(b'd') and prev.isdigit():
- self.do_vpa(int(prev) - 1)
- elif char == ord(b'b') and prev.isdigit():
- for _ in range(int(prev)):
- self.screen.addch(self.lastchar)
- self.request_refresh()
- elif char == ord(b'G') and prev.isdigit():
- self.do_hpa(int(prev) - 1)
elif char == ord(b'K') and prev == b'1':
self.do_el1()
else: