Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Oct 1995 11:09:53 +0200 (UKR)
From:      Sergey Shkonda <serg@bcs1.bcs.zaporizhzhe.ua>
To:        hackers@freebsd.org
Subject:   Some more patches to syscons
Message-ID:  <199510030909.AA06715@bcs1.bcs.zaporizhzhe.ua>

next in thread | raw e-mail | index | archive | help
    This patches errors in relative cursor moving when
  (xpos+dx, ypos+dy)  is not on screen. In this case cursor moving
  to left (rigt, top, bottom) of screen.

    ESC [ n H      now move to row n, column 1

--
Serg              |  Relcom:
(Sergey Shkonda)  |            serg@bcs1.bcs.zaporizhzhe.ua


*** syscons.c	Tue Oct  3 10:49:22 1995
--- syscons.c	Tue Oct  3 10:49:18 1995
***************
*** 1410,1440 ****
--- 1410,1448 ----
  
  	case 'A':   /* up n rows */
  	    n = scp->term.param[0]; if (n < 1) n = 1;
+ 	    if (n > scp->ypos) n = scp->ypos;
  	    move_crsr(scp, scp->xpos, scp->ypos - n);
  	    break;
  
  	case 'B':   /* down n rows */
+ 	case 'e':   /* move cursor n rows down */
  	    n = scp->term.param[0]; if (n < 1) n = 1;
+ 	    if (n + scp->ypos >= scp->ysize) n = scp->ysize - scp->ypos - 1;
  	    move_crsr(scp, scp->xpos, scp->ypos + n);
  	    break;
  
  	case 'C':   /* right n columns */
+ 	case 'a':   /* move cursor n columns to the right */
  	    n = scp->term.param[0]; if (n < 1) n = 1;
+ 	    if (n + scp->xpos >= scp->xsize) n = scp->xsize - scp->xpos -1;
  	    move_crsr(scp, scp->xpos + n, scp->ypos);
  	    break;
  
  	case 'D':   /* left n columns */
  	    n = scp->term.param[0]; if (n < 1) n = 1;
+ 	    if (n > scp->xpos) n = scp->xpos;
  	    move_crsr(scp, scp->xpos - n, scp->ypos);
  	    break;
  
  	case 'E':   /* cursor to start of line n lines down */
  	    n = scp->term.param[0]; if (n < 1) n = 1;
+ 	    if (scp->ypos + n >= scp->ysize) n = scp->ysize - scp->ypos - 1;
  	    move_crsr(scp, 0, scp->ypos + n);
  	    break;
  
  	case 'F':   /* cursor to start of line n lines up */
  	    n = scp->term.param[0]; if (n < 1) n = 1;
+ 	    if (n > scp->ypos) n = scp->ypos;
  	    move_crsr(scp, 0, scp->ypos - n);
  	    break;
  
***************
*** 1442,1449 ****
  	case 'H':
  	    if (scp->term.num_param == 0)
  		move_crsr(scp, 0, 0);
! 	    else if (scp->term.num_param == 2)
! 		move_crsr(scp, scp->term.param[1] - 1, scp->term.param[0] - 1);
  	    break;
  
  	case 'J':   /* Clear all or part of display */
--- 1450,1459 ----
  	case 'H':
  	    if (scp->term.num_param == 0)
  		move_crsr(scp, 0, 0);
! 	    else if (scp->term.num_param == 1)
! 		    move_crsr(scp, 0, scp->term.param[0] - 1);
! 		else if (scp->term.num_param == 2)
! 		    move_crsr(scp, scp->term.param[1] - 1, scp->term.param[0] - 1);
  	    break;
  
  	case 'J':   /* Clear all or part of display */
***************
*** 1611,1631 ****
  	    move_crsr(scp, n - 1, scp->ypos);
  	    break;
  
- 	case 'a':   /* move cursor n columns to the right */
- 	    n = scp->term.param[0]; if (n < 1)  n = 1;
- 	    move_crsr(scp, scp->xpos + n, scp->ypos);
- 	    break;
- 
  	case 'd':   /* move cursor to row n */
  	    n = scp->term.param[0]; if (n < 1)  n = 1;
  	    move_crsr(scp, scp->xpos, n - 1);
  	    break;
  
- 	case 'e':   /* move cursor n rows down */
- 	    n = scp->term.param[0]; if (n < 1)  n = 1;
- 	    move_crsr(scp, scp->xpos, scp->ypos + n);
- 	    break;
- 
  	case 'm':   /* change attribute */
  	    if (scp->term.num_param == 0) {
  		scp->term.cur_attr = scp->term.std_attr;
--- 1621,1631 ----
***************
*** 1724,1730 ****
  	    break;
  	}
      }
!     else if (scp->term.esc == 3) {
  	if (c >= '0' && c <= '9') {
  	    if (scp->term.num_param < MAX_ESC_PAR) {
  	    if (scp->term.last_param != scp->term.num_param) {
--- 1724,1730 ----
  	    break;
  	}
      }
!     else if (scp->term.esc == 3) {	/* ESC [ = */
  	if (c >= '0' && c <= '9') {
  	    if (scp->term.num_param < MAX_ESC_PAR) {
  	    if (scp->term.last_param != scp->term.num_param) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510030909.AA06715>