From 7b3dc4be71e9c611bc4a6b191264f99eb642d44c Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Fri, 30 Nov 2012 14:35:23 +0000 Subject: Return a real key type for unrecognised CSI sequences; allow accessing them by termkey_interpret_csi() --- termkey.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'termkey.c') diff --git a/termkey.c b/termkey.c index e080fec..2bd6da1 100644 --- a/termkey.c +++ b/termkey.c @@ -189,6 +189,7 @@ static TermKey *termkey_alloc(void) tk->buffstart = 0; tk->buffcount = 0; tk->buffsize = 256; /* bytes */ + tk->hightide = 0; tk->restore_termios_valid = 0; @@ -744,6 +745,12 @@ static TermKeyResult peekkey(TermKey *tk, TermKeyKey *key, int force, size_t *nb fprintf(stderr, "\n"); #endif + if(tk->hightide) { + tk->buffstart += tk->hightide; + tk->buffcount -= tk->hightide; + tk->hightide = 0; + } + TermKeyResult ret; struct TermKeyDriverNode *p; for(p = tk->drivers; p; p = p->next) { @@ -1310,6 +1317,9 @@ size_t termkey_strfkey(TermKey *tk, char *buffer, size_t len, TermKeyKey *key, T case TERMKEY_TYPE_POSITION: l = snprintf(buffer + pos, len - pos, "Position"); break; + case TERMKEY_TYPE_UNKNOWN_CSI: + l = snprintf(buffer + pos, len - pos, "CSI %c", key->code.number & 0xff); + break; } if(l <= 0) return pos; @@ -1413,6 +1423,7 @@ int termkey_keycmp(TermKey *tk, const TermKeyKey *key1p, const TermKeyKey *key2p return key1.code.sym - key2.code.sym; break; case TERMKEY_TYPE_FUNCTION: + case TERMKEY_TYPE_UNKNOWN_CSI: if(key1.code.number != key2.code.number) return key1.code.number - key2.code.number; break; -- cgit v1.2.3