diff options
Diffstat (limited to 'termkey-internal.h')
-rw-r--r-- | termkey-internal.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/termkey-internal.h b/termkey-internal.h index 271e628..9abc43d 100644 --- a/termkey-internal.h +++ b/termkey-internal.h @@ -13,6 +13,13 @@ struct termkey_driver termkey_result (*getkey)(termkey_t *tk, termkey_key *key); }; +struct keyinfo { + termkey_type type; + termkey_keysym sym; + int modifier_mask; + int modifier_set; +}; + struct termkey { int fd; int flags; @@ -31,6 +38,9 @@ struct termkey { int nkeynames; const char **keynames; + // There are 32 C0 codes + struct keyinfo c0[32]; + struct termkey_driver driver; void *driver_info; @@ -38,9 +48,21 @@ struct termkey { // want exported as real symbols in the library struct { void (*eat_bytes)(termkey_t *tk, size_t count); + void (*emit_codepoint)(termkey_t *tk, int codepoint, termkey_key *key); } method; }; extern struct termkey_driver termkey_driver_csi; +// Keep this here for now since it's tiny +static inline int utf8_seqlen(int codepoint) +{ + if(codepoint < 0x0000080) return 1; + if(codepoint < 0x0000800) return 2; + if(codepoint < 0x0010000) return 3; + if(codepoint < 0x0200000) return 4; + if(codepoint < 0x4000000) return 5; + return 6; +} + #endif |