Revision: 10776 https://osdn.net/projects/ttssh2/scm/svn/commits/10776 Author: zmatsuo Date: 2023-06-22 00:08:55 +0900 (Thu, 22 Jun 2023) Log Message: ----------- CharSet2022Invoke() の引数を変更 Modified Paths: -------------- trunk/teraterm/teraterm/charset.cpp trunk/teraterm/teraterm/charset.h trunk/teraterm/teraterm/vtterm.c -------------- next part -------------- Modified: trunk/teraterm/teraterm/charset.cpp =================================================================== --- trunk/teraterm/teraterm/charset.cpp 2023-06-20 14:22:56 UTC (rev 10775) +++ trunk/teraterm/teraterm/charset.cpp 2023-06-21 15:08:55 UTC (rev 10776) @@ -931,22 +931,53 @@ /** * \x8CĂяo\x82\xB5(Invoke) - * @param glr 0/1 = GL/GR (Locking shift\x8E\x9E\x82̂ݗL\x8C\xF8) - * @param gn 0/1/2/3 = G0/G1/G2/G3 - * @param single_shift FALSE Locking shift - * TRUE Single shift + * @param shift */ -void CharSet2022Invoke(int glr, int gn, BOOL single_shift) +void CharSet2022Invoke(CharSet2022Shift shift) { VttermKanjiWork *w = &KanjiWork; - if (single_shift == FALSE) { - // Locking shift - w->Glr[glr] = gn; - } - else { - // Single shift - GLtmp = gn; + switch (shift) { + case CHARSET_LS0: + // Locking Shift 0 (G0->GL) + w->Glr[0] = 0; + break; + case CHARSET_LS1: + // Locking Shift 1 (G1->GL) + w->Glr[0] = 1; + break; + case CHARSET_LS2: + // Locking Shift 2 (G2->GL) + w->Glr[0] = 2; + break; + case CHARSET_LS3: + // Locking Shift 3 (G3->GL) + w->Glr[0] = 3; + break; + case CHARSET_LS1R: + // Locking Shift 1 (G1->GR) + w->Glr[1] = 1; + break; + case CHARSET_LS2R: + // Locking Shift 2 (G2->GR) + w->Glr[1] = 2; + break; + case CHARSET_LS3R: + // Locking Shift 3 (G3->GR) + w->Glr[1] = 3; + break; + case CHARSET_SS2: + // Single Shift 2 + GLtmp = 2; SSflag = TRUE; + break; + case CHARSET_SS3: + // Single Shift 3 + GLtmp = 3; + SSflag = TRUE; + break; + default: + assert(FALSE); + break; } } Modified: trunk/teraterm/teraterm/charset.h =================================================================== --- trunk/teraterm/teraterm/charset.h 2023-06-20 14:22:56 UTC (rev 10775) +++ trunk/teraterm/teraterm/charset.h 2023-06-21 15:08:55 UTC (rev 10776) @@ -44,9 +44,20 @@ void ParseControl(BYTE b); // control +typedef enum { + CHARSET_LS0, // Locking Shift 0, SI, 0F (G0->GL) + CHARSET_LS1, // Locking Shift 1, SO, 0E (G1->GL) + CHARSET_LS2, // Locking Shift 2, ESC n, 1B 6E (G2->GL) + CHARSET_LS3, // Locking Shift 3, ESC o, 1B 6F(G3->GL) + CHARSET_LS1R, // Locking Shift 1R, ESC ~, 1B 7E (G1->GR) + CHARSET_LS2R, // Locking Shift 2R, ESC }, 1B 7D (G2->GR) + CHARSET_LS3R, // Locking Shift 3R, ESC |, 1B 7C (G3->GR) + CHARSET_SS2, // Single Shift 2, SS2, 8E, ESC N, 1B 4E + CHARSET_SS3, // Single Shift 3, SS3, 8F, ESC O, 1B 4F +} CharSet2022Shift; void CharSetInit(void); void CharSet2022Designate(int gn, int cs); -void CharSet2022Invoke(int glr, int gn, BOOL single_shift); +void CharSet2022Invoke(CharSet2022Shift shift); BOOL CharSetIsSpecial(BYTE b); void CharSetSaveState(CharSetState *state); void CharSetLoadState(const CharSetState *state); Modified: trunk/teraterm/teraterm/vtterm.c =================================================================== --- trunk/teraterm/teraterm/vtterm.c 2023-06-20 14:22:56 UTC (rev 10775) +++ trunk/teraterm/teraterm/vtterm.c 2023-06-21 15:08:55 UTC (rev 10776) @@ -1010,7 +1010,7 @@ CharSet2022Designate(1, IdKatakana); } /* LS1 */ - CharSet2022Invoke(0, 1, FALSE); + CharSet2022Invoke(CHARSET_LS1); return; } break; @@ -1017,7 +1017,7 @@ case SI: if ((ts.ISO2022Flag & ISO2022_SI) && ! DirectPrn) { /* LS0 */ - CharSet2022Invoke(0, 0, FALSE); + CharSet2022Invoke(CHARSET_LS0); return; } break; @@ -1152,12 +1152,12 @@ CharSet2022Designate(1, IdKatakana); } - CharSet2022Invoke(0, 1, FALSE); + CharSet2022Invoke(CHARSET_LS1); } break; case SI: /* LS0 */ if (ts.ISO2022Flag & ISO2022_SI) { - CharSet2022Invoke(0, 0, FALSE); + CharSet2022Invoke(CHARSET_LS0); } break; case DLE: @@ -1207,12 +1207,12 @@ break; case SS2: if (ts.ISO2022Flag & ISO2022_SS2) { - CharSet2022Invoke(0, 2, TRUE); + CharSet2022Invoke(CHARSET_SS2); } break; case SS3: if (ts.ISO2022Flag & ISO2022_SS3) { - CharSet2022Invoke(0, 3, TRUE); + CharSet2022Invoke(CHARSET_SS3); } break; case DCS: @@ -1344,7 +1344,7 @@ CharSet2022Designate(0, IdKanji); if ((ts.TermFlag & TF_AUTOINVOKE)!=0) { /* G0->GL */ - CharSet2022Invoke(0, 0, FALSE); + CharSet2022Invoke(CHARSET_LS0); } } break; @@ -1370,7 +1370,7 @@ CharSet2022Designate(Dist, IdKanji); if (((ts.TermFlag & TF_AUTOINVOKE)!=0) && (Dist==0)) { /* G0->GL */ - CharSet2022Invoke(0, 0, FALSE); + CharSet2022Invoke(CHARSET_LS0); } } break; @@ -1417,7 +1417,7 @@ if (((ts.TermFlag & TF_AUTOINVOKE)!=0) && (Dist==0)) { /* G0->GL */ - CharSet2022Invoke(0, 0, FALSE); + CharSet2022Invoke(CHARSET_LS0); } } @@ -1526,12 +1526,12 @@ break; case 'N': /* SS2 */ if (ts.ISO2022Flag & ISO2022_SS2) { - CharSet2022Invoke(0, 2, TRUE); + CharSet2022Invoke(CHARSET_SS2); } break; case 'O': /* SS3 */ if (ts.ISO2022Flag & ISO2022_SS3) { - CharSet2022Invoke(0, 3, TRUE); + CharSet2022Invoke(CHARSET_SS3); } break; case 'P': /* DCS */ @@ -1571,27 +1571,27 @@ break; case 'n': /* LS2 */ if (ts.ISO2022Flag & ISO2022_LS2) { - CharSet2022Invoke(0, 2, FALSE); + CharSet2022Invoke(CHARSET_LS2); } break; case 'o': /* LS3 */ if (ts.ISO2022Flag & ISO2022_LS3) { - CharSet2022Invoke(0, 3, FALSE); + CharSet2022Invoke(CHARSET_LS3); } break; case '|': /* LS3R */ if (ts.ISO2022Flag & ISO2022_LS3R) { - CharSet2022Invoke(1, 3, FALSE); + CharSet2022Invoke(CHARSET_LS3R); } break; case '}': /* LS2R */ if (ts.ISO2022Flag & ISO2022_LS2R) { - CharSet2022Invoke(1, 2, FALSE); + CharSet2022Invoke(CHARSET_LS2R); } break; case '~': /* LS1R */ if (ts.ISO2022Flag & ISO2022_LS1R) { - CharSet2022Invoke(1, 1, FALSE); + CharSet2022Invoke(CHARSET_LS1R); } break; } @@ -2967,12 +2967,12 @@ CharSet2022Designate(1, IdKatakana); CharSet2022Designate(2, IdKatakana); CharSet2022Designate(3, IdKanji); - CharSet2022Invoke(0, 0, FALSE); + CharSet2022Invoke(CHARSET_LS0); if ((ts.KanjiCode==IdJIS) && (ts.JIS7Katakana==0)) // 8-bit katakana - CharSet2022Invoke(1, 2, FALSE); + CharSet2022Invoke(CHARSET_LS2R); else - CharSet2022Invoke(1, 3, FALSE); + CharSet2022Invoke(CHARSET_LS3R); } break; case 66: AppliKeyMode = TRUE; break; // DECNKM @@ -3137,12 +3137,12 @@ CharSet2022Designate(1, IdKatakana); CharSet2022Designate(2, IdKatakana); CharSet2022Designate(3, IdKanji); - CharSet2022Invoke(0, 0, FALSE); + CharSet2022Invoke(CHARSET_LS0); if ((ts.KanjiCode==IdJIS) && (ts.JIS7Katakana==0)) // 8-bit katakana - CharSet2022Invoke(1, 2, FALSE); + CharSet2022Invoke(CHARSET_LS2R); else - CharSet2022Invoke(1, 3, FALSE); + CharSet2022Invoke(CHARSET_LS3R); } break; case 66: AppliKeyMode = FALSE; break; // DECNKM