From 7078556f9d055cb46339d436add2a03cc8abbc71 Mon Sep 17 00:00:00 2001 From: Lars Henriksen Date: Mon, 26 Mar 2018 18:44:08 +0200 Subject: Key bindings for UTF-8 encoded characters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Internally characters (keys) have two representations: integers and key names. Key names are characters strings, usually the name of the character; e.g., the character A has the representations 65 and "A", and the tab character the representations 9 and "TAB". The function keys_int2str() turns the integer representation of a key/character into the key name. For display purposes the key names are usually confined to have display width at most three. Some curses pseudo-keys have longer key names; e.g., the back-tab character is "KEY_BTAB". A long key name makes a character difficult to recognize in the status bar menu. The key name of a multibyte, UTF-8 encoded character is the conventional Unicode name of the code point; e.g., the character ü has key name "U+00FC" because ü is the code point 0xFC. Most of these look alike in the status bar menu. The patch makes the key name of a multibyte character look like that of a singlebyte character: the character itself, i.e. the key name of the character ü is "ü". The main tool is implementation of a utf8_encode() routine. Signed-off-by: Lukas Fleischer --- src/calcurse.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/calcurse.h') diff --git a/src/calcurse.h b/src/calcurse.h index c362055..0d77e8f 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -1119,6 +1119,7 @@ int utf8_decode(const char *); int utf8_width(char *); int utf8_strwidth(char *); int utf8_chop(char *, int); +char *utf8_encode(int); /* utils.c */ void exit_calcurse(int) __attribute__ ((__noreturn__)); -- cgit v1.2.3-54-g00ecf