aboutsummaryrefslogtreecommitdiffstats
path: root/src/calcurse.h
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@calcurse.org>2017-08-30 16:27:29 +0200
committerLukas Fleischer <lfleischer@calcurse.org>2017-08-30 16:39:23 +0200
commit578091f051541ffcd68fb755641fd7c45e28977c (patch)
tree8a02c2ec5c1ac9109076d5bee6c80d553d9c7f8b /src/calcurse.h
parent8544e4a57016e370a25bb7038cc3ef11c81eb9c3 (diff)
downloadcalcurse-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.h4
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);