X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fdrv%2Fvterm_vt100.c;h=c054e75e79e351fa65efc1d49725d55c65cf119c;hb=ea487239a8b3632d13c6e4ec92d21f0fcd460bdd;hp=51666331efb1344e64b1413c64c5babee6055e57;hpb=a260c1b26118b7a16015d50c74e6edcbcb09784f;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/drv/vterm_vt100.c b/KernelLand/Kernel/drv/vterm_vt100.c index 51666331..c054e75e 100644 --- a/KernelLand/Kernel/drv/vterm_vt100.c +++ b/KernelLand/Kernel/drv/vterm_vt100.c @@ -139,7 +139,6 @@ void VT_int_ParseEscape_StandardLarge(tVTerm *Term, char CmdChar, int argc, int Term->WritePos = args[0] + args[1]*Term->TextWidth; //Log_Debug("VTerm", "args = {%i, %i}", args[0], args[1]); break; - // Scroll up `n` lines case 'S': tmp = -1; @@ -158,7 +157,23 @@ void VT_int_ParseEscape_StandardLarge(tVTerm *Term, char CmdChar, int argc, int 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--; ) @@ -212,7 +227,19 @@ void VT_int_ParseEscape_StandardLarge(tVTerm *Term, char CmdChar, int argc, int 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; @@ -329,6 +356,12 @@ int VT_int_ParseEscape(tVTerm *Term, const char *Buffer, size_t Bytes) 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"); {