From 47a18cef7c3b32121626893396805c1d8c05db22 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 19 Nov 1998 04:30:14 +0000 Subject: [PATCH] (Fsingle_key_description): Handle generic characters. --- src/keymap.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/keymap.c b/src/keymap.c index a32d8a10110..52d42a12999 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -1840,7 +1840,6 @@ push_key_description (c, p) { unsigned char work[4], *str; int i = CHAR_STRING (c, work, str); - bcopy (str, p, i); p += i; } @@ -1856,14 +1855,34 @@ Control characters turn into C-whatever, etc.") (key) Lisp_Object key; { - char tem[20]; - key = EVENT_HEAD (key); if (INTEGERP (key)) /* Normal character */ { - *push_key_description (XUINT (key), tem) = 0; - return build_string (tem); + unsigned int charset, c1, c2; + + if (SINGLE_BYTE_CHAR_P (XINT (key))) + charset = 0; + else + SPLIT_NON_ASCII_CHAR (XINT (key), charset, c1, c2); + + if (charset + && ((c1 >= 0 && c1 < 32) + || (c2 >= 0 && c2 < 32))) + { + /* Handle a generic character. */ + Lisp_Object name; + name = CHARSET_TABLE_INFO (charset, CHARSET_LONG_NAME_IDX); + CHECK_STRING (name, 0); + return concat2 (build_string ("Character set "), name); + } + else + { + char tem[20]; + + *push_key_description (XUINT (key), tem) = 0; + return build_string (tem); + } } else if (SYMBOLP (key)) /* Function key or event-symbol */ return Fsymbol_name (key); -- 2.39.2