• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revision9152 (tree)
Time2021-02-11 00:10:58
Authorzmatsuo

Log Message

altを押しながらのキー入力をUnicode対応にした

Change Summary

Incremental Difference

--- trunk/teraterm/teraterm/vtwin.cpp (revision 9151)
+++ trunk/teraterm/teraterm/vtwin.cpp (revision 9152)
@@ -2544,10 +2544,6 @@
25442544
25452545 void CVTWindow::OnSysChar(WPARAM nChar, UINT nRepCnt, UINT nFlags)
25462546 {
2547- char e = ESC;
2548- char Code;
2549- unsigned int i;
2550-
25512547 #ifdef WINDOW_MAXMIMUM_ENABLED
25522548 // ALT + xを押下すると WM_SYSCHAR が飛んでくる。
25532549 // ALT + Enterでウィンドウの最大化 (2005.4.24 yutaka)
@@ -2561,31 +2557,44 @@
25612557 #endif
25622558
25632559 if (MetaKey(ts.MetaKey)) {
2564- if (!KeybEnabled || (TalkStatus!=IdTalkKeyb)) return;
2565- Code = nChar;
2566- for (i=1 ; i<=nRepCnt ; i++) {
2560+ if (!KeybEnabled || (TalkStatus != IdTalkKeyb))
2561+ return;
2562+ char Code = nChar;
2563+ wchar_t u16;
2564+ if (ts.Meta8Bit != IdMeta8BitRaw) {
2565+ const char mb_str[2] = {(char)nChar | 0x80, 0};
2566+ unsigned int u32;
2567+ size_t mb_len = MBCPToUTF32(mb_str, 1, CP_ACP, &u32);
2568+ if (mb_len == 0) {
2569+ return;
2570+ }
2571+ u16 = (wchar_t)u32;
2572+ }
2573+ for (unsigned int i = 1; i <= nRepCnt; i++) {
25672574 switch (ts.Meta8Bit) {
2568- case IdMeta8BitRaw:
2569- Code |= 0x80;
2570- CommBinaryBuffOut(&cv, &Code, 1);
2571- if (ts.LocalEcho) {
2572- CommBinaryEcho(&cv, &Code, 1);
2575+ case IdMeta8BitRaw:
2576+ Code |= 0x80;
2577+ CommBinaryBuffOut(&cv, &Code, 1);
2578+ if (ts.LocalEcho) {
2579+ CommBinaryEcho(&cv, &Code, 1);
2580+ }
2581+ break;
2582+ case IdMeta8BitText:
2583+ Code |= 0x80;
2584+ CommTextOutW(&cv, &u16, 1);
2585+ if (ts.LocalEcho) {
2586+ CommTextEchoW(&cv, &u16, 1);
2587+ }
2588+ break;
2589+ default: {
2590+ const wchar_t e = ESC;
2591+ CommTextOutW(&cv, &e, 1);
2592+ CommTextOutW(&cv, &u16, 1);
2593+ if (ts.LocalEcho) {
2594+ CommTextEchoW(&cv, &e, 1);
2595+ CommTextEchoW(&cv, &u16, 1);
2596+ }
25732597 }
2574- break;
2575- case IdMeta8BitText:
2576- Code |= 0x80;
2577- CommTextOut(&cv, &Code, 1);
2578- if (ts.LocalEcho) {
2579- CommTextEcho(&cv, &Code, 1);
2580- }
2581- break;
2582- default:
2583- CommTextOut(&cv, &e, 1);
2584- CommTextOut(&cv, &Code, 1);
2585- if (ts.LocalEcho) {
2586- CommTextEcho(&cv, &e, 1);
2587- CommTextEcho(&cv, &Code, 1);
2588- }
25892598 }
25902599 }
25912600 return;
Show on old repository browser