diff options
author | Søren Schmidt <sos@FreeBSD.org> | 1997-01-23 20:00:45 +0000 |
---|---|---|
committer | Søren Schmidt <sos@FreeBSD.org> | 1997-01-23 20:00:45 +0000 |
commit | 0d3f983ad2c2a2713dcd12030883d4859e9e1bb0 (patch) | |
tree | 66eb50c8246c21651c97642b9145b7a0f390441e /sys/isa/syscons.c | |
parent | 6a4c8990923df5aafac643805c6aa461adfbb44e (diff) |
Add save/restore cursor as pr SCO screen(HW) manpage.
Fix ESC[2J to not move cursor home
Clear mouse cutmarking on more cases.
Minor changes by me.
Submitted by: ache
Notes
Notes:
svn path=/head/; revision=21964
Diffstat (limited to 'sys/isa/syscons.c')
-rw-r--r-- | sys/isa/syscons.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/sys/isa/syscons.c b/sys/isa/syscons.c index 8d693d622541..7c6a5329643b 100644 --- a/sys/isa/syscons.c +++ b/sys/isa/syscons.c @@ -1723,6 +1723,16 @@ scan_esc(scr_stat *scp, u_char c) if (scp->term.esc == 1) { switch (c) { + case '7': /* Save cursor position */ + scp->saved_xpos = scp->xpos; + scp->saved_ypos = scp->ypos; + break; + + case '8': /* Restore saved cursor position */ + if (scp->saved_xpos >= 0 && scp->saved_ypos >= 0) + move_crsr(scp, scp->saved_xpos, scp->saved_ypos); + break; + case '[': /* Start ESC [ sequence */ scp->term.esc = 2; scp->term.last_param = -1; @@ -1831,6 +1841,7 @@ scan_esc(scr_stat *scp, u_char c) scp->scr_buf + scp->xsize * scp->ysize - scp->cursor_pos); mark_for_update(scp, scp->cursor_pos - scp->scr_buf); mark_for_update(scp, scp->xsize * scp->ysize); + remove_cutmarking(scp); break; case 1: /* clear from beginning of display to cursor */ fillw(scp->term.cur_color | scr_map[0x20], @@ -1838,9 +1849,13 @@ scan_esc(scr_stat *scp, u_char c) scp->cursor_pos - scp->scr_buf); mark_for_update(scp, 0); mark_for_update(scp, scp->cursor_pos - scp->scr_buf); + remove_cutmarking(scp); break; case 2: /* clear entire display */ - clear_screen(scp); + fillw(scp->term.cur_color | scr_map[0x20], scp->scr_buf, + scp->xsize * scp->ysize); + mark_all(scp); + remove_cutmarking(scp); break; } break; @@ -2049,6 +2064,16 @@ scan_esc(scr_stat *scp, u_char c) } break; + case 's': /* Save cursor position */ + scp->saved_xpos = scp->xpos; + scp->saved_ypos = scp->ypos; + break; + + case 'u': /* Restore saved cursor position */ + if (scp->saved_xpos >= 0 && scp->saved_ypos >= 0) + move_crsr(scp, scp->saved_xpos, scp->saved_ypos); + break; + case 'x': if (scp->term.num_param == 0) n = 0; @@ -2494,6 +2519,8 @@ init_scp(scr_stat *scp) scp->font_size = FONT_16; scp->xsize = COL; scp->ysize = ROW; + scp->xpos = scp->ypos = 0; + scp->saved_xpos = scp->saved_ypos = -1; scp->start = scp->xsize * scp->ysize; scp->end = 0; scp->term.esc = 0; |