File kdebase3-esc-seq-CNL-CPL.patch of Package kdebase3
diff -Naru kdebase-3.5.10_orig/konsole/konsole/TEScreen.cpp kdebase-3.5.10/konsole/konsole/TEScreen.cpp
--- kdebase-3.5.10_orig/konsole/konsole/TEScreen.cpp 2006-10-01 17:32:08.000000000 +0000
+++ kdebase-3.5.10/konsole/konsole/TEScreen.cpp 2022-01-07 08:03:00.775957826 +0000
@@ -187,6 +187,42 @@
cuX = QMIN(columns-1,cuX+n);
}
+void TEScreen::cursorNextLine(int n)
+//=CNL
+{
+ if (n == 0)
+ {
+ n = 1; // Default
+ }
+ cuX = 0;
+ while (n > 0)
+ {
+ if (cuY < lines - 1)
+ {
+ cuY += 1;
+ }
+ n--;
+ }
+}
+
+void TEScreen::cursorPrevLine(int n)
+//=CPL
+{
+ if (n == 0)
+ {
+ n = 1; // Default
+ }
+ cuX = 0;
+ while (n > 0)
+ {
+ if (cuY > 0)
+ {
+ cuY -= 1;
+ }
+ n--;
+ }
+}
+
/*!
Set top and bottom margin.
*/
diff -Naru kdebase-3.5.10_orig/konsole/konsole/TEScreen.h kdebase-3.5.10/konsole/konsole/TEScreen.h
--- kdebase-3.5.10_orig/konsole/konsole/TEScreen.h 2006-10-01 17:32:08.000000000 +0000
+++ kdebase-3.5.10/konsole/konsole/TEScreen.h 2022-01-07 08:03:55.303167814 +0000
@@ -56,6 +56,8 @@
void cursorDown (int n);
void cursorLeft (int n);
void cursorRight (int n);
+ void cursorNextLine(int n);
+ void cursorPrevLine(int n);
void setCursorY (int y);
void setCursorX (int x);
void setCursorYX (int y, int x);
diff -Naru kdebase-3.5.10_orig/konsole/konsole/TEmuVt102.cpp kdebase-3.5.10/konsole/konsole/TEmuVt102.cpp
--- kdebase-3.5.10_orig/konsole/konsole/TEmuVt102.cpp 2006-10-01 17:32:08.000000000 +0000
+++ kdebase-3.5.10/konsole/konsole/TEmuVt102.cpp 2022-01-07 08:07:33.740003292 +0000
@@ -267,7 +267,7 @@
for(i = 0; i < 256; i++) tbl[ i] = 0;
for(i = 0; i < 32; i++) tbl[ i] |= CTL;
for(i = 32; i < 256; i++) tbl[ i] |= CHR;
- for(s = (UINT8*)"@ABCDGHILMPSTXZcdfry"; *s; s++) tbl[*s] |= CPN;
+ for(s = (UINT8*)"@ABCDEFGHILMPSTXZcdfry"; *s; s++) tbl[*s] |= CPN;
// resize = \e[8;<row>;<col>t
for(s = (UINT8*)"t"; *s; s++) tbl[*s] |= CPS;
for(s = (UINT8*)"0123456789" ; *s; s++) tbl[*s] |= DIG;
@@ -621,6 +621,8 @@
case TY_CSI_PN('B' ) : scr->cursorDown (p ); break; //VT100
case TY_CSI_PN('C' ) : scr->cursorRight (p ); break; //VT100
case TY_CSI_PN('D' ) : scr->cursorLeft (p ); break; //VT100
+ case TY_CSI_PN('E' ) : scr->cursorNextLine (p ); break; //VT100
+ case TY_CSI_PN('F' ) : scr->cursorPrevLine (p ); break; //VT100
case TY_CSI_PN('G' ) : scr->setCursorX (p ); break; //LINUX
case TY_CSI_PN('H' ) : scr->setCursorYX (p, q); break; //VT100
case TY_CSI_PN('I' ) : scr->Tabulate (p ); break;