From ca4d98b0f7d1a096e1d52fe8509e576ed8ab6faf Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Wed, 25 Apr 2012 18:32:18 +0100 Subject: Have demo.c request cursor position on '?'; print position reports and mouse nicer --- demo.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/demo.c b/demo.c index dcd3970..646fe9a 100644 --- a/demo.c +++ b/demo.c @@ -26,7 +26,6 @@ int main(int argc, char *argv[]) mouse = atoi(optarg); else mouse = 1000; - format |= TERMKEY_FORMAT_MOUSE_POS; break; @@ -59,12 +58,31 @@ int main(int argc, char *argv[]) while((ret = termkey_waitkey(tk, &key)) != TERMKEY_RES_EOF) { if(ret == TERMKEY_RES_KEY) { termkey_strfkey(tk, buffer, sizeof buffer, &key, format); - printf("%s\n", buffer); + if(key.type == TERMKEY_TYPE_MOUSE) { + int line, col; + termkey_interpret_mouse(tk, &key, NULL, NULL, &line, &col); + printf("%s at line=%d, col=%d)\n", buffer, line, col); + } + else if(key.type == TERMKEY_TYPE_POSITION) { + int line, col; + termkey_interpret_position(tk, &key, &line, &col); + printf("Cursor position report at line=%d, col=%d)\n", line, col); + } + else { + printf("%s\n", buffer); + } - if(key.type == TERMKEY_TYPE_UNICODE && + if(key.type == TERMKEY_TYPE_UNICODE && key.modifiers & TERMKEY_KEYMOD_CTRL && (key.code.codepoint == 'C' || key.code.codepoint == 'c')) break; + + if(key.type == TERMKEY_TYPE_UNICODE && + key.modifiers == 0 && + key.code.codepoint == '?') { + printf("\033[6n"); + fflush(stdout); + } } else if(ret == TERMKEY_RES_ERROR) { if(errno != EINTR) { -- cgit v1.2.3-70-g09d2