X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2FMKkeyname.awk;h=760e1b58aba359ba3bf6894480c8f5e286ff42a6;hp=b27eb75ab8b6ddbf0f954b375cde2ba62b3bfb7b;hb=a1aff38c9421e79f92cd4e8ab0587fdf3806cc28;hpb=7a27c7d49c2e8b4a1ecbe85b4423d647cbc75ea5 diff --git a/ncurses/base/MKkeyname.awk b/ncurses/base/MKkeyname.awk index b27eb75a..760e1b58 100644 --- a/ncurses/base/MKkeyname.awk +++ b/ncurses/base/MKkeyname.awk @@ -1,4 +1,4 @@ -# $Id: MKkeyname.awk,v 1.32 2007/04/21 23:01:49 tom Exp $ +# $Id: MKkeyname.awk,v 1.35 2007/06/09 22:36:10 tom Exp $ ############################################################################## # Copyright (c) 1999-2006,2007 Free Software Foundation, Inc. # # # @@ -74,7 +74,7 @@ END { print " if (MyTable[c] == 0) {" print " int cc = c;" print " p = name;" - print " if (cc >= 128) {" + print " if (cc >= 128 && (SP == 0 || SP->_use_meta)) {" print " strcpy(p, \"M-\");" print " p += 2;" print " cc -= 128;" @@ -118,8 +118,24 @@ END { print "#if USE_WIDEC_SUPPORT" print "NCURSES_EXPORT(NCURSES_CONST char *) key_name (wchar_t c)" print "{" - print " NCURSES_CONST char *result = keyname((int)c);" - print " if (!strncmp(result, \"M-\", 2)) result = 0;" + print " cchar_t my_cchar;" + print " wchar_t *my_wchars;" + print " size_t len;" + print "" + print " /* FIXME: move to _nc_globals */" + print " static char result[MB_LEN_MAX + 1];" + print "" + print " memset(&my_cchar, 0, sizeof(my_cchar));" + print " my_cchar.chars[0] = c;" + print " my_cchar.chars[1] = L'\\0';" + print "" + print " my_wchars = wunctrl(&my_cchar);" + print " len = wcstombs(result, my_wchars, sizeof(result)-1);" + print " if (isEILSEQ(len) || (len == 0)) {" + print " return \"UNKNOWN KEY\";" + print " }" + print "" + print " result[len] = '\\0';" print " return result;" print "}" print "#endif"