diff options
author | Lukas Fleischer <lfleischer@calcurse.org> | 2017-08-30 16:27:29 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2017-08-30 16:39:23 +0200 |
commit | 578091f051541ffcd68fb755641fd7c45e28977c (patch) | |
tree | 8a02c2ec5c1ac9109076d5bee6c80d553d9c7f8b /src/calcurse.h | |
parent | 8544e4a57016e370a25bb7038cc3ef11c81eb9c3 (diff) | |
download | calcurse-578091f051541ffcd68fb755641fd7c45e28977c.tar.gz calcurse-578091f051541ffcd68fb755641fd7c45e28977c.zip |
Add support for UTF-8 key bindings
A new function keys_wgetch() reads full UTF-8 characters instead of
single ASCII characters only.
Key bindings for regular ASCII characters are stored in a hash map while
the actions of keys with higher code points are stored in a linked list
for space efficiency.
The key serialization methods are updated to handle UTF-8 characters as
well; extended UTF-8 characters (characters not in the ASCII range) are
serialized by using the hexadecimal representation of the corresponding
code points (e.g. "U+00E4").
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src/calcurse.h')
-rw-r--r-- | src/calcurse.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/calcurse.h b/src/calcurse.h index ac1baba..f9439b7 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -230,6 +230,7 @@ ((unsigned char)ch >= 0xF0 ? 4 : \ ((unsigned char)ch >= 0xE0 ? 3 : \ ((unsigned char)ch >= 0xC0 ? 2 : 1))))) +#define UTF8_ISMULTI(ch) ((unsigned char)ch >= 0x80) #define UTF8_ISCONT(ch) ((unsigned char)ch >= 0x80 && \ (unsigned char)ch <= 0xBF) @@ -871,11 +872,12 @@ void keys_free(void); void keys_dump_defaults(char *); const char *keys_get_label(enum key); enum key keys_get_action(int); +int keys_wgetch(WINDOW *); enum key keys_get(WINDOW *, int *, int *); int keys_assign_binding(int, enum key); void keys_remove_binding(int, enum key); int keys_str2int(const char *); -const char *keys_int2str(int); +char *keys_int2str(int); int keys_action_count_keys(enum key); const char *keys_action_firstkey(enum key); const char *keys_action_nkey(enum key, int); |