svnno****@sourc*****
svnno****@sourc*****
2015年 11月 30日 (月) 18:30:34 JST
Revision: 6173 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6173 Author: doda Date: 2015-11-30 18:30:33 +0900 (Mon, 30 Nov 2015) Log Message: ----------- インデント修正。 Modified Paths: -------------- trunk/teraterm/teraterm/vtterm.c -------------- next part -------------- Modified: trunk/teraterm/teraterm/vtterm.c =================================================================== --- trunk/teraterm/teraterm/vtterm.c 2015-11-28 06:23:18 UTC (rev 6172) +++ trunk/teraterm/teraterm/vtterm.c 2015-11-30 09:30:33 UTC (rev 6173) @@ -1437,35 +1437,35 @@ void EscapeSequence(BYTE b) { - if (b<=US) - ParseControl(b); - else if ((b>=0x20) && (b<=0x2F)) - { - if (ICount<IntCharMax) ICount++; - IntChar[ICount] = b; - } - else if ((b>=0x30) && (b<=0x7E)) - ParseEscape(b); - else if ((b>=0x80) && (b<=0x9F)) - ParseControl(b); - else if (b>=0xA0) { - ParseMode=ModeFirst; - ParseFirst(b); - } + if (b<=US) + ParseControl(b); + else if ((b>=0x20) && (b<=0x2F)) { + if (ICount<IntCharMax) + ICount++; + IntChar[ICount] = b; + } + else if ((b>=0x30) && (b<=0x7E)) + ParseEscape(b); + else if ((b>=0x80) && (b<=0x9F)) + ParseControl(b); + else if (b>=0xA0) { + ParseMode=ModeFirst; + ParseFirst(b); + } - JustAfterESC = FALSE; + JustAfterESC = FALSE; } - void CSInsertCharacter() // ICH - { - // Insert space characters at cursor - int Count; +void CSInsertCharacter() // ICH +{ + // Insert space characters at cursor + int Count; - BuffUpdateScroll(); - if (Param[1]<1) Param[1] = 1; - Count = Param[1]; - BuffInsertSpace(Count); - } + BuffUpdateScroll(); + if (Param[1]<1) Param[1] = 1; + Count = Param[1]; + BuffInsertSpace(Count); +} void CSCursorUp(BOOL AffectMargin) // CUU / VPB { @@ -1521,30 +1521,30 @@ { BuffUpdateScroll(); switch (Param[1]) { - case 0: + case 0: // <ESC>[H(Cursor in left upper corner)\x82ɂ\xE6\x82\xE8\x83J\x81[\x83\\x83\x8B\x82\xAA\x8D\xB6\x8F\xE3\x8B\xF7\x82\xF0\x8Ew\x82\xB5\x82Ă\xA2\x82\xE9\x8Fꍇ\x81A // <ESC>[J\x82\xCD<ESC>[2J\x82Ɠ\xAF\x82\xB6\x82\xB1\x82ƂȂ̂ŁA\x8F\x88\x97\x9D\x82\xAF\x81A\x8C\xBB\x8Ds\x83o\x83b\x83t\x83@\x82\xF0\x83X\x83N\x83\x8D\x81[\x83\x8B\x83A\x83E\x83g // \x82\xB3\x82\xB9\x82\xE9\x82悤\x82ɂ\xB7\x82\xE9\x81B(2005.5.29 yutaka) // \x83R\x83\x93\x83t\x83B\x83O\x83\x8C\x81[\x83V\x83\x87\x83\x93\x82Ő\xE8\x91ւ\xA6\x82\xE7\x82\xEA\x82\xE9\x82悤\x82ɂ\xB5\x82\xBD\x81B(2008.5.3 yutaka) if (ts.ScrollWindowClearScreen && (CursorX == 0 && CursorY == 0)) { - // Erase screen (scroll out) + // Erase screen (scroll out) BuffClearScreen(); UpdateWindow(HVTWin); } else { - // Erase characters from cursor to the end of screen + // Erase characters from cursor to the end of screen BuffEraseCurToEnd(); } break; - case 1: - // Erase characters from home to cursor + case 1: + // Erase characters from home to cursor BuffEraseHomeToCur(); break; - case 2: - // Erase screen (scroll out) + case 2: + // Erase screen (scroll out) BuffClearScreen(); UpdateWindow(HVTWin); if (ClearThenHome && !isCursorOnStatusLine) { @@ -1563,136 +1563,144 @@ { BuffUpdateScroll(); switch (Param[1]) { - case 0: - // Erase characters from cursor to end + case 0: + // Erase characters from cursor to end BuffSelectedEraseCurToEnd(); break; - case 1: - // Erase characters from home to cursor + case 1: + // Erase characters from home to cursor BuffSelectedEraseHomeToCur(); break; - case 2: - // Erase entire screen + case 2: + // Erase entire screen BuffSelectedEraseScreen(); break; } } - void CSInsertLine() - { - // Insert lines at current position - int Count, YEnd; +void CSInsertLine() +{ + // Insert lines at current position + int Count, YEnd; - if (CursorY < CursorTop) return; - if (CursorY > CursorBottom) return; - if (Param[1]<1) Param[1] = 1; - Count = Param[1]; + if (CursorY < CursorTop) + return; + if (CursorY > CursorBottom) + return; + if (Param[1]<1) + Param[1] = 1; - YEnd = CursorBottom; - if (CursorY > YEnd) YEnd = NumOfLines-1-StatusLine; - if (Count > YEnd+1 - CursorY) Count = YEnd+1 - CursorY; + Count = Param[1]; - BuffInsertLines(Count,YEnd); - } + YEnd = CursorBottom; + if (CursorY > YEnd) + YEnd = NumOfLines-1-StatusLine; + if (Count > YEnd+1 - CursorY) + Count = YEnd+1 - CursorY; - void CSLineErase() - { - BuffUpdateScroll(); - switch (Param[1]) { - /* erase char from cursor to end of line */ - case 0: - BuffEraseCharsInLine(CursorX,NumOfColumns-CursorX); - break; - /* erase char from start of line to cursor */ - case 1: - BuffEraseCharsInLine(0,CursorX+1); - break; - /* erase entire line */ - case 2: - BuffEraseCharsInLine(0,NumOfColumns); - break; - } - } + BuffInsertLines(Count,YEnd); +} - void CSQSelLineErase() - { - BuffUpdateScroll(); - switch (Param[1]) { - /* erase char from cursor to end of line */ - case 0: - BuffSelectedEraseCharsInLine(CursorX,NumOfColumns-CursorX); - break; - /* erase char from start of line to cursor */ - case 1: - BuffSelectedEraseCharsInLine(0,CursorX+1); - break; - /* erase entire line */ - case 2: - BuffSelectedEraseCharsInLine(0,NumOfColumns); - break; - } - } +void CSLineErase() +{ + BuffUpdateScroll(); + switch (Param[1]) { + case 0: /* erase char from cursor to end of line */ + BuffEraseCharsInLine(CursorX,NumOfColumns-CursorX); + break; - void CSDeleteNLines() - // Delete lines from current line - { - int Count, YEnd; + case 1: /* erase char from start of line to cursor */ + BuffEraseCharsInLine(0,CursorX+1); + break; - if (CursorY < CursorTop) return; - if (CursorY > CursorBottom) return; - Count = Param[1]; - if (Count<1) Count = 1; + case 2: /* erase entire line */ + BuffEraseCharsInLine(0,NumOfColumns); + break; + } +} - YEnd = CursorBottom; - if (CursorY > YEnd) YEnd = NumOfLines-1-StatusLine; - if (Count > YEnd+1-CursorY) Count = YEnd+1-CursorY; - BuffDeleteLines(Count,YEnd); - } +void CSQSelLineErase() +{ + BuffUpdateScroll(); + switch (Param[1]) { + case 0: /* erase char from cursor to end of line */ + BuffSelectedEraseCharsInLine(CursorX,NumOfColumns-CursorX); + break; - void CSDeleteCharacter() // DCH - { - // Delete characters in current line from cursor + case 1: /* erase char from start of line to cursor */ + BuffSelectedEraseCharsInLine(0,CursorX+1); + break; - if (Param[1]<1) Param[1] = 1; - BuffUpdateScroll(); - BuffDeleteChars(Param[1]); - } + case 2: /* erase entire line */ + BuffSelectedEraseCharsInLine(0,NumOfColumns); + break; + } +} - void CSEraseCharacter() // ECH - { - if (Param[1]<1) Param[1] = 1; - BuffUpdateScroll(); - BuffEraseChars(Param[1]); - } +void CSDeleteNLines() +// Delete lines from current line +{ + int Count, YEnd; - void CSScrollUp() - { - if (Param[1]<1) Param[1] = 1; - BuffUpdateScroll(); - BuffRegionScrollUpNLines(Param[1]); - } + if (CursorY < CursorTop) + return; + if (CursorY > CursorBottom) + return; + Count = Param[1]; + if (Count<1) Count = 1; - void CSScrollDown() - { - if (Param[1]<1) Param[1] = 1; - BuffUpdateScroll(); - BuffRegionScrollDownNLines(Param[1]); - } + YEnd = CursorBottom; + if (CursorY > YEnd) + YEnd = NumOfLines-1-StatusLine; + if (Count > YEnd+1-CursorY) + Count = YEnd+1-CursorY; + BuffDeleteLines(Count,YEnd); +} - void CSForwardTab() - { - if (Param[1]<1) Param[1] = 1; - CursorForwardTab(Param[1], AutoWrapMode); - } +void CSDeleteCharacter() // DCH +{ +// Delete characters in current line from cursor - void CSBackwardTab() - { - if (Param[1]<1) Param[1] = 1; - CursorBackwardTab(Param[1]); - } + if (Param[1]<1) Param[1] = 1; + BuffUpdateScroll(); + BuffDeleteChars(Param[1]); +} +void CSEraseCharacter() // ECH +{ + if (Param[1]<1) Param[1] = 1; + BuffUpdateScroll(); + BuffEraseChars(Param[1]); +} + +void CSScrollUp() +{ + if (Param[1]<1) Param[1] = 1; + BuffUpdateScroll(); + BuffRegionScrollUpNLines(Param[1]); +} + +void CSScrollDown() +{ + if (Param[1]<1) Param[1] = 1; + BuffUpdateScroll(); + BuffRegionScrollDownNLines(Param[1]); +} + +void CSForwardTab() +{ + if (Param[1]<1) Param[1] = 1; + CursorForwardTab(Param[1], AutoWrapMode); +} + +void CSBackwardTab() +{ + if (Param[1]<1) Param[1] = 1; + CursorBackwardTab(Param[1]); +} + void CSMoveToColumnN() // CHA / HPA { if (Param[1]<1) @@ -1751,23 +1759,22 @@ MoveCursor(NewX, CursorY); } - void CSMoveToLineN() // VPA - { - if (Param[1]<1) Param[1] = 1; - if (RelativeOrgMode) - { - if (CursorTop+Param[1]-1 > CursorBottom) - MoveCursor(CursorX,CursorBottom); - else - MoveCursor(CursorX,CursorTop+Param[1]-1); - } - else { - if (Param[1] > NumOfLines-StatusLine) - MoveCursor(CursorX,NumOfLines-1-StatusLine); - else - MoveCursor(CursorX,Param[1]-1); - } - } +void CSMoveToLineN() // VPA +{ + if (Param[1]<1) Param[1] = 1; + if (RelativeOrgMode) { + if (CursorTop+Param[1]-1 > CursorBottom) + MoveCursor(CursorX,CursorBottom); + else + MoveCursor(CursorX,CursorTop+Param[1]-1); + } + else { + if (Param[1] > NumOfLines-StatusLine) + MoveCursor(CursorX,NumOfLines-1-StatusLine); + else + MoveCursor(CursorX,Param[1]-1); + } +} void CSMoveToXY() // CUP / HVP { @@ -1806,129 +1813,129 @@ MoveCursor(NewX, NewY); } - void CSDeleteTabStop() - { - ClearTabStop(Param[1]); - } +void CSDeleteTabStop() +{ + ClearTabStop(Param[1]); +} - void CS_h_Mode() // SM - { - switch (Param[1]) { - case 2: // KAM - KeybEnabled = FALSE; break; - case 4: // IRM - InsertMode = TRUE; break; - case 12: // SRM - ts.LocalEcho = 0; - if (cv.Ready && cv.TelFlag && (ts.TelEcho>0)) - TelChangeEcho(); - break; - case 20: // LF/NL - LFMode = TRUE; - ts.CRSend = IdCRLF; - cv.CRSend = IdCRLF; - break; - case 33: // WYSTCURM - if (ts.WindowFlag & WF_CURSORCHANGE) { - ts.NonblinkingCursor = TRUE; - ChangeCaret(); - } - break; - case 34: // WYULCURM - if (ts.WindowFlag & WF_CURSORCHANGE) { - ts.CursorShape = IdHCur; - ChangeCaret(); - } - break; - } - } +void CS_h_Mode() // SM +{ + switch (Param[1]) { + case 2: // KAM + KeybEnabled = FALSE; break; + case 4: // IRM + InsertMode = TRUE; break; + case 12: // SRM + ts.LocalEcho = 0; + if (cv.Ready && cv.TelFlag && (ts.TelEcho>0)) + TelChangeEcho(); + break; + case 20: // LF/NL + LFMode = TRUE; + ts.CRSend = IdCRLF; + cv.CRSend = IdCRLF; + break; + case 33: // WYSTCURM + if (ts.WindowFlag & WF_CURSORCHANGE) { + ts.NonblinkingCursor = TRUE; + ChangeCaret(); + } + break; + case 34: // WYULCURM + if (ts.WindowFlag & WF_CURSORCHANGE) { + ts.CursorShape = IdHCur; + ChangeCaret(); + } + break; + } +} - void CS_i_Mode() // MC - { - switch (Param[1]) { - /* print screen */ - // PrintEX -- TRUE: print screen - // FALSE: scroll region - case 0: - if (ts.TermFlag&TF_PRINTERCTRL) { - BuffPrint(! PrintEX); +void CS_i_Mode() // MC +{ + switch (Param[1]) { + /* print screen */ + // PrintEX -- TRUE: print screen + // FALSE: scroll region + case 0: + if (ts.TermFlag&TF_PRINTERCTRL) { + BuffPrint(! PrintEX); + } + break; + /* printer controller mode off */ + case 4: break; /* See PrnParseCS() */ + /* printer controller mode on */ + case 5: + if (ts.TermFlag&TF_PRINTERCTRL) { + if (! AutoPrintMode) + OpenPrnFile(); + DirectPrn = (ts.PrnDev[0]!=0); + PrinterMode = TRUE; + } + break; } - break; - /* printer controller mode off */ - case 4: break; /* See PrnParseCS() */ - /* printer controller mode on */ - case 5: - if (ts.TermFlag&TF_PRINTERCTRL) { - if (! AutoPrintMode) - OpenPrnFile(); - DirectPrn = (ts.PrnDev[0]!=0); - PrinterMode = TRUE; +} + +void CS_l_Mode() // RM +{ + switch (Param[1]) { + case 2: // KAM + KeybEnabled = TRUE; break; + case 4: // IRM + InsertMode = FALSE; break; + case 12: // SRM + ts.LocalEcho = 1; + if (cv.Ready && cv.TelFlag && (ts.TelEcho>0)) + TelChangeEcho(); + break; + case 20: // LF/NL + LFMode = FALSE; + ts.CRSend = IdCR; + cv.CRSend = IdCR; + break; + case 33: // WYSTCURM + if (ts.WindowFlag & WF_CURSORCHANGE) { + ts.NonblinkingCursor = FALSE; + ChangeCaret(); + } + break; + case 34: // WYULCURM + if (ts.WindowFlag & WF_CURSORCHANGE) { + ts.CursorShape = IdBlkCur; + ChangeCaret(); + } + break; } - break; - } - } +} - void CS_l_Mode() // RM - { - switch (Param[1]) { - case 2: // KAM - KeybEnabled = TRUE; break; - case 4: // IRM - InsertMode = FALSE; break; - case 12: // SRM - ts.LocalEcho = 1; - if (cv.Ready && cv.TelFlag && (ts.TelEcho>0)) - TelChangeEcho(); - break; - case 20: // LF/NL - LFMode = FALSE; - ts.CRSend = IdCR; - cv.CRSend = IdCR; - break; - case 33: // WYSTCURM - if (ts.WindowFlag & WF_CURSORCHANGE) { - ts.NonblinkingCursor = FALSE; - ChangeCaret(); - } - break; - case 34: // WYULCURM - if (ts.WindowFlag & WF_CURSORCHANGE) { - ts.CursorShape = IdBlkCur; - ChangeCaret(); - } - break; - } - } +void CS_n_Mode() // DSR +{ + char Report[16]; + int X, Y, len; - void CS_n_Mode() // DSR - { - char Report[16]; - int X, Y, len; - - switch (Param[1]) { - case 5: - /* Device Status Report -> Ready */ - SendCSIstr("0n", 0); - break; - case 6: - /* Cursor Position Report */ - if (isCursorOnStatusLine) { - X = CursorX + 1; - Y = 1; + switch (Param[1]) { + case 5: + /* Device Status Report -> Ready */ + SendCSIstr("0n", 0); + break; + case 6: + /* Cursor Position Report */ + if (isCursorOnStatusLine) { + X = CursorX + 1; + Y = 1; + } + else if (RelativeOrgMode) { + X = CursorX - CursorLeftM + 1; + Y = CursorY - CursorTop + 1; + } + else { + X = CursorX + 1; + Y = CursorY+1; + } + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "%u;%uR", CLocale, Y, X); + SendCSIstr(Report, len); + break; } - else if (RelativeOrgMode) { - X = CursorX - CursorLeftM + 1; - Y = CursorY - CursorTop + 1; - } - else { - X = CursorX + 1; - Y = CursorY+1; - } - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "%u;%uR", CLocale, Y, X); - SendCSIstr(Report, len); - break; - } - } +} void ParseSGRParams(PCharAttr attr, PCharAttr mask, int start) { @@ -1939,11 +1946,10 @@ mask = &dummy; } - for (i=start ; i<=NParam ; i++) - { + for (i=start ; i<=NParam ; i++) { P = Param[i]; switch (P) { - case 0: /* Clear all */ + case 0: /* Clear all */ attr->Attr = DefCharAttr.Attr; attr->Attr2 = DefCharAttr.Attr2 | (attr->Attr2&Attr2Protect); attr->Fore = DefCharAttr.Fore; @@ -1952,60 +1958,60 @@ mask->Attr2 = Attr2ColorMask; break; - case 1: /* Bold */ + case 1: /* Bold */ attr->Attr |= AttrBold; mask->Attr |= AttrBold; break; - case 4: /* Under line */ + case 4: /* Under line */ attr->Attr |= AttrUnder; mask->Attr |= AttrUnder; break; - case 5: /* Blink */ + case 5: /* Blink */ attr->Attr |= AttrBlink; mask->Attr |= AttrBlink; break; - case 7: /* Reverse */ + case 7: /* Reverse */ attr->Attr |= AttrReverse; mask->Attr |= AttrReverse; break; - case 22: /* Bold off */ + case 22: /* Bold off */ attr->Attr &= ~ AttrBold; mask->Attr |= AttrBold; break; - case 24: /* Under line off */ + case 24: /* Under line off */ attr->Attr &= ~ AttrUnder; mask->Attr |= AttrUnder; break; - case 25: /* Blink off */ + case 25: /* Blink off */ attr->Attr &= ~ AttrBlink; mask->Attr |= AttrBlink; break; - case 27: /* Reverse off */ + case 27: /* Reverse off */ attr->Attr &= ~ AttrReverse; mask->Attr |= AttrReverse; break; - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: /* text color */ + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: /* text color */ attr->Attr2 |= Attr2Fore; mask->Attr2 |= Attr2Fore; attr->Fore = P - 30; break; - case 38: /* text color (256color mode) */ + case 38: /* text color (256color mode) */ if (ts.ColorFlag & CF_XTERM256) { /* * Change foreground color. accept following formats. @@ -2031,7 +2037,7 @@ } } switch (P) { - case 2: + case 2: r = g = b = 0; if (NSParam[i] > 0) { if (j < NSParam[i]) { @@ -2060,7 +2066,7 @@ color = DispFindClosestColor(r, g, b); } break; - case 5: + case 5: if (NSParam[i] > 0) { if (j < NSParam[i]) { color = SubParam[i][++j]; @@ -2079,26 +2085,26 @@ } break; - case 39: /* Reset text color */ + case 39: /* Reset text color */ attr->Attr2 &= ~ Attr2Fore; mask->Attr2 |= Attr2Fore; attr->Fore = AttrDefaultFG; break; - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: /* Back color */ + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: /* Back color */ attr->Attr2 |= Attr2Back; mask->Attr2 |= Attr2Back; attr->Back = P - 40; break; - case 48: /* Back color (256color mode) */ + case 48: /* Back color (256color mode) */ if (ts.ColorFlag & CF_XTERM256) { color = -1; j = 0; @@ -2113,7 +2119,7 @@ } } switch (P) { - case 2: + case 2: r = g = b = 0; if (NSParam[i] > 0) { if (j < NSParam[i]) { @@ -2142,7 +2148,7 @@ color = DispFindClosestColor(r, g, b); } break; - case 5: + case 5: if (NSParam[i] > 0) { if (j < NSParam[i]) { color = SubParam[i][++j]; @@ -2161,20 +2167,20 @@ } break; - case 49: /* Reset back color */ + case 49: /* Reset back color */ attr->Attr2 &= ~ Attr2Back; mask->Attr2 |= Attr2Back; attr->Back = AttrDefaultBG; break; - case 90: - case 91: - case 92: - case 93: - case 94: - case 95: - case 96: - case 97: /* aixterm style text color */ + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: /* aixterm style text color */ if (ts.ColorFlag & CF_AIXTERM16) { attr->Attr2 |= Attr2Fore; mask->Attr2 |= Attr2Fore; @@ -2182,7 +2188,7 @@ } break; - case 100: + case 100: if (! (ts.ColorFlag & CF_AIXTERM16)) { /* Reset text and back color */ attr->Attr2 &= ~ (Attr2Fore | Attr2Back); @@ -2193,13 +2199,13 @@ } /* fall through to aixterm style back color */ - case 101: - case 102: - case 103: - case 104: - case 105: - case 106: - case 107: /* aixterm style back color */ + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: /* aixterm style back color */ if (ts.ColorFlag & CF_AIXTERM16) { attr->Attr2 |= Attr2Back; mask->Attr2 |= Attr2Back; @@ -2217,27 +2223,27 @@ BuffSetCurCharAttr(CharAttr); } - void CSSetScrollRegion() // DECSTBM - { - if (isCursorOnStatusLine) { - MoveCursor(0,CursorY); - return; - } - if (Param[1]<1) Param[1] =1; - if ((NParam < 2) | (Param[2]<1)) - Param[2] = NumOfLines-StatusLine; - Param[1]--; - Param[2]--; - if (Param[1] > NumOfLines-1-StatusLine) - Param[1] = NumOfLines-1-StatusLine; - if (Param[2] > NumOfLines-1-StatusLine) - Param[2] = NumOfLines-1-StatusLine; - if (Param[1] >= Param[2]) return; - CursorTop = Param[1]; - CursorBottom = Param[2]; - if (RelativeOrgMode) MoveCursor(0,CursorTop); - else MoveCursor(0,0); - } +void CSSetScrollRegion() // DECSTBM +{ + if (isCursorOnStatusLine) { + MoveCursor(0,CursorY); + return; + } + if (Param[1]<1) Param[1] =1; + if ((NParam < 2) | (Param[2]<1)) + Param[2] = NumOfLines-StatusLine; + Param[1]--; + Param[2]--; + if (Param[1] > NumOfLines-1-StatusLine) + Param[1] = NumOfLines-1-StatusLine; + if (Param[2] > NumOfLines-1-StatusLine) + Param[2] = NumOfLines-1-StatusLine; + if (Param[1] >= Param[2]) return; + CursorTop = Param[1]; + CursorBottom = Param[2]; + if (RelativeOrgMode) MoveCursor(0,CursorTop); + else MoveCursor(0,0); +} void CSSetLRScrollRegion() // DECSLRM { @@ -2269,1338 +2275,1340 @@ MoveCursor(0, 0); } - void CSSunSequence() /* Sun terminal private sequences */ - { - int x, y, len; - char Report[TitleBuffSize*2+10]; - PTStack t; +void CSSunSequence() /* Sun terminal private sequences */ +{ + int x, y, len; + char Report[TitleBuffSize*2+10]; + PTStack t; - switch (Param[1]) { - case 1: // De-iconify window - if (ts.WindowFlag & WF_WINDOWCHANGE) - DispShowWindow(WINDOW_RESTORE); - break; - case 2: // Iconify window - if (ts.WindowFlag & WF_WINDOWCHANGE) - DispShowWindow(WINDOW_MINIMIZE); - break; - case 3: // set window position - if (ts.WindowFlag & WF_WINDOWCHANGE) { - if (NParam < 2) Param[2] = 0; - if (NParam < 3) Param[3] = 0; - DispMoveWindow(Param[2], Param[3]); + switch (Param[1]) { + case 1: // De-iconify window + if (ts.WindowFlag & WF_WINDOWCHANGE) + DispShowWindow(WINDOW_RESTORE); + break; + case 2: // Iconify window + if (ts.WindowFlag & WF_WINDOWCHANGE) + DispShowWindow(WINDOW_MINIMIZE); + break; + case 3: // set window position + if (ts.WindowFlag & WF_WINDOWCHANGE) { + if (NParam < 2) Param[2] = 0; + if (NParam < 3) Param[3] = 0; + DispMoveWindow(Param[2], Param[3]); + } + break; + case 4: // set window size + if (ts.WindowFlag & WF_WINDOWCHANGE) { + if (NParam < 2) Param[2] = 0; + if (NParam < 3) Param[3] = 0; + DispResizeWin(Param[3], Param[2]); + } + break; + case 5: // Raise window + if (ts.WindowFlag & WF_WINDOWCHANGE) + DispShowWindow(WINDOW_RAISE); + break; + case 6: // Lower window + if (ts.WindowFlag & WF_WINDOWCHANGE) + DispShowWindow(WINDOW_LOWER); + break; + case 7: // Refresh window + if (ts.WindowFlag & WF_WINDOWCHANGE) + DispShowWindow(WINDOW_REFRESH); + break; + case 8: /* set terminal size */ + if (ts.WindowFlag & WF_WINDOWCHANGE) { + if ((Param[2]<=1) || (NParam<2)) Param[2] = 24; + if ((Param[3]<=1) || (NParam<3)) Param[3] = 80; + ChangeTerminalSize(Param[3],Param[2]); + } + break; + case 9: // Maximize/Restore window + if (ts.WindowFlag & WF_WINDOWCHANGE) { + if (NParam < 2 || Param[2] == 0) { + DispShowWindow(WINDOW_RESTORE); + } + else if (Param[2] == 1) { + DispShowWindow(WINDOW_MAXIMIZE); + } + } + break; + case 11: // Report window state + if (ts.WindowFlag & WF_WINDOWREPORT) { + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "%dt", CLocale, DispWindowIconified()?2:1); + SendCSIstr(Report, len); + } + break; + case 13: // Report window position + if (ts.WindowFlag & WF_WINDOWREPORT) { + DispGetWindowPos(&x, &y); + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "3;%u;%ut", CLocale, (unsigned int)x, (unsigned int)y); + SendCSIstr(Report, len); + } + break; + case 14: /* get window size */ + if (ts.WindowFlag & WF_WINDOWREPORT) { + DispGetWindowSize(&x, &y); + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "4;%d;%dt", CLocale, y, x); + SendCSIstr(Report, len); + } + break; + case 18: /* get terminal size */ + if (ts.WindowFlag & WF_WINDOWREPORT) { + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "8;%u;%ut", CLocale, + NumOfLines-StatusLine, NumOfColumns); + SendCSIstr(Report, len); + } + break; + case 19: // Report display size (character) + if (ts.WindowFlag & WF_WINDOWREPORT) { + DispGetRootWinSize(&x, &y); + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "9;%d;%dt", CLocale, y, x); + SendCSIstr(Report, len); + } + break; + case 20: // Report icon label + switch (ts.WindowFlag & WF_TITLEREPORT) { + case IdTitleReportIgnore: + // nothing to do + break; + case IdTitleReportAccept: + switch (ts.AcceptTitleChangeRequest) { + case IdTitleChangeRequestOff: + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s", CLocale, ts.Title); + break; + case IdTitleChangeRequestAhead: + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s %s", CLocale, cv.TitleRemote, ts.Title); + break; + case IdTitleChangeRequestLast: + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s %s", CLocale, ts.Title, cv.TitleRemote); + break; + default: + if (cv.TitleRemote[0] == 0) { + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s", CLocale, ts.Title); + } + else { + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s", CLocale, cv.TitleRemote); + } + } + SendOSCstr(Report, len, ST); + break; + default: // IdTitleReportEmpty: + SendOSCstr("L", 0, ST); + break; + } + break; + case 21: // Report window title + switch (ts.WindowFlag & WF_TITLEREPORT) { + case IdTitleReportIgnore: + // nothing to do + break; + case IdTitleReportAccept: + switch (ts.AcceptTitleChangeRequest) { + case IdTitleChangeRequestOff: + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s", CLocale, ts.Title); + break; + case IdTitleChangeRequestAhead: + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s %s", CLocale, cv.TitleRemote, ts.Title); + break; + case IdTitleChangeRequestLast: + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s %s", CLocale, ts.Title, cv.TitleRemote); + break; + default: + if (cv.TitleRemote[0] == 0) { + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s", CLocale, ts.Title); + } + else { + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s", CLocale, cv.TitleRemote); + } + } + SendOSCstr(Report, len, ST); + break; + default: // IdTitleReportEmpty: + SendOSCstr("l", 0, ST); + break; + } + break; + case 22: // Push Title + if (NParam < 2) { + Param[2] = 0; + } + switch (Param[2]) { + case 0: + case 1: + case 2: + if (ts.AcceptTitleChangeRequest && (t=malloc(sizeof(TStack))) != NULL) { + if ((t->title = _strdup(cv.TitleRemote)) != NULL) { + t->next = TitleStack; + TitleStack = t; + } + else { + free(t); + } + } + break; + } + break; + case 23: // Pop Title + if (NParam < 2) { + Param[2] = 0; + } + switch (Param[2]) { + case 0: + case 1: + case 2: + if (ts.AcceptTitleChangeRequest && TitleStack != NULL) { + t = TitleStack; + TitleStack = t->next; + strncpy_s(cv.TitleRemote, sizeof(cv.TitleRemote), t->title, _TRUNCATE); + ChangeTitle(); + free(t->title); + free(t); + } + break; + } } - break; - case 4: // set window size - if (ts.WindowFlag & WF_WINDOWCHANGE) { - if (NParam < 2) Param[2] = 0; - if (NParam < 3) Param[3] = 0; - DispResizeWin(Param[3], Param[2]); - } - break; - case 5: // Raise window - if (ts.WindowFlag & WF_WINDOWCHANGE) - DispShowWindow(WINDOW_RAISE); - break; - case 6: // Lower window - if (ts.WindowFlag & WF_WINDOWCHANGE) - DispShowWindow(WINDOW_LOWER); - break; - case 7: // Refresh window - if (ts.WindowFlag & WF_WINDOWCHANGE) - DispShowWindow(WINDOW_REFRESH); - break; - case 8: /* set terminal size */ - if (ts.WindowFlag & WF_WINDOWCHANGE) { - if ((Param[2]<=1) || (NParam<2)) Param[2] = 24; - if ((Param[3]<=1) || (NParam<3)) Param[3] = 80; - ChangeTerminalSize(Param[3],Param[2]); - } - break; - case 9: // Maximize/Restore window - if (ts.WindowFlag & WF_WINDOWCHANGE) { - if (NParam < 2 || Param[2] == 0) { - DispShowWindow(WINDOW_RESTORE); - } - else if (Param[2] == 1) { - DispShowWindow(WINDOW_MAXIMIZE); - } - } - break; - case 11: // Report window state - if (ts.WindowFlag & WF_WINDOWREPORT) { - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "%dt", CLocale, DispWindowIconified()?2:1); - SendCSIstr(Report, len); - } - break; - case 13: // Report window position - if (ts.WindowFlag & WF_WINDOWREPORT) { - DispGetWindowPos(&x, &y); - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "3;%u;%ut", CLocale, (unsigned int)x, (unsigned int)y); - SendCSIstr(Report, len); - } - break; - case 14: /* get window size */ - if (ts.WindowFlag & WF_WINDOWREPORT) { - DispGetWindowSize(&x, &y); - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "4;%d;%dt", CLocale, y, x); - SendCSIstr(Report, len); - } - break; - case 18: /* get terminal size */ - if (ts.WindowFlag & WF_WINDOWREPORT) { - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "8;%u;%ut", CLocale, - NumOfLines-StatusLine, NumOfColumns); - SendCSIstr(Report, len); - } - break; - case 19: // Report display size (character) - if (ts.WindowFlag & WF_WINDOWREPORT) { - DispGetRootWinSize(&x, &y); - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "9;%d;%dt", CLocale, y, x); - SendCSIstr(Report, len); - } - break; - case 20: // Report icon label - switch (ts.WindowFlag & WF_TITLEREPORT) { - case IdTitleReportIgnore: - // nothing to do - break; - case IdTitleReportAccept: - switch (ts.AcceptTitleChangeRequest) { - case IdTitleChangeRequestOff: - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s", CLocale, ts.Title); - break; - case IdTitleChangeRequestAhead: - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s %s", CLocale, cv.TitleRemote, ts.Title); - break; - case IdTitleChangeRequestLast: - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s %s", CLocale, ts.Title, cv.TitleRemote); - break; - default: - if (cv.TitleRemote[0] == 0) { - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s", CLocale, ts.Title); - } - else { - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "L%s", CLocale, cv.TitleRemote); - } - } - SendOSCstr(Report, len, ST); - break; - default: // IdTitleReportEmpty: - SendOSCstr("L", 0, ST); - break; - } - break; - case 21: // Report window title - switch (ts.WindowFlag & WF_TITLEREPORT) { - case IdTitleReportIgnore: - // nothing to do - break; - case IdTitleReportAccept: - switch (ts.AcceptTitleChangeRequest) { - case IdTitleChangeRequestOff: - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s", CLocale, ts.Title); - break; - case IdTitleChangeRequestAhead: - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s %s", CLocale, cv.TitleRemote, ts.Title); - break; - case IdTitleChangeRequestLast: - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s %s", CLocale, ts.Title, cv.TitleRemote); - break; - default: - if (cv.TitleRemote[0] == 0) { - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s", CLocale, ts.Title); - } - else { - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "l%s", CLocale, cv.TitleRemote); - } - } - SendOSCstr(Report, len, ST); - break; - default: // IdTitleReportEmpty: - SendOSCstr("l", 0, ST); - break; - } - break; - case 22: // Push Title - if (NParam < 2) { - Param[2] = 0; - } - switch (Param[2]) { - case 0: - case 1: - case 2: - if (ts.AcceptTitleChangeRequest && (t=malloc(sizeof(TStack))) != NULL) { - if ((t->title = _strdup(cv.TitleRemote)) != NULL) { - t->next = TitleStack; - TitleStack = t; - } - else { - free(t); - } - } - break; - } - break; - case 23: // Pop Title - if (NParam < 2) { - Param[2] = 0; - } - switch (Param[2]) { - case 0: - case 1: - case 2: - if (ts.AcceptTitleChangeRequest && TitleStack != NULL) { - t = TitleStack; - TitleStack = t->next; - strncpy_s(cv.TitleRemote, sizeof(cv.TitleRemote), t->title, _TRUNCATE); - ChangeTitle(); - free(t->title); - free(t); - } - break; - } - } - } +} - void CSLT(BYTE b) - { - switch (b) { - case 'r': - if (CanUseIME()) { - SetIMEOpenStatus(IMEstat); - } - break; +void CSLT(BYTE b) +{ + switch (b) { + case 'r': + if (CanUseIME()) { + SetIMEOpenStatus(IMEstat); + } + break; - case 's': - if (CanUseIME()) { - IMEstat = GetIMEOpenStatus(); - } - break; + case 's': + if (CanUseIME()) { + IMEstat = GetIMEOpenStatus(); + } + break; - case 't': - if (CanUseIME()) { - SetIMEOpenStatus(Param[1] == 1); + case 't': + if (CanUseIME()) { + SetIMEOpenStatus(Param[1] == 1); + } + break; } - break; - } - } +} - void CSEQ(BYTE b) - { - char Report[16]; - int len; +void CSEQ(BYTE b) +{ + char Report[16]; + int len; - switch (b) { - case 'c': /* Tertiary terminal report (Tertiary DA) */ - if (Param[1] < 1) { - len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "!|%8s", CLocale, ts.TerminalUID); - SendDCSstr(Report, len); + switch (b) { + case 'c': /* Tertiary terminal report (Tertiary DA) */ + if (Param[1] < 1) { + len = _snprintf_s_l(Report, sizeof(Report), _TRUNCATE, "!|%8s", CLocale, ts.TerminalUID); + SendDCSstr(Report, len); + } + break; } - break; - } - } +} - void CSGT(BYTE b) - { - switch (b) { - case 'c': /* second terminal report (Secondary DA) */ - if (Param[1] < 1) { - SendCSIstr(">32;278;0c", 0); /* VT382(>32) + xterm rev 278 */ - } - break; - case 'J': // IO-8256 terminal - if (Param[1]==3) { - if (Param[2] < 1 || NParam < 2) Param[2] = 1; - if (Param[3] < 1 || NParam < 3) Param[3] = 1; - if (Param[4] < 1 || NParam < 4) Param[4] = NumOfLines-StatusLine; - if (Param[5] < 1 || NParam < 5) Param[5] = NumOfColumns; - BuffEraseBox(Param[3]-1, Param[2]-1, Param[5]-1, Param[4]-1); - } - break; - case 'K': // IO-8256 terminal - switch (Param[1]) { - case 3: - if (Param[2] < 1 || NParam < 2) Param[2] = 1; - if (Param[3] < 1 || NParam < 3) Param[3] = 1; - BuffEraseCharsInLine(Param[2]-1, Param[3]-Param[2]+1); - break; - case 5: - if (NParam < 2) Param[2] = 0; - if (NParam < 3) Param[3] = 0; - switch (Param[2]) { - case 3: - case 4: - case 5: - case 6: // Draw Line - BuffDrawLine(CharAttr, Param[2], Param[3]); +void CSGT(BYTE b) +{ + switch (b) { + case 'c': /* second terminal report (Secondary DA) */ + if (Param[1] < 1) { + SendCSIstr(">32;278;0c", 0); /* VT382(>32) + xterm rev 278 */ + } break; + case 'J': // IO-8256 terminal + if (Param[1]==3) { + if (Param[2] < 1 || NParam < 2) Param[2] = 1; + if (Param[3] < 1 || NParam < 3) Param[3] = 1; + if (Param[4] < 1 || NParam < 4) Param[4] = NumOfLines-StatusLine; + if (Param[5] < 1 || NParam < 5) Param[5] = NumOfColumns; + BuffEraseBox(Param[3]-1, Param[2]-1, Param[5]-1, Param[4]-1); + } + break; + case 'K': // IO-8256 terminal + switch (Param[1]) { + case 3: + if (Param[2] < 1 || NParam < 2) Param[2] = 1; + if (Param[3] < 1 || NParam < 3) Param[3] = 1; + BuffEraseCharsInLine(Param[2]-1, Param[3]-Param[2]+1); + break; + case 5: + if (NParam < 2) Param[2] = 0; + if (NParam < 3) Param[3] = 0; + switch (Param[2]) { + case 3: + case 4: + case 5: + case 6: // Draw Line + BuffDrawLine(CharAttr, Param[2], Param[3]); + break; - case 12: // Text color - if ((Param[3]>=0) && (Param[3]<=7)) { - switch (Param[3]) { - case 3: CharAttr.Fore = IdBlue; break; - case 4: CharAttr.Fore = IdCyan; break; - case 5: CharAttr.Fore = IdYellow; break; - case 6: CharAttr.Fore = IdMagenta; break; - default: CharAttr.Fore = Param[3]; break; - } - CharAttr.Attr2 |= Attr2Fore; - BuffSetCurCharAttr(CharAttr); + case 12: // Text color + if ((Param[3]>=0) && (Param[3]<=7)) { + switch (Param[3]) { + case 3: CharAttr.Fore = IdBlue; break; + case 4: CharAttr.Fore = IdCyan; break; + case 5: CharAttr.Fore = IdYellow; break; + case 6: CharAttr.Fore = IdMagenta; break; + default: CharAttr.Fore = Param[3]; break; + } + CharAttr.Attr2 |= Attr2Fore; + BuffSetCurCharAttr(CharAttr); + } + break; + } + break; } break; - } - break; } - break; - } - } +} - void CSQExchangeColor() // DECSCNM / Visual Bell - { - COLORREF ColorRef; +void CSQExchangeColor() // DECSCNM / Visual Bell +{ + COLORREF ColorRef; - BuffUpdateScroll(); + BuffUpdateScroll(); - if (ts.ColorFlag & CF_REVERSECOLOR) { - ColorRef = ts.VTColor[0]; - ts.VTColor[0] = ts.VTReverseColor[0]; - ts.VTReverseColor[0] = ColorRef; - ColorRef = ts.VTColor[1]; - ts.VTColor[1] = ts.VTReverseColor[1]; - ts.VTReverseColor[1] = ColorRef; - } - else { - ColorRef = ts.VTColor[0]; - ts.VTColor[0] = ts.VTColor[1]; - ts.VTColor[1] = ColorRef; - } + if (ts.ColorFlag & CF_REVERSECOLOR) { + ColorRef = ts.VTColor[0]; + ts.VTColor[0] = ts.VTReverseColor[0]; + ts.VTReverseColor[0] = ColorRef; + ColorRef = ts.VTColor[1]; + ts.VTColor[1] = ts.VTReverseColor[1]; + ts.VTReverseColor[1] = ColorRef; + } + else { + ColorRef = ts.VTColor[0]; + ts.VTColor[0] = ts.VTColor[1]; + ts.VTColor[1] = ColorRef; + } - ColorRef = ts.VTBoldColor[0]; - ts.VTBoldColor[0] = ts.VTBoldColor[1]; - ts.VTBoldColor[1] = ColorRef; + ColorRef = ts.VTBoldColor[0]; + ts.VTBoldColor[0] = ts.VTBoldColor[1]; + ts.VTBoldColor[1] = ColorRef; - ColorRef = ts.VTBlinkColor[0]; - ts.VTBlinkColor[0] = ts.VTBlinkColor[1]; - ts.VTBlinkColor[1] = ColorRef; + ColorRef = ts.VTBlinkColor[0]; + ts.VTBlinkColor[0] = ts.VTBlinkColor[1]; + ts.VTBlinkColor[1] = ColorRef; - ColorRef = ts.URLColor[0]; - ts.URLColor[0] = ts.URLColor[1]; - ts.URLColor[1] = ColorRef; + ColorRef = ts.URLColor[0]; + ts.URLColor[0] = ts.URLColor[1]; + ts.URLColor[1] = ColorRef; - ts.ColorFlag ^= CF_REVERSEVIDEO; + ts.ColorFlag ^= CF_REVERSEVIDEO; #ifdef ALPHABLEND_TYPE2 - BGExchangeColor(); + BGExchangeColor(); #endif - DispChangeBackground(); - UpdateWindow(HVTWin); - } + DispChangeBackground(); + UpdateWindow(HVTWin); +} - void CSQChangeColumnMode(int width) // DECCOLM - { - ChangeTerminalSize(width, NumOfLines-StatusLine); - if ((ts.TermFlag & TF_CLEARONRESIZE) == 0) { - MoveCursor(0, 0); - BuffClearScreen(); - UpdateWindow(HVTWin); - } - } +void CSQChangeColumnMode(int width) // DECCOLM +{ + ChangeTerminalSize(width, NumOfLines-StatusLine); + if ((ts.TermFlag & TF_CLEARONRESIZE) == 0) { + MoveCursor(0, 0); + BuffClearScreen(); + UpdateWindow(HVTWin); + } +} - void CSQ_h_Mode() // DECSET - { - int i; +void CSQ_h_Mode() // DECSET +{ + int i; - for (i = 1 ; i<=NParam ; i++) - switch (Param[i]) { - case 1: AppliCursorMode = TRUE; break; // DECCKM - case 3: CSQChangeColumnMode(132); break; // DECCOLM - case 5: /* Reverse Video (DECSCNM) */ - if (!(ts.ColorFlag & CF_REVERSEVIDEO)) - CSQExchangeColor(); /* Exchange text/back color */ - break; - case 6: // DECOM - if (isCursorOnStatusLine) - MoveCursor(0,CursorY); - else { - RelativeOrgMode = TRUE; - MoveCursor(0,CursorTop); - } - break; - case 7: AutoWrapMode = TRUE; break; // DECAWM - case 8: AutoRepeatMode = TRUE; break; // DECARM - case 9: /* X10 Mouse Tracking */ - if (ts.MouseEventTracking) - MouseReportMode = IdMouseTrackX10; - break; - case 12: /* att610 cursor blinking */ - if (ts.WindowFlag & WF_CURSORCHANGE) { - ts.NonblinkingCursor = FALSE; - ChangeCaret(); - } - break; - case 19: PrintEX = TRUE; break; // DECPEX - case 25: DispEnableCaret(TRUE); break; // cursor on (DECTCEM) - case 38: // DECTEK - if (ts.AutoWinSwitch>0) - ChangeEmu = IdTEK; /* Enter TEK Mode */ - break; - case 47: // Alternate Screen Buffer - if ((ts.TermFlag & TF_ALTSCR) && !AltScr) { - BuffSaveScreen(); - AltScr = TRUE; - } - break; - case 59: - if (ts.Language==IdJapanese) - { /* kanji terminal */ - Gn[0] = IdASCII; - Gn[1] = IdKatakana; - Gn[2] = IdKatakana; - Gn[3] = IdKanji; - Glr[0] = 0; - if ((ts.KanjiCode==IdJIS) && - (ts.JIS7Katakana==0)) - Glr[1] = 2; // 8-bit katakana - else - Glr[1] = 3; - } - break; - case 66: AppliKeyMode = TRUE; break; // DECNKM - case 67: ts.BSKey = IdBS; break; // DECBKM - case 69: LRMarginMode = TRUE; break; // DECLRMM (DECVSSM) - case 1000: // Mouse Tracking - if (ts.MouseEventTracking) - MouseReportMode = IdMouseTrackVT200; - break; - case 1001: // Hilite Mouse Tracking - if (ts.MouseEventTracking) - MouseReportMode = IdMouseTrackVT200Hl; - break; - case 1002: // Button-Event Mouse Tracking - if (ts.MouseEventTracking) - MouseReportMode = IdMouseTrackBtnEvent; - break; - case 1003: // Any-Event Mouse Tracking - if (ts.MouseEventTracking) - MouseReportMode = IdMouseTrackAllEvent; - break; - case 1004: // Focus Report - if (ts.MouseEventTracking) - FocusReportMode = TRUE; - break; - case 1005: // Extended Mouse Tracking (UTF-8) - if (ts.MouseEventTracking) - MouseReportExtMode = IdMouseTrackExtUTF8; - break; - case 1006: // Extended Mouse Tracking (SGR) - if (ts.MouseEventTracking) - MouseReportExtMode = IdMouseTrackExtSGR; - break; - case 1015: // Extended Mouse Tracking (rxvt-unicode) - if (ts.MouseEventTracking) - MouseReportExtMode = IdMouseTrackExtURXVT; - break; - case 1047: // Alternate Screen Buffer - if ((ts.TermFlag & TF_ALTSCR) && !AltScr) { - BuffSaveScreen(); - AltScr = TRUE; - } - break; - case 1048: // Save Cursor Position (Alternate Screen Buffer) - if (ts.TermFlag & TF_ALTSCR) { - SaveCursor(); - } - break; - case 1049: // Alternate Screen Buffer - if ((ts.TermFlag & TF_ALTSCR) && !AltScr) { - SaveCursor(); - BuffSaveScreen(); - BuffClearScreen(); - AltScr = TRUE; - } - break; - case 2004: // Bracketed Paste Mode - BracketedPaste = TRUE; - break; - case 7727: // mintty Application Escape Mode - AppliEscapeMode = 1; - break; - case 7786: // Wheel to Cursor translation - if (ts.TranslateWheelToCursor) { - AcceptWheelToCursor = TRUE; - } - break; - case 8200: // ClearThenHome - ClearThenHome = TRUE; - break; - case 14001: // NetTerm mouse mode - if (ts.MouseEventTracking) - MouseReportMode = IdMouseTrackNetTerm; - break; - case 14002: // test Application Escape Mode 2 - case 14003: // test Application Escape Mode 3 - case 14004: // test Application Escape Mode 4 - AppliEscapeMode = Param[i] - 14000; - break; + for (i = 1 ; i<=NParam ; i++) { + switch (Param[i]) { + case 1: AppliCursorMode = TRUE; break; // DECCKM + case 3: CSQChangeColumnMode(132); break; // DECCOLM + case 5: /* Reverse Video (DECSCNM) */ + if (!(ts.ColorFlag & CF_REVERSEVIDEO)) + CSQExchangeColor(); /* Exchange text/back color */ + break; + case 6: // DECOM + if (isCursorOnStatusLine) + MoveCursor(0,CursorY); + else { + RelativeOrgMode = TRUE; + MoveCursor(0,CursorTop); + } + break; + case 7: AutoWrapMode = TRUE; break; // DECAWM + case 8: AutoRepeatMode = TRUE; break; // DECARM + case 9: /* X10 Mouse Tracking */ + if (ts.MouseEventTracking) + MouseReportMode = IdMouseTrackX10; + break; + case 12: /* att610 cursor blinking */ + if (ts.WindowFlag & WF_CURSORCHANGE) { + ts.NonblinkingCursor = FALSE; + ChangeCaret(); + } + break; + case 19: PrintEX = TRUE; break; // DECPEX + case 25: DispEnableCaret(TRUE); break; // cursor on (DECTCEM) + case 38: // DECTEK + if (ts.AutoWinSwitch>0) + ChangeEmu = IdTEK; /* Enter TEK Mode */ + break; + case 47: // Alternate Screen Buffer + if ((ts.TermFlag & TF_ALTSCR) && !AltScr) { + BuffSaveScreen(); + AltScr = TRUE; + } + break; + case 59: + if (ts.Language==IdJapanese) { + /* kanji terminal */ + Gn[0] = IdASCII; + Gn[1] = IdKatakana; + Gn[2] = IdKatakana; + Gn[3] = IdKanji; + Glr[0] = 0; + if ((ts.KanjiCode==IdJIS) && + (ts.JIS7Katakana==0)) + Glr[1] = 2; // 8-bit katakana + else + Glr[1] = 3; + } + break; + case 66: AppliKeyMode = TRUE; break; // DECNKM + case 67: ts.BSKey = IdBS; break; // DECBKM + case 69: LRMarginMode = TRUE; break; // DECLRMM (DECVSSM) + case 1000: // Mouse Tracking + if (ts.MouseEventTracking) + MouseReportMode = IdMouseTrackVT200; + break; + case 1001: // Hilite Mouse Tracking + if (ts.MouseEventTracking) + MouseReportMode = IdMouseTrackVT200Hl; + break; + case 1002: // Button-Event Mouse Tracking + if (ts.MouseEventTracking) + MouseReportMode = IdMouseTrackBtnEvent; + break; + case 1003: // Any-Event Mouse Tracking + if (ts.MouseEventTracking) + MouseReportMode = IdMouseTrackAllEvent; + break; + case 1004: // Focus Report + if (ts.MouseEventTracking) + FocusReportMode = TRUE; + break; + case 1005: // Extended Mouse Tracking (UTF-8) + if (ts.MouseEventTracking) + MouseReportExtMode = IdMouseTrackExtUTF8; + break; + case 1006: // Extended Mouse Tracking (SGR) + if (ts.MouseEventTracking) + MouseReportExtMode = IdMouseTrackExtSGR; + break; + case 1015: // Extended Mouse Tracking (rxvt-unicode) + if (ts.MouseEventTracking) + MouseReportExtMode = IdMouseTrackExtURXVT; + break; + case 1047: // Alternate Screen Buffer + if ((ts.TermFlag & TF_ALTSCR) && !AltScr) { + BuffSaveScreen(); + AltScr = TRUE; + } + break; + case 1048: // Save Cursor Position (Alternate Screen Buffer) + if (ts.TermFlag & TF_ALTSCR) { + SaveCursor(); + } + break; + case 1049: // Alternate Screen Buffer + if ((ts.TermFlag & TF_ALTSCR) && !AltScr) { + SaveCursor(); + BuffSaveScreen(); + BuffClearScreen(); + AltScr = TRUE; + } + break; + case 2004: // Bracketed Paste Mode + BracketedPaste = TRUE; + break; + case 7727: // mintty Application Escape Mode + AppliEscapeMode = 1; + break; + case 7786: // Wheel to Cursor translation + if (ts.TranslateWheelToCursor) { + AcceptWheelToCursor = TRUE; + } + break; + case 8200: // ClearThenHome + ClearThenHome = TRUE; + break; + case 14001: // NetTerm mouse mode + if (ts.MouseEventTracking) + MouseReportMode = IdMouseTrackNetTerm; + break; + case 14002: // test Application Escape Mode 2 + case 14003: // test Application Escape Mode 3 + case 14004: // test Application Escape Mode 4 + AppliEscapeMode = Param[i] - 14000; + break; + } } - } +} - void CSQ_i_Mode() // DECMC - { - switch (Param[1]) { - case 1: - if (ts.TermFlag&TF_PRINTERCTRL) { - OpenPrnFile(); - BuffDumpCurrentLine(LF); - if (! AutoPrintMode) - ClosePrnFile(); - } - break; - /* auto print mode off */ - case 4: - if (AutoPrintMode) - { - ClosePrnFile(); - AutoPrintMode = FALSE; - } - break; - /* auto print mode on */ - case 5: - if (ts.TermFlag&TF_PRINTERCTRL) { - if (! AutoPrintMode) - { - OpenPrnFile(); - AutoPrintMode = TRUE; - } - } - break; - } - } +void CSQ_i_Mode() // DECMC +{ + switch (Param[1]) { + case 1: + if (ts.TermFlag&TF_PRINTERCTRL) { + OpenPrnFile(); + BuffDumpCurrentLine(LF); + if (! AutoPrintMode) + ClosePrnFile(); + } + break; + /* auto print mode off */ + case 4: + if (AutoPrintMode) { + ClosePrnFile(); + AutoPrintMode = FALSE; + } + break; + /* auto print mode on */ + case 5: + if (ts.TermFlag&TF_PRINTERCTRL) { + if (! AutoPrintMode) { + OpenPrnFile(); + AutoPrintMode = TRUE; + } + } + break; + } +} - void CSQ_l_Mode() // DECRST - { - int i; +void CSQ_l_Mode() // DECRST +{ + int i; - for (i = 1 ; i <= NParam ; i++) - switch (Param[i]) { - case 1: AppliCursorMode = FALSE; break; // DECCKM - case 3: CSQChangeColumnMode(80); break; // DECCOLM - case 5: /* Normal Video (DECSCNM) */ - if (ts.ColorFlag & CF_REVERSEVIDEO) - CSQExchangeColor(); /* Exchange text/back color */ - break; - case 6: // DECOM - if (isCursorOnStatusLine) - MoveCursor(0,CursorY); - else { - RelativeOrgMode = FALSE; - MoveCursor(0,0); - } - break; - case 7: AutoWrapMode = FALSE; break; // DECAWM - case 8: AutoRepeatMode = FALSE; break; // DECARM - case 9: MouseReportMode = IdMouseTrackNone; break; /* X10 Mouse Tracking */ - case 12: /* att610 cursor blinking */ - if (ts.WindowFlag & WF_CURSORCHANGE) { - ts.NonblinkingCursor = TRUE; - ChangeCaret(); - } - break; - case 19: PrintEX = FALSE; break; // DECPEX - case 25: DispEnableCaret(FALSE); break; // cursor off (DECTCEM) - case 47: // Alternate Screen Buffer - if ((ts.TermFlag & TF_ALTSCR) && AltScr) { - BuffRestoreScreen(); - AltScr = FALSE; - } - break; - case 59: - if (ts.Language==IdJapanese) - { /* katakana terminal */ - Gn[0] = IdASCII; - Gn[1] = IdKatakana; - Gn[2] = IdKatakana; - Gn[3] = IdKanji; - Glr[0] = 0; - if ((ts.KanjiCode==IdJIS) && - (ts.JIS7Katakana==0)) - Glr[1] = 2; // 8-bit katakana - else - Glr[1] = 3; - } - break; - case 66: AppliKeyMode = FALSE; break; // DECNKM - case 67: ts.BSKey = IdDEL; break; // DECBKM - case 69: // DECLRMM (DECVSSM) - LRMarginMode = FALSE; - CursorLeftM = 0; - CursorRightM = NumOfColumns - 1; - break; - case 1000: // Mouse Tracking - case 1001: // Hilite Mouse Tracking - case 1002: // Button-Event Mouse Tracking - case 1003: // Any-Event Mouse Tracking - MouseReportMode = IdMouseTrackNone; - break; - case 1004: // Focus Report - FocusReportMode = FALSE; - break; - case 1005: // Extended Mouse Tracking (UTF-8) - case 1006: // Extended Mouse Tracking (SGR) - case 1015: // Extended Mouse Tracking (rxvt-unicode) - MouseReportExtMode = IdMouseTrackExtNone; - break; - case 1047: // Alternate Screen Buffer - if ((ts.TermFlag & TF_ALTSCR) && AltScr) { - BuffClearScreen(); - BuffRestoreScreen(); - AltScr = FALSE; - } - break; - case 1048: // Save Cursor Position (Alternate Screen Buffer) - if (ts.TermFlag & TF_ALTSCR) { - RestoreCursor(); - } - break; - case 1049: // Alternate Screen Buffer - if ((ts.TermFlag & TF_ALTSCR) && AltScr) { - BuffClearScreen(); - BuffRestoreScreen(); - AltScr = FALSE; - RestoreCursor(); - } - break; - case 2004: // Bracketed Paste Mode - BracketedPaste = FALSE; - break; - case 7727: // mintty Application Escape Mode - AppliEscapeMode = 0; - break; - case 7786: // Wheel to Cursor translation - AcceptWheelToCursor = FALSE; - break; - case 8200: // ClearThenHome - ClearThenHome = FALSE; - break; - case 14001: // NetTerm mouse mode - MouseReportMode = IdMouseTrackNone; - break; - case 14002: // test Application Escape Mode 2 - case 14003: // test Application Escape Mode 3 - case 14004: // test Application Escape Mode 4 - AppliEscapeMode = 0; - break; + for (i = 1 ; i <= NParam ; i++) { + switch (Param[i]) { + case 1: AppliCursorMode = FALSE; break; // DECCKM + case 3: CSQChangeColumnMode(80); break; // DECCOLM + case 5: /* Normal Video (DECSCNM) */ + if (ts.ColorFlag & CF_REVERSEVIDEO) + CSQExchangeColor(); /* Exchange text/back color */ + break; + case 6: // DECOM + if (isCursorOnStatusLine) + MoveCursor(0,CursorY); + else { + RelativeOrgMode = FALSE; + MoveCursor(0,0); + } + break; + case 7: AutoWrapMode = FALSE; break; // DECAWM + case 8: AutoRepeatMode = FALSE; break; // DECARM + case 9: MouseReportMode = IdMouseTrackNone; break; /* X10 Mouse Tracking */ + case 12: /* att610 cursor blinking */ + if (ts.WindowFlag & WF_CURSORCHANGE) { + ts.NonblinkingCursor = TRUE; + ChangeCaret(); + } + break; + case 19: PrintEX = FALSE; break; // DECPEX + case 25: DispEnableCaret(FALSE); break; // cursor off (DECTCEM) + case 47: // Alternate Screen Buffer + if ((ts.TermFlag & TF_ALTSCR) && AltScr) { + BuffRestoreScreen(); + AltScr = FALSE; + } + break; + case 59: + if (ts.Language==IdJapanese) { + /* katakana terminal */ + Gn[0] = IdASCII; + Gn[1] = IdKatakana; + Gn[2] = IdKatakana; + Gn[3] = IdKanji; + Glr[0] = 0; + if ((ts.KanjiCode==IdJIS) && + (ts.JIS7Katakana==0)) + Glr[1] = 2; // 8-bit katakana + else + Glr[1] = 3; + } + break; + case 66: AppliKeyMode = FALSE; break; // DECNKM + case 67: ts.BSKey = IdDEL; break; // DECBKM + case 69: // DECLRMM (DECVSSM) + LRMarginMode = FALSE; + CursorLeftM = 0; + CursorRightM = NumOfColumns - 1; + break; + case 1000: // Mouse Tracking + case 1001: // Hilite Mouse Tracking + case 1002: // Button-Event Mouse Tracking + case 1003: // Any-Event Mouse Tracking + MouseReportMode = IdMouseTrackNone; + break; + case 1004: // Focus Report + FocusReportMode = FALSE; + break; + case 1005: // Extended Mouse Tracking (UTF-8) + case 1006: // Extended Mouse Tracking (SGR) + case 1015: // Extended Mouse Tracking (rxvt-unicode) + MouseReportExtMode = IdMouseTrackExtNone; + break; + case 1047: // Alternate Screen Buffer + if ((ts.TermFlag & TF_ALTSCR) && AltScr) { + BuffClearScreen(); + BuffRestoreScreen(); + AltScr = FALSE; + } + break; + case 1048: // Save Cursor Position (Alternate Screen Buffer) + if (ts.TermFlag & TF_ALTSCR) { + RestoreCursor(); + } + break; + case 1049: // Alternate Screen Buffer + if ((ts.TermFlag & TF_ALTSCR) && AltScr) { + BuffClearScreen(); + BuffRestoreScreen(); + AltScr = FALSE; + RestoreCursor(); + } + break; + case 2004: // Bracketed Paste Mode + BracketedPaste = FALSE; + break; + case 7727: // mintty Application Escape Mode + AppliEscapeMode = 0; + break; + case 7786: // Wheel to Cursor translation + AcceptWheelToCursor = FALSE; + break; + case 8200: // ClearThenHome + ClearThenHome = FALSE; + break; + case 14001: // NetTerm mouse mode + MouseReportMode = IdMouseTrackNone; + break; + case 14002: // test Application Escape Mode 2 + case 14003: // test Application Escape Mode 3 + case 14004: // test Application Escape Mode 4 + AppliEscapeMode = 0; + break; + } } - } +} - void CSQ_n_Mode() // DECDSR - { - switch (Param[1]) { - case 53: - case 55: - /* Locator Device Status Report -> Ready */ - SendCSIstr("?50n", 0); - break; - } - } +void CSQ_n_Mode() // DECDSR +{ + switch (Param[1]) { + case 53: + case 55: + /* Locator Device Status Report -> Ready */ + SendCSIstr("?50n", 0); + break; + } +} - void CSQuest(BYTE b) - { - switch (b) { - case 'J': CSQSelScreenErase(); break; // DECSED - case 'K': CSQSelLineErase(); break; // DECSEL - case 'h': CSQ_h_Mode(); break; // DECSET - case 'i': CSQ_i_Mode(); break; // DECMC - case 'l': CSQ_l_Mode(); break; // DECRST - case 'n': CSQ_n_Mode(); break; // DECDSR - } - } +void CSQuest(BYTE b) +{ + switch (b) { + case 'J': CSQSelScreenErase(); break; // DECSED + case 'K': CSQSelLineErase(); break; // DECSEL + case 'h': CSQ_h_Mode(); break; // DECSET + case 'i': CSQ_i_Mode(); break; // DECMC + case 'l': CSQ_l_Mode(); break; // DECRST + case 'n': CSQ_n_Mode(); break; // DECDSR + } +} - void SoftReset() - // called by software-reset escape sequence handler - { - UpdateStr(); - AutoRepeatMode = TRUE; - DispEnableCaret(TRUE); // cursor on - InsertMode = FALSE; - RelativeOrgMode = FALSE; - AppliKeyMode = FALSE; - AppliCursorMode = FALSE; - AppliEscapeMode = FALSE; - AcceptWheelToCursor = ts.TranslateWheelToCursor; - if (isCursorOnStatusLine) - MoveToMainScreen(); - CursorTop = 0; - CursorBottom = NumOfLines-1-StatusLine; - CursorLeftM = 0; - CursorRightM = NumOfColumns - 1; - ResetCharSet(); +void SoftReset() +// called by software-reset escape sequence handler +{ + UpdateStr(); + AutoRepeatMode = TRUE; + DispEnableCaret(TRUE); // cursor on + InsertMode = FALSE; + RelativeOrgMode = FALSE; + AppliKeyMode = FALSE; + AppliCursorMode = FALSE; + AppliEscapeMode = FALSE; + AcceptWheelToCursor = ts.TranslateWheelToCursor; + if (isCursorOnStatusLine) + MoveToMainScreen(); + CursorTop = 0; + CursorBottom = NumOfLines-1-StatusLine; + CursorLeftM = 0; + CursorRightM = NumOfColumns - 1; + ResetCharSet(); - /* Attribute */ - CharAttr = DefCharAttr; - Special = FALSE; - BuffSetCurCharAttr(CharAttr); + /* Attribute */ + CharAttr = DefCharAttr; + Special = FALSE; + BuffSetCurCharAttr(CharAttr); - // status buffers - ResetCurSBuffer(); + // status buffers + ResetCurSBuffer(); - // Saved IME status - IMEstat = FALSE; - } + // Saved IME status + IMEstat = FALSE; +} - void CSExc(BYTE b) - { - switch (b) { - case 'p': - /* Software reset */ - SoftReset(); - break; - } - } +void CSExc(BYTE b) +{ + switch (b) { + case 'p': + /* Software reset */ + SoftReset(); + break; + } +} - void CSDouble(BYTE b) - { - switch (b) { - case 'p': // DECSCL - /* Select terminal mode (software reset) */ - SoftReset(); - if (NParam > 0) { - ChangeTerminalID(); - if (Param[1] >= 61 && Param[1] <= 65) { - if (VTlevel > Param[1] - 60) { - VTlevel = Param[1] - 60; - } - } - else { - VTlevel = 1; - } +void CSDouble(BYTE b) +{ + switch (b) { + case 'p': // DECSCL + /* Select terminal mode (software reset) */ + SoftReset(); + if (NParam > 0) { + ChangeTerminalID(); + if (Param[1] >= 61 && Param[1] <= 65) { + if (VTlevel > Param[1] - 60) { + VTlevel = Param[1] - 60; + } + } + else { + VTlevel = 1; + } - if (VTlevel < 2 || (NParam > 1 && Param[2] == 1)) - Send8BitMode = FALSE; - else - Send8BitMode = TRUE; - } - break; + if (VTlevel < 2 || (NParam > 1 && Param[2] == 1)) + Send8BitMode = FALSE; + else + Send8BitMode = TRUE; + } + break; - case 'q': // DECSCA - switch (Param[1]) { - case 0: - case 2: - CharAttr.Attr2 &= ~Attr2Protect; - BuffSetCurCharAttr(CharAttr); - break; - case 1: - CharAttr.Attr2 |= Attr2Protect; - BuffSetCurCharAttr(CharAttr); - break; - default: - /* nothing to do */ - break; + case 'q': // DECSCA + switch (Param[1]) { + case 0: + case 2: + CharAttr.Attr2 &= ~Attr2Protect; + BuffSetCurCharAttr(CharAttr); + break; + case 1: + CharAttr.Attr2 |= Attr2Protect; + BuffSetCurCharAttr(CharAttr); + break; + default: + /* nothing to do */ + break; + } + break; } - break; - } - } +} - void CSDolRequestMode() - { - char buff[256]; - char *pp; - int len, resp = 0; +void CSDolRequestMode() +{ + char buff[256]; + char *pp; + int len, resp = 0; - if (NParam == 0) - Param[1] = 0; + if (NParam == 0) + Param[1] = 0; - switch (Prv) { - case 0: /* ANSI Mode */ - resp = 4; - pp = ""; - switch (Param[1]) { - case 2: // KAM - if (KeybEnabled) - resp = 2; - else - resp = 1; - break; - case 4: // IRM - if (InsertMode) - resp = 1; - else - resp = 2; - break; - case 12: // SRM - if (ts.LocalEcho) - resp = 2; - else - resp = 1; - break; - case 20: // LNM - if (LFMode) - resp = 1; - else - resp = 2; - break; - case 33: // WYSTCURM - if (ts.NonblinkingCursor) - resp = 1; - else - resp = 2; - if ((ts.WindowFlag & WF_CURSORCHANGE) == 0) - resp += 2; - break; - case 34: // WYULCURM - if (ts.CursorShape == IdHCur) - resp = 1; - else - resp = 2; - if ((ts.WindowFlag & WF_CURSORCHANGE) == 0) - resp += 2; - break; - } - break; + switch (Prv) { + case 0: /* ANSI Mode */ + resp = 4; + pp = ""; + switch (Param[1]) { + case 2: // KAM + if (KeybEnabled) + resp = 2; + else + resp = 1; + break; + case 4: // IRM + if (InsertMode) + resp = 1; + else + resp = 2; + break; + case 12: // SRM + if (ts.LocalEcho) + resp = 2; + else + resp = 1; + break; + case 20: // LNM + if (LFMode) + resp = 1; + else + resp = 2; + break; + case 33: // WYSTCURM + if (ts.NonblinkingCursor) + resp = 1; + else + resp = 2; + if ((ts.WindowFlag & WF_CURSORCHANGE) == 0) + resp += 2; + break; + case 34: // WYULCURM + if (ts.CursorShape == IdHCur) + resp = 1; + else + resp = 2; + if ((ts.WindowFlag & WF_CURSORCHANGE) == 0) + resp += 2; + break; + } + break; - case '?': /* DEC Mode */ - pp = "?"; - switch (Param[1]) { - case 1: // DECCKM - if (AppliCursorMode) - resp = 1; - else - resp = 2; - break; - case 3: // DECCOLM - if (NumOfColumns == 132) - resp = 1; - else - resp = 2; - break; - case 5: // DECSCNM - if (ts.ColorFlag & CF_REVERSEVIDEO) - resp = 1; - else - resp = 2; - break; - case 6: // DECOM - if (RelativeOrgMode) - resp = 1; - else - resp = 2; - break; - case 7: // DECAWM - if (AutoWrapMode) - resp = 1; - else - resp = 2; - break; - case 8: // DECARM - if (AutoRepeatMode) - resp = 1; - else - resp = 2; - break; - case 9: // XT_MSE_X10 -- X10 Mouse Tracking - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportMode == IdMouseTrackX10) - resp = 1; - else - resp = 2; - break; - case 12: // XT_CBLINK -- att610 cursor blinking - if (ts.NonblinkingCursor) - resp = 2; - else - resp = 1; - if ((ts.WindowFlag & WF_CURSORCHANGE) == 0) - resp += 2; - break; - case 19: // DECPEX - if (PrintEX) - resp = 1; - else - resp = 2; - break; - case 25: // DECTCEM - if (IsCaretEnabled()) - resp = 1; - else - resp = 2; - break; - case 38: // DECTEK - resp = 4; - break; - case 47: // XT_ALTSCRN -- Alternate Screen / (DECGRPM) - if ((ts.TermFlag & TF_ALTSCR) == 0) - resp = 4; - else if (AltScr) - resp = 1; - else - resp = 2; - break; - case 59: // DECKKDM - if (ts.Language!=IdJapanese) - resp = 0; - else if ((ts.KanjiCode == IdJIS) && (!ts.JIS7Katakana)) - resp = 4; - else - resp = 3; - break; - case 66: // DECNKM - if (AppliKeyMode) - resp = 1; - else - resp = 2; - break; - case 67: // DECBKM - if (ts.BSKey==IdBS) - resp = 1; - else - resp = 2; - break; - case 1000: // XT_MSE_X11 - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportMode == IdMouseTrackVT200) - resp = 1; - else - resp = 2; - break; - case 1001: // XT_MSE_HL + case '?': /* DEC Mode */ + pp = "?"; + switch (Param[1]) { + case 1: // DECCKM + if (AppliCursorMode) + resp = 1; + else + resp = 2; + break; + case 3: // DECCOLM + if (NumOfColumns == 132) + resp = 1; + else + resp = 2; + break; + case 5: // DECSCNM + if (ts.ColorFlag & CF_REVERSEVIDEO) + resp = 1; + else + resp = 2; + break; + case 6: // DECOM + if (RelativeOrgMode) + resp = 1; + else + resp = 2; + break; + case 7: // DECAWM + if (AutoWrapMode) + resp = 1; + else + resp = 2; + break; + case 8: // DECARM + if (AutoRepeatMode) + resp = 1; + else + resp = 2; + break; + case 9: // XT_MSE_X10 -- X10 Mouse Tracking + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportMode == IdMouseTrackX10) + resp = 1; + else + resp = 2; + break; + case 12: // XT_CBLINK -- att610 cursor blinking + if (ts.NonblinkingCursor) + resp = 2; + else + resp = 1; + if ((ts.WindowFlag & WF_CURSORCHANGE) == 0) + resp += 2; + break; + case 19: // DECPEX + if (PrintEX) + resp = 1; + else + resp = 2; + break; + case 25: // DECTCEM + if (IsCaretEnabled()) + resp = 1; + else + resp = 2; + break; + case 38: // DECTEK + resp = 4; + break; + case 47: // XT_ALTSCRN -- Alternate Screen / (DECGRPM) + if ((ts.TermFlag & TF_ALTSCR) == 0) + resp = 4; + else if (AltScr) + resp = 1; + else + resp = 2; + break; + case 59: // DECKKDM + if (ts.Language!=IdJapanese) + resp = 0; + else if ((ts.KanjiCode == IdJIS) && (!ts.JIS7Katakana)) + resp = 4; + else + resp = 3; + break; + case 66: // DECNKM + if (AppliKeyMode) + resp = 1; + else + resp = 2; + break; + case 67: // DECBKM + if (ts.BSKey==IdBS) + resp = 1; + else + resp = 2; + break; + case 1000: // XT_MSE_X11 + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportMode == IdMouseTrackVT200) + resp = 1; + else + resp = 2; + break; + case 1001: // XT_MSE_HL #if 0 - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportMode == IdMouseTrackVT200Hl) - resp = 1; - else - resp = 2; + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportMode == IdMouseTrackVT200Hl) + resp = 1; + else + resp = 2; #else - resp = 4; + resp = 4; #endif - break; - case 1002: // XT_MSE_BTN - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportMode == IdMouseTrackBtnEvent) - resp = 1; - else - resp = 2; - break; - case 1003: // XT_MSE_ANY - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportMode == IdMouseTrackAllEvent) - resp = 1; - else - resp = 2; - break; - case 1004: // XT_MSE_WIN - if (!ts.MouseEventTracking) - resp = 4; - else if (FocusReportMode) - resp = 1; - else - resp = 2; - break; - case 1005: // XT_MSE_UTF - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportExtMode == IdMouseTrackExtUTF8) - resp = 1; - else - resp = 2; - break; - case 1006: // XT_MSE_SGR - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportExtMode == IdMouseTrackExtSGR) - resp = 1; - else - resp = 2; - break; - case 1015: // urxvt-style extended mouse tracking - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportExtMode == IdMouseTrackExtURXVT) - resp = 1; - else - resp = 2; - break; - case 1047: // XT_ALTS_47 - if ((ts.TermFlag & TF_ALTSCR) == 0) - resp = 4; - else if (AltScr) - resp = 1; - else - resp = 2; - break; - case 1048: - if ((ts.TermFlag & TF_ALTSCR) == 0) - resp = 4; - else - resp = 1; - break; - case 1049: // XT_EXTSCRN - if ((ts.TermFlag & TF_ALTSCR) == 0) - resp = 4; - else if (AltScr) - resp = 1; - else - resp = 2; - break; - case 2004: // RL_BRACKET - if (BracketedPaste) - resp = 1; - else - resp = 2; - break; - case 7727: // MinTTY Application Escape Mode - if (AppliEscapeMode == 1) - resp = 1; - else - resp = 2; - break; - case 7786: // MinTTY Mousewheel reporting - if (!ts.TranslateWheelToCursor) - resp = 4; - else if (AcceptWheelToCursor) - resp = 1; - else - resp = 2; - break; - case 8200: // ClearThenHome - if (ClearThenHome) - resp = 1; - else - resp = 2; - break; - case 14001: // NetTerm Mouse Reporting (TT) - if (!ts.MouseEventTracking) - resp = 4; - else if (MouseReportMode == IdMouseTrackNetTerm) - resp = 1; - else - resp = 2; - break; - case 14002: // test Application Escape Mode 2 - case 14003: // test Application Escape Mode 3 - case 14004: // test Application Escape Mode 4 - if (AppliEscapeMode == Param[1] - 14000) - resp = 1; - else - resp = 2; - break; + break; + case 1002: // XT_MSE_BTN + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportMode == IdMouseTrackBtnEvent) + resp = 1; + else + resp = 2; + break; + case 1003: // XT_MSE_ANY + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportMode == IdMouseTrackAllEvent) + resp = 1; + else + resp = 2; + break; + case 1004: // XT_MSE_WIN + if (!ts.MouseEventTracking) + resp = 4; + else if (FocusReportMode) + resp = 1; + else + resp = 2; + break; + case 1005: // XT_MSE_UTF + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportExtMode == IdMouseTrackExtUTF8) + resp = 1; + else + resp = 2; + break; + case 1006: // XT_MSE_SGR + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportExtMode == IdMouseTrackExtSGR) + resp = 1; + else + resp = 2; + break; + case 1015: // urxvt-style extended mouse tracking + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportExtMode == IdMouseTrackExtURXVT) + resp = 1; + else + resp = 2; + break; + case 1047: // XT_ALTS_47 + if ((ts.TermFlag & TF_ALTSCR) == 0) + resp = 4; + else if (AltScr) + resp = 1; + else + resp = 2; + break; + case 1048: + if ((ts.TermFlag & TF_ALTSCR) == 0) + resp = 4; + else + resp = 1; + break; + case 1049: // XT_EXTSCRN + if ((ts.TermFlag & TF_ALTSCR) == 0) + resp = 4; + else if (AltScr) + resp = 1; + else + resp = 2; + break; + case 2004: // RL_BRACKET + if (BracketedPaste) + resp = 1; + else + resp = 2; + break; + case 7727: // MinTTY Application Escape Mode + if (AppliEscapeMode == 1) + resp = 1; + else + resp = 2; + break; + case 7786: // MinTTY Mousewheel reporting + if (!ts.TranslateWheelToCursor) + resp = 4; + else if (AcceptWheelToCursor) + resp = 1; + else + resp = 2; + break; + case 8200: // ClearThenHome + if (ClearThenHome) + resp = 1; + else + resp = 2; + break; + case 14001: // NetTerm Mouse Reporting (TT) + if (!ts.MouseEventTracking) + resp = 4; + else if (MouseReportMode == IdMouseTrackNetTerm) + resp = 1; + else + resp = 2; + break; + case 14002: // test Application Escape Mode 2 + case 14003: // test Application Escape Mode 3 + case 14004: // test Application Escape Mode 4 + if (AppliEscapeMode == Param[1] - 14000) + resp = 1; + else + resp = 2; + break; + } + break; } - break; - } - len = _snprintf_s(buff, sizeof(buff), _TRUNCATE, "%s%d;%d$y", pp, Param[1], resp); - SendCSIstr(buff, len); - } + len = _snprintf_s(buff, sizeof(buff), _TRUNCATE, "%s%d;%d$y", pp, Param[1], resp); + SendCSIstr(buff, len); +} - void CSDol(BYTE b) - { - TCharAttr attr, mask; - attr = DefCharAttr; - mask = DefCharAttr; +void CSDol(BYTE b) +{ + TCharAttr attr, mask; + attr = DefCharAttr; + mask = DefCharAttr; - switch (b) { - case 'p': // DECRQM - CSDolRequestMode(); - break; - case 'r': // DECCARA - case 't': // DECRARA - if (Param[1] < 1 || NParam < 1) Param[1] = 1; - if (Param[2] < 1 || NParam < 2) Param[2] = 1; - if (Param[3] < 1 || NParam < 3) Param[3] = NumOfLines-StatusLine; - if (Param[4] < 1 || NParam < 4) Param[4] = NumOfColumns; - if (Param[1] <= Param[3] && Param[2] <= Param[4]) { - if (RelativeOrgMode) { - Param[1] += CursorTop; - if (Param[1] > CursorBottom) { - Param[1] = CursorBottom + 1; - } - Param[3] += CursorTop; - if (Param[3] > CursorBottom) { - Param[3] = CursorBottom + 1; - } - } + switch (b) { + case 'p': // DECRQM + CSDolRequestMode(); + break; + case 'r': // DECCARA + case 't': // DECRARA + if (Param[1] < 1 || NParam < 1) Param[1] = 1; + if (Param[2] < 1 || NParam < 2) Param[2] = 1; + if (Param[3] < 1 || NParam < 3) Param[3] = NumOfLines-StatusLine; + if (Param[4] < 1 || NParam < 4) Param[4] = NumOfColumns; + if (Param[1] <= Param[3] && Param[2] <= Param[4]) { + if (RelativeOrgMode) { + Param[1] += CursorTop; + if (Param[1] > CursorBottom) { + Param[1] = CursorBottom + 1; + } + Param[3] += CursorTop; + if (Param[3] > CursorBottom) { + Param[3] = CursorBottom + 1; + } + } + } + ParseSGRParams(&attr, &mask, 5); + if (b == 'r') { // DECCARA + attr.Attr &= AttrSgrMask; + mask.Attr &= AttrSgrMask; + attr.Attr2 &= Attr2ColorMask; + mask.Attr2 &= Attr2ColorMask; + BuffChangeAttrBox(Param[2]-1, Param[1]-1, Param[4]-1, Param[3]-1, &attr, &mask); + } + else { // DECRARA + attr.Attr &= AttrSgrMask; + BuffChangeAttrBox(Param[2]-1, Param[1]-1, Param[4]-1, Param[3]-1, &attr, NULL); + } + break; + case 'v': // DECCRA + if (Param[1] < 1 || NParam < 1) Param[1] = 1; + if (Param[2] < 1 || NParam < 2) Param[2] = 1; + if (Param[3] < 1 || NParam < 3) Param[3] = NumOfLines-StatusLine; + if (Param[4] < 1 || NParam < 4) Param[4] = NumOfColumns; + if (Param[5] < 1 || NParam < 5) Param[5] = 1; + if (Param[6] < 1 || NParam < 6) Param[6] = 1; + if (Param[7] < 1 || NParam < 7) Param[7] = 1; + if (Param[8] < 1 || NParam < 8) Param[8] = 1; + if (Param[1] <= Param[3] && Param[2] <= Param[4]) { + if (RelativeOrgMode) { + Param[1] += CursorTop; + if (Param[1] > CursorBottom) { + Param[1] = CursorBottom + 1; + } + Param[3] += CursorTop; + if (Param[3] > CursorBottom) { + Param[3] = CursorBottom + 1; + } + Param[6] += CursorTop; + if (Param[6] > CursorBottom) { + Param[6] = CursorBottom + 1; + } + if (Param[6] + Param[3] - Param[1] > CursorBottom) { + Param[3] = Param[1] + CursorBottom - Param[6] + 1; + } + } + BuffCopyBox(Param[2], Param[1], Param[4], Param[3], Param[5], Param[7], Param[6], Param[8]); + } + break; + case 'x': // DECFRA + if (NParam < 1 || Param[1] < 32 || (Param[1] > 127 && Param[1] < 160) || Param[1] > 255) { + return; + } + if (Param[2] < 1 || NParam < 2) Param[2] = 1; + if (Param[3] < 1 || NParam < 3) Param[3] = 1; + if (Param[4] < 1 || NParam < 4) Param[4] = NumOfLines-StatusLine; + if (Param[5] < 1 || NParam < 5) Param[5] = NumOfColumns; + if (Param[2] > Param[4] || Param[3] > Param[5]) { + return; + } + if (RelativeOrgMode) { + Param[2] += CursorTop; + if (Param[2] > CursorBottom) { + Param[2] = CursorBottom + 1; + } + Param[4] += CursorTop; + if (Param[4] > CursorBottom) { + Param[4] = CursorBottom + 1; + } + } + BuffFillBox(Param[1], Param[3]-1, Param[2]-1, Param[5]-1, Param[4]-1); + break; + + case 'z': // DECERA + case '{': // DECSERA + if (Param[1] < 1 || NParam < 1) Param[1]=1; + if (Param[2] < 1 || NParam < 2) Param[2]=1; + if (Param[3] < 1 || NParam < 3) Param[3]=NumOfLines-StatusLine; + if (Param[4] < 1 || NParam < 4) Param[4]=NumOfColumns; + if (RelativeOrgMode) { + Param[1] += CursorTop; + if (Param[1] > CursorBottom) { + Param[1] = CursorBottom + 1; + } + Param[3] += CursorTop; + if (Param[3] > CursorBottom) { + Param[3] = CursorBottom + 1; + } + } + if (b == 'z') { + BuffEraseBox(Param[2]-1, Param[1]-1, Param[4]-1, Param[3]-1); + } + else { + BuffSelectiveEraseBox(Param[2]-1, Param[1]-1, Param[4]-1, Param[3]-1); + } + break; + + case '}': // DECSASD + if ((ts.TermFlag & TF_ENABLESLINE)==0) + return; + if (StatusLine==0) + return; + if ((Param[1]<1) && (CursorY==NumOfLines-1)) + MoveToMainScreen(); + else if ((Param[1]==1) && (CursorY<NumOfLines-1)) + MoveToStatusLine(); + break; + case '~': // DECSSDT + if ((ts.TermFlag & TF_ENABLESLINE)==0) + return; + if (Param[1]<=1) + HideStatusLine(); + else if ((StatusLine==0) && (Param[1]==2)) + ShowStatusLine(1); // show + break; } - ParseSGRParams(&attr, &mask, 5); - if (b == 'r') { // DECCARA - attr.Attr &= AttrSgrMask; - mask.Attr &= AttrSgrMask; - attr.Attr2 &= Attr2ColorMask; - mask.Attr2 &= Attr2ColorMask; - BuffChangeAttrBox(Param[2]-1, Param[1]-1, Param[4]-1, Param[3]-1, &attr, &mask); - } - else { // DECRARA - attr.Attr &= AttrSgrMask; - BuffChangeAttrBox(Param[2]-1, Param[1]-1, Param[4]-1, Param[3]-1, &attr, NULL); - } - break; - case 'v': // DECCRA - if (Param[1] < 1 || NParam < 1) Param[1] = 1; - if (Param[2] < 1 || NParam < 2) Param[2] = 1; - if (Param[3] < 1 || NParam < 3) Param[3] = NumOfLines-StatusLine; - if (Param[4] < 1 || NParam < 4) Param[4] = NumOfColumns; - if (Param[5] < 1 || NParam < 5) Param[5] = 1; - if (Param[6] < 1 || NParam < 6) Param[6] = 1; - if (Param[7] < 1 || NParam < 7) Param[7] = 1; - if (Param[8] < 1 || NParam < 8) Param[8] = 1; - if (Param[1] <= Param[3] && Param[2] <= Param[4]) { - if (RelativeOrgMode) { - Param[1] += CursorTop; - if (Param[1] > CursorBottom) { - Param[1] = CursorBottom + 1; - } - Param[3] += CursorTop; - if (Param[3] > CursorBottom) { - Param[3] = CursorBottom + 1; - } - Param[6] += CursorTop; - if (Param[6] > CursorBottom) { - Param[6] = CursorBottom + 1; - } - if (Param[6] + Param[3] - Param[1] > CursorBottom) { - Param[3] = Param[1] + CursorBottom - Param[6] + 1; - } - } - BuffCopyBox(Param[2], Param[1], Param[4], Param[3], Param[5], Param[7], Param[6], Param[8]); - } - break; - case 'x': // DECFRA - if (NParam < 1 || Param[1] < 32 || (Param[1] > 127 && Param[1] < 160) || Param[1] > 255) { - return; - } - if (Param[2] < 1 || NParam < 2) Param[2] = 1; - if (Param[3] < 1 || NParam < 3) Param[3] = 1; - if (Param[4] < 1 || NParam < 4) Param[4] = NumOfLines-StatusLine; - if (Param[5] < 1 || NParam < 5) Param[5] = NumOfColumns; - if (Param[2] > Param[4] || Param[3] > Param[5]) { - return; - } - if (RelativeOrgMode) { - Param[2] += CursorTop; - if (Param[2] > CursorBottom) { - Param[2] = CursorBottom + 1; - } - Param[4] += CursorTop; - if (Param[4] > CursorBottom) { - Param[4] = CursorBottom + 1; - } - } - BuffFillBox(Param[1], Param[3]-1, Param[2]-1, Param[5]-1, Param[4]-1); - break; +} - case 'z': // DECERA - case '{': // DECSERA - if (Param[1] < 1 || NParam < 1) Param[1]=1; - if (Param[2] < 1 || NParam < 2) Param[2]=1; - if (Param[3] < 1 || NParam < 3) Param[3]=NumOfLines-StatusLine; - if (Param[4] < 1 || NParam < 4) Param[4]=NumOfColumns; - if (RelativeOrgMode) { - Param[1] += CursorTop; - if (Param[1] > CursorBottom) { - Param[1] = CursorBottom + 1; - } - Param[3] += CursorTop; - if (Param[3] > CursorBottom) { - Param[3] = CursorBottom + 1; - } +void CSQDol(BYTE b) +{ + switch (b) { + case 'p': + CSDolRequestMode(); + break; } - if (b == 'z') { - BuffEraseBox(Param[2]-1, Param[1]-1, Param[4]-1, Param[3]-1); - } - else { - BuffSelectiveEraseBox(Param[2]-1, Param[1]-1, Param[4]-1, Param[3]-1); - } - break; +} - case '}': // DECSASD - if ((ts.TermFlag & TF_ENABLESLINE)==0) return; - if (StatusLine==0) return; - if ((Param[1]<1) && (CursorY==NumOfLines-1)) - MoveToMainScreen(); - else if ((Param[1]==1) && (CursorY<NumOfLines-1)) - MoveToStatusLine(); - break; - case '~': // DECSSDT - if ((ts.TermFlag & TF_ENABLESLINE)==0) return; - if (Param[1]<=1) - HideStatusLine(); - else if ((StatusLine==0) && (Param[1]==2)) - ShowStatusLine(1); // show - break; - } - } +void CSQuote(BYTE b) +{ + int i, x, y; + switch (b) { + case 'w': // Enable Filter Rectangle (DECEFR) + if (MouseReportMode == IdMouseTrackDECELR) { + if (DecLocatorFlag & DecLocatorPixel) { + x = LastX + 1; + y = LastY + 1; + } + else { + DispConvWinToScreen(LastX, LastY, &x, &y, NULL); + x++; + y++; + } + FilterTop = (NParam<1 || Param[1]<1)? y : Param[1]; + FilterLeft = (NParam<2 || Param[2]<1)? x : Param[2]; + FilterBottom = (NParam<3 || Param[3]<1)? y : Param[3]; + FilterRight = (NParam<4 || Param[4]<1)? x : Param[4]; + if (FilterTop > FilterBottom) { + i = FilterTop; FilterTop = FilterBottom; FilterBottom = i; + } + if (FilterLeft > FilterRight) { + i = FilterLeft; FilterLeft = FilterRight; FilterRight = i; + } + DecLocatorFlag |= DecLocatorFiltered; + DecLocatorReport(IdMouseEventMove, 0); + } + break; - void CSQDol(BYTE b) - { - switch (b) { - case 'p': - CSDolRequestMode(); - break; - } - } + case 'z': // Enable DEC Locator reporting (DECELR) + switch (Param[1]) { + case 0: + if (MouseReportMode == IdMouseTrackDECELR) { + MouseReportMode = IdMouseTrackNone; + } + break; + case 1: + if (ts.MouseEventTracking) { + MouseReportMode = IdMouseTrackDECELR; + DecLocatorFlag &= ~DecLocatorOneShot; + } + break; + case 2: + if (ts.MouseEventTracking) { + MouseReportMode = IdMouseTrackDECELR; + DecLocatorFlag |= DecLocatorOneShot; + } + break; + } + if (NParam > 1 && Param[2] == 1) { + DecLocatorFlag |= DecLocatorPixel; + } + else { + DecLocatorFlag &= ~DecLocatorPixel; + } + break; - void CSQuote(BYTE b) - { - int i, x, y; - switch (b) { - case 'w': // Enable Filter Rectangle (DECEFR) - if (MouseReportMode == IdMouseTrackDECELR) { - if (DecLocatorFlag & DecLocatorPixel) { - x = LastX + 1; - y = LastY + 1; - } - else { - DispConvWinToScreen(LastX, LastY, &x, &y, NULL); - x++; - y++; - } - FilterTop = (NParam<1 || Param[1]<1)? y : Param[1]; - FilterLeft = (NParam<2 || Param[2]<1)? x : Param[2]; - FilterBottom = (NParam<3 || Param[3]<1)? y : Param[3]; - FilterRight = (NParam<4 || Param[4]<1)? x : Param[4]; - if (FilterTop > FilterBottom) { - i = FilterTop; FilterTop = FilterBottom; FilterBottom = i; - } - if (FilterLeft > FilterRight) { - i = FilterLeft; FilterLeft = FilterRight; FilterRight = i; - } - DecLocatorFlag |= DecLocatorFiltered; - DecLocatorReport(IdMouseEventMove, 0); - } - break; + case '{': // Select Locator Events (DECSLE) + for (i=1; i<=NParam; i++) { + switch (Param[i]) { + case 0: + DecLocatorFlag &= ~(DecLocatorButtonUp | DecLocatorButtonDown | DecLocatorFiltered); + break; + case 1: + DecLocatorFlag |= DecLocatorButtonDown; + break; + case 2: + DecLocatorFlag &= ~DecLocatorButtonDown; + break; + case 3: + DecLocatorFlag |= DecLocatorButtonUp; + break; + case 4: + DecLocatorFlag &= ~DecLocatorButtonUp; + break; + } + } + break; - case 'z': // Enable DEC Locator reporting (DECELR) - switch (Param[1]) { - case 0: - if (MouseReportMode == IdMouseTrackDECELR) { - MouseReportMode = IdMouseTrackNone; - } - break; - case 1: - if (ts.MouseEventTracking) { - MouseReportMode = IdMouseTrackDECELR; - DecLocatorFlag &= ~DecLocatorOneShot; - } - break; - case 2: - if (ts.MouseEventTracking) { - MouseReportMode = IdMouseTrackDECELR; - DecLocatorFlag |= DecLocatorOneShot; - } - break; + case '|': // Request Locator Position (DECRQLP) + DecLocatorReport(IdMouseEventCurStat, 0); + break; } - if (NParam > 1 && Param[2] == 1) { - DecLocatorFlag |= DecLocatorPixel; - } - else { - DecLocatorFlag &= ~DecLocatorPixel; - } - break; +} - case '{': // Select Locator Events (DECSLE) - for (i=1; i<=NParam; i++) { - switch (Param[i]) { - case 0: - DecLocatorFlag &= ~(DecLocatorButtonUp | DecLocatorButtonDown | DecLocatorFiltered); - break; - case 1: - DecLocatorFlag |= DecLocatorButtonDown; - break; - case 2: - DecLocatorFlag &= ~DecLocatorButtonDown; - break; - case 3: - DecLocatorFlag |= DecLocatorButtonUp; - break; - case 4: - DecLocatorFlag &= ~DecLocatorButtonUp; - break; - } +void CSSpace(BYTE b) { + switch (b) { + case 'q': // DECSCUSR + if (ts.WindowFlag & WF_CURSORCHANGE) { + if (NParam > 0) { + switch (Param[1]) { + case 0: + case 1: + ts.CursorShape = IdBlkCur; + ts.NonblinkingCursor = FALSE; + break; + case 2: + ts.CursorShape = IdBlkCur; + ts.NonblinkingCursor = TRUE; + break; + case 3: + ts.CursorShape = IdHCur; + ts.NonblinkingCursor = FALSE; + break; + case 4: + ts.CursorShape = IdHCur; + ts.NonblinkingCursor = TRUE; + break; + case 5: + ts.CursorShape = IdVCur; + ts.NonblinkingCursor = FALSE; + break; + case 6: + ts.CursorShape = IdVCur; + ts.NonblinkingCursor = TRUE; + break; + default: + return; + } + ChangeCaret(); + } + } + break; } - break; +} - case '|': // Request Locator Position (DECRQLP) - DecLocatorReport(IdMouseEventCurStat, 0); - break; - } - } - - void CSSpace(BYTE b) { - switch (b) { - case 'q': // DECSCUSR - if (ts.WindowFlag & WF_CURSORCHANGE) { - if (NParam > 0) { - switch (Param[1]) { - case 0: - case 1: - ts.CursorShape = IdBlkCur; - ts.NonblinkingCursor = FALSE; - break; - case 2: - ts.CursorShape = IdBlkCur; - ts.NonblinkingCursor = TRUE; - break; - case 3: - ts.CursorShape = IdHCur; - ts.NonblinkingCursor = FALSE; - break; - case 4: - ts.CursorShape = IdHCur; - ts.NonblinkingCursor = TRUE; - break; - case 5: - ts.CursorShape = IdVCur; - ts.NonblinkingCursor = FALSE; - break; - case 6: - ts.CursorShape = IdVCur; - ts.NonblinkingCursor = TRUE; - break; - default: - return; - } - ChangeCaret(); - } - } - break; - } - } - void PrnParseCS(BYTE b) // printer mode { - ParseMode = ModeFirst; - switch (ICount) { - /* no intermediate char */ - case 0: - switch (Prv) { - /* no private parameter */ - case 0: - switch (b) { - case 'i': - if (Param[1]==4) - { - PrinterMode = FALSE; - // clear prn buff - WriteToPrnFile(0,FALSE); - if (! AutoPrintMode) - ClosePrnFile(); - return; - } - break; - } /* of case Prv=0 */ - break; - } - break; - /* one intermediate char */ - case 1: break; - } /* of case Icount */ + ParseMode = ModeFirst; + switch (ICount) { + /* no intermediate char */ + case 0: + switch (Prv) { + /* no private parameter */ + case 0: + switch (b) { + case 'i': + if (Param[1]==4) { + PrinterMode = FALSE; + // clear prn buff + WriteToPrnFile(0,FALSE); + if (! AutoPrintMode) + ClosePrnFile(); + return; + } + break; + } /* of case Prv=0 */ + break; + } + break; + /* one intermediate char */ + case 1: break; + } /* of case Icount */ - WriteToPrnFile(b,TRUE); + WriteToPrnFile(b,TRUE); } void ParseCS(BYTE b) /* b is the final char */ @@ -3805,20 +3813,20 @@ int tmp = 0; switch (StrBuff[0]) { - case ' ': + case ' ': switch (StrBuff[1]) { - case 'q': // DECSCUSR + case 'q': // DECSCUSR switch (ts.CursorShape) { - case IdBlkCur: + case IdBlkCur: tmp = 1; break; - case IdHCur: + case IdHCur: tmp = 3; break; - case IdVCur: + case IdVCur: tmp = 5; break; - default: + default: tmp = 1; } if (ts.NonblinkingCursor) { @@ -3827,9 +3835,9 @@ len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r%d q", CLocale, tmp); } break; - case '"': + case '"': switch (StrBuff[1]) { - case 'p': // DECSCL + case 'p': // DECSCL if (VTlevel > 1 && Send8BitMode) { len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r6%d;0\"p", CLocale, VTlevel); } @@ -3838,7 +3846,7 @@ } break; - case 'q': // DECSCA + case 'q': // DECSCA if (CharAttr.Attr2 & Attr2Protect) { len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r1\"q", CLocale); } @@ -3848,7 +3856,7 @@ break; } break; - case 'm': // SGR + case 'm': // SGR if (StrBuff[1] == 0) { len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r0", CLocale); if (CharAttr.Attr & AttrBold) { @@ -3914,12 +3922,12 @@ RepStr[len] = 0; } break; - case 'r': // DECSTBM + case 'r': // DECSTBM if (StrBuff[1] == 0) { len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r%d;%dr", CLocale, CursorTop+1, CursorBottom+1); } break; - case 's': // DECSLRM + case 's': // DECSLRM if (StrBuff[1] == 0) { len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r%d;%ds", CLocale, CursorLeftM+1, CursorRightM+1); } @@ -4090,11 +4098,11 @@ void ParseDCS(BYTE Cmd, unsigned char *StrBuff, int len) { switch (ICount) { - case 0: + case 0: break; - case 1: + case 1: switch (IntChar[1]) { - case '!': + case '!': if (Cmd == '{') { // DECSTUI if (! (ts.TermFlag & TF_LOCKTUID)) { int i; @@ -4109,21 +4117,21 @@ } } break; - case '$': + case '$': if (Cmd == 'q') { // DECRQSS RequestStatusString(StrBuff, len); } break; - case '+': + case '+': if (Cmd == 'q') { // Request termcap/terminfo string (xterm) RequestTermcapString(StrBuff, len); } break; - default: + default: break; } break; - default: + default: break; } } @@ -4163,7 +4171,7 @@ utf8_stat = CheckUTF8Seq(b, utf8_stat); switch (DcsParseMode) { - case ModeDcsFirst: + case ModeDcsFirst: if (b<=US) { ParseControl(b); } @@ -4199,7 +4207,7 @@ } break; - case ModeDcsString: + case ModeDcsString: if (b <= US && b != HT && b != CR) { ESCFlag = FALSE; ParseMode = ModeFirst; @@ -4353,64 +4361,64 @@ unsigned int colornum = CS_UNSPEC; switch ((mode>=100) ? mode-100 : mode) { - case 4: + case 4: switch (xt_color) { - case 256: + case 256: colornum = CS_VT_BOLDFG; break; - case 257: + case 257: // Underline -- not supported. // colornum = CS_VT_UNDERFG; break; - case 258: + case 258: colornum = CS_VT_BLINKFG; break; - case 259: + case 259: colornum = CS_VT_REVERSEBG; break; - case CS_UNSPEC: + case CS_UNSPEC: if (mode == 104) { colornum = CS_ANSICOLOR_ALL; } break; - default: + default: if (xt_color <= 255) { colornum = xt_color; } } break; - case 5: + case 5: switch (xt_color) { - case 0: + case 0: colornum = CS_VT_BOLDFG; break; - case 1: + case 1: // Underline -- not supported. // colornum = CS_VT_UNDERFG; break; - case 2: + case 2: colornum = CS_VT_BLINKFG; break; - case 3: + case 3: colornum = CS_VT_REVERSEBG; break; - case CS_UNSPEC: + case CS_UNSPEC: if (mode == 105) { colornum = CS_SP_ALL; } break; } break; - case 10: + case 10: colornum = CS_VT_NORMALFG; break; - case 11: + case 11: colornum = CS_VT_NORMALBG; break; - case 15: + case 15: colornum = CS_TEK_FG; break; - case 16: + case 16: colornum = CS_TEK_BG; break; } @@ -4555,9 +4563,9 @@ } } switch (Param[1]) { - case 0: /* Change window title and icon name */ - case 1: /* Change icon name */ - case 2: /* Change window title */ + case 0: /* Change window title and icon name */ + case 1: /* Change icon name */ + case 2: /* Change window title */ if (StrBuff && ts.AcceptTitleChangeRequest) { strncpy_s(cv.TitleRemote, sizeof(cv.TitleRemote), StrBuff, _TRUNCATE); // (2006.6.15 maya) \x83^\x83C\x83g\x83\x8B\x82ɓn\x82\xB7\x95\xB6\x8E\x9A\x97\xF1\x82\xF0SJIS\x82ɕϊ\xB7 @@ -4565,8 +4573,8 @@ ChangeTitle(); } break; - case 4: /* Change/Query color palette */ - case 5: /* Change/Query special color */ + case 4: /* Change/Query color palette */ + case 5: /* Change/Query special color */ if (StrBuff) { color_num = 0; color_spec = NULL; @@ -4596,16 +4604,16 @@ } } break; - case 10: /* Change/Query VT-Window foreground color */ - case 11: /* Change/Query VT-Window background color */ - case 12: /* Change/Query VT-Window cursor color */ - case 13: /* Change/Query mouse cursor foreground color */ - case 14: /* Change/Query mouse cursor background color */ - case 15: /* Change/Query Tek-Window foreground color */ - case 16: /* Change/Query Tek-Window foreground color */ - case 17: /* Change/Query highlight background color */ - case 18: /* Change/Query Tek-Window cursor color */ - case 19: /* Change/Query highlight foreground color */ + case 10: /* Change/Query VT-Window foreground color */ + case 11: /* Change/Query VT-Window background color */ + case 12: /* Change/Query VT-Window cursor color */ + case 13: /* Change/Query mouse cursor foreground color */ + case 14: /* Change/Query mouse cursor background color */ + case 15: /* Change/Query Tek-Window foreground color */ + case 16: /* Change/Query Tek-Window foreground color */ + case 17: /* Change/Query highlight background color */ + case 18: /* Change/Query Tek-Window cursor color */ + case 19: /* Change/Query highlight foreground color */ if (StrBuff) { color_num = Param[1]; color_spec = StrBuff; @@ -4620,13 +4628,13 @@ XsProcColor(color_num, 0, color_spec, TermChar); } break; - case 52: /* Manipulate Clipboard data */ + case 52: /* Manipulate Clipboard data */ if (StrBuff) { XsProcClipboard(StrBuff); } break; - case 104: /* Reset color palette */ - case 105: /* Reset special color */ + case 104: /* Reset color palette */ + case 105: /* Reset special color */ if (HasParamStr) { if (StrBuff) { color_num = 0; @@ -4651,16 +4659,16 @@ DispResetColor(XtColor2TTColor(Param[1], CS_UNSPEC)); } break; - case 110: /* Reset VT-Window foreground color */ - case 111: /* Reset VT-Window background color */ - case 112: /* Reset VT-Window cursor color */ - case 113: /* Reset mouse cursor foreground color */ - case 114: /* Reset mouse cursor background color */ - case 115: /* Reset Tek-Window foreground color */ - case 116: /* Reset Tek-Window foreground color */ - case 117: /* Reset highlight background color */ - case 118: /* Reset Tek-Window cursor color */ - case 119: /* Reset highlight foreground color */ + case 110: /* Reset VT-Window foreground color */ + case 111: /* Reset VT-Window background color */ + case 112: /* Reset VT-Window cursor color */ + case 113: /* Reset mouse cursor foreground color */ + case 114: /* Reset mouse cursor background color */ + case 115: /* Reset Tek-Window foreground color */ + case 116: /* Reset Tek-Window foreground color */ + case 117: /* Reset highlight background color */ + case 118: /* Reset Tek-Window cursor color */ + case 119: /* Reset highlight foreground color */ DispResetColor(XtColor2TTColor(Param[1], CS_UNSPEC)); if (HasParamStr && StrBuff) { color_num = 0;