// Set cursor position
case 'H':
if( Term->Flags & VT_FLAG_ALTBUF )
- Term->AltWritePos = args[0] + args[1]*Term->TextWidth;
+ Term->AltWritePos = args[1] + args[0]*Term->TextWidth;
else
- Term->WritePos = args[0] + args[1]*Term->TextWidth;
+ Term->WritePos = args[1] + args[0]*Term->TextWidth;
//Log_Debug("VTerm", "args = {%i, %i}", args[0], args[1]);
break;
-
// Scroll up `n` lines
case 'S':
tmp = -1;
Term->ViewPos += Term->TextWidth*tmp;
}
break;
-
+ // Set Mode (?)
+ case 'h':
+ if( argc >= 1 )
+ {
+ switch(args[0])
+ {
+ case 2: // Keyboard action mode
+ case 4: // Insert mode
+ case 12: // Send/receive
+ case 20: // Automatic newline
+ break;
+ default: // ?
+ break;
+ }
+ }
+ break;
+
// Set Font flags
case 'm':
for( ; argc--; )
Term->ScrollTop = args[0];
Term->ScrollHeight = args[1] - args[0];
break;
-
+
+ // Save cursor position
+ case 's':
+ if( argc != 0 ) break;
+ Term->SavedWritePos = (Term->Flags & VT_FLAG_ALTBUF) ? Term->AltWritePos : Term->WritePos;
+ break;
+
+ // Restore saved cursor position
+ case 'u':
+ if( argc != 0 ) break;
+ *((Term->Flags & VT_FLAG_ALTBUF) ? &Term->AltWritePos : &Term->WritePos) = Term->SavedWritePos;
+ break;
+
default:
Log_Warning("VTerm", "Unknown control sequence '\\x1B[%c'", CmdChar);
break;
case '\0':
// Ignore \0
break;
+ // Reset all attributes
+ case 'c':
+ Term->CurColour = DEFAULT_COLOUR;
+ Term->Flags = 0;
+ Term->ScrollHeight = 0;
+ break;
default:
//Log_Notice("VTerm", "TODO: Handle short escape codes");
{