Revision: 9152 https://osdn.net/projects/ttssh2/scm/svn/commits/9152 Author: zmatsuo Date: 2021-02-11 00:10:58 +0900 (Thu, 11 Feb 2021) Log Message: ----------- altを押しながらのキー入力をUnicode対応にした Modified Paths: -------------- trunk/teraterm/teraterm/vtwin.cpp -------------- next part -------------- Modified: trunk/teraterm/teraterm/vtwin.cpp =================================================================== --- trunk/teraterm/teraterm/vtwin.cpp 2021-02-10 15:10:43 UTC (rev 9151) +++ trunk/teraterm/teraterm/vtwin.cpp 2021-02-10 15:10:58 UTC (rev 9152) @@ -2544,10 +2544,6 @@ void CVTWindow::OnSysChar(WPARAM nChar, UINT nRepCnt, UINT nFlags) { - char e = ESC; - char Code; - unsigned int i; - #ifdef WINDOW_MAXMIMUM_ENABLED // ALT + x\x82\xF0\x89\x9F\x89\xBA\x82\xB7\x82\xE9\x82\xC6 WM_SYSCHAR \x82\xAA\x94\xF2\x82\xF1\x82ł\xAD\x82\xE9\x81B // ALT + Enter\x82ŃE\x83B\x83\x93\x83h\x83E\x82̍ő剻 (2005.4.24 yutaka) @@ -2561,31 +2557,44 @@ #endif if (MetaKey(ts.MetaKey)) { - if (!KeybEnabled || (TalkStatus!=IdTalkKeyb)) return; - Code = nChar; - for (i=1 ; i<=nRepCnt ; i++) { + if (!KeybEnabled || (TalkStatus != IdTalkKeyb)) + return; + char Code = nChar; + wchar_t u16; + if (ts.Meta8Bit != IdMeta8BitRaw) { + const char mb_str[2] = {(char)nChar | 0x80, 0}; + unsigned int u32; + size_t mb_len = MBCPToUTF32(mb_str, 1, CP_ACP, &u32); + if (mb_len == 0) { + return; + } + u16 = (wchar_t)u32; + } + for (unsigned int i = 1; i <= nRepCnt; i++) { switch (ts.Meta8Bit) { - case IdMeta8BitRaw: - Code |= 0x80; - CommBinaryBuffOut(&cv, &Code, 1); - if (ts.LocalEcho) { - CommBinaryEcho(&cv, &Code, 1); + case IdMeta8BitRaw: + Code |= 0x80; + CommBinaryBuffOut(&cv, &Code, 1); + if (ts.LocalEcho) { + CommBinaryEcho(&cv, &Code, 1); + } + break; + case IdMeta8BitText: + Code |= 0x80; + CommTextOutW(&cv, &u16, 1); + if (ts.LocalEcho) { + CommTextEchoW(&cv, &u16, 1); + } + break; + default: { + const wchar_t e = ESC; + CommTextOutW(&cv, &e, 1); + CommTextOutW(&cv, &u16, 1); + if (ts.LocalEcho) { + CommTextEchoW(&cv, &e, 1); + CommTextEchoW(&cv, &u16, 1); + } } - break; - case IdMeta8BitText: - Code |= 0x80; - CommTextOut(&cv, &Code, 1); - if (ts.LocalEcho) { - CommTextEcho(&cv, &Code, 1); - } - break; - default: - CommTextOut(&cv, &e, 1); - CommTextOut(&cv, &Code, 1); - if (ts.LocalEcho) { - CommTextEcho(&cv, &e, 1); - CommTextEcho(&cv, &Code, 1); - } } } return;