# HG changeset patch # User Mikael Berthe # Date 1155147966 -7200 # Node ID aec71ebf98fa1bf6839ad0be8ca9c4b8326e2e71 # Parent 9ac0d166a85b9c758a3361302358a93f324bdf40 Fix Meta + UTF-8 character diff -r 9ac0d166a85b -r aec71ebf98fa mcabber/src/screen.c --- a/mcabber/src/screen.c Sat Jul 15 12:46:39 2006 +0200 +++ b/mcabber/src/screen.c Wed Aug 09 20:26:06 2006 +0200 @@ -2349,7 +2349,13 @@ kcode->value = wgetch(inputWnd); if (utf8_mode) { - ks[0] = kcode->value; + bool meta = (kcode->value == 27); + + if (meta) + ks[0] = wgetch(inputWnd); + else + ks[0] = kcode->value; + for (i = 0; i < MAX_KEYSEQ_LENGTH - 1; i++) { int match = match_utf8_keyseq(ks); if (match == -1) @@ -2357,6 +2363,8 @@ if (match > 0) { kcode->value = match; kcode->utf8 = 1; + if (meta) + kcode->mcode = MKEY_META; return; } ks[i + 1] = wgetch(inputWnd); @@ -2365,6 +2373,8 @@ } while (i > 0) ungetch(ks[i--]); + if (meta) + ungetch(ks[0]); memset(ks, 0, sizeof(ks)); } if (kcode->value != 27)