Allow formatting the mouse position when rendering an event to a string
This commit is contained in:
parent
571e5b701f
commit
ba0c32e8d8
5
demo.c
5
demo.c
|
@ -8,6 +8,7 @@ int main(int argc, char *argv[])
|
|||
TERMKEY_CHECK_VERSION;
|
||||
|
||||
int mouse = 0;
|
||||
TermKeyFormat format = TERMKEY_FORMAT_VIM;
|
||||
|
||||
char buffer[50];
|
||||
TermKey *tk;
|
||||
|
@ -20,6 +21,8 @@ int main(int argc, char *argv[])
|
|||
mouse = atoi(optarg);
|
||||
else
|
||||
mouse = 1000;
|
||||
format |= TERMKEY_FORMAT_MOUSE_POS;
|
||||
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Usage: %s [-m]\n", argv[0]);
|
||||
|
@ -41,7 +44,7 @@ int main(int argc, char *argv[])
|
|||
printf("\e[?%dhMouse mode active\n", mouse);
|
||||
|
||||
while((ret = termkey_waitkey(tk, &key)) != TERMKEY_RES_EOF) {
|
||||
termkey_snprint_key(tk, buffer, sizeof buffer, &key, TERMKEY_FORMAT_VIM);
|
||||
termkey_snprint_key(tk, buffer, sizeof buffer, &key, format);
|
||||
printf("%s\n", buffer);
|
||||
|
||||
if(key.type == TERMKEY_TYPE_UNICODE &&
|
||||
|
|
10
termkey.c
10
termkey.c
|
@ -1002,12 +1002,20 @@ size_t termkey_snprint_key(TermKey *tk, char *buffer, size_t len, TermKeyKey *ke
|
|||
{
|
||||
TermKeyMouseEvent ev;
|
||||
int button;
|
||||
termkey_interpret_mouse(tk, key, &ev, &button, NULL, NULL);
|
||||
int line, col;
|
||||
termkey_interpret_mouse(tk, key, &ev, &button, &line, &col);
|
||||
|
||||
static char *evnames[] = { "Unknown", "Press", "Drag", "Release" };
|
||||
|
||||
l = snprintf(buffer + pos, len - pos, "Mouse%s(%d)",
|
||||
evnames[ev], button);
|
||||
|
||||
if(format & TERMKEY_FORMAT_MOUSE_POS) {
|
||||
if(l <= 0) return pos;
|
||||
pos += l;
|
||||
|
||||
l = snprintf(buffer + pos, len - pos, " @ (%d,%d)", col, line);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -174,6 +174,8 @@ typedef enum {
|
|||
TERMKEY_FORMAT_CARETCTRL = 1 << 1, // ^X instead of C-X
|
||||
TERMKEY_FORMAT_ALTISMETA = 1 << 2, // Meta- or M- instead of Alt- or A-
|
||||
TERMKEY_FORMAT_WRAPBRACKET = 1 << 3, // Wrap special keys in brackets like <Escape>
|
||||
|
||||
TERMKEY_FORMAT_MOUSE_POS = 1 << 8, // Include mouse position if relevant; @ col,line
|
||||
} TermKeyFormat;
|
||||
|
||||
// Some useful combinations
|
||||
|
|
|
@ -26,6 +26,9 @@ Use the name "Meta" or the letter "M" instead of "Alt" or "A".
|
|||
.TP
|
||||
.B TERMKEY_FORMAT_WRAPBRACKET
|
||||
If the key event is a special key instead of unmodified Unicode, wrap it in "<brackets>".
|
||||
.TP
|
||||
.B TERMKEY_FORMAT_MOUSE_POS
|
||||
If the event is a mouse event, include the position rendered as "@ (col,line)".
|
||||
.PP
|
||||
The following shortcuts are provided for common combinations of format bits:
|
||||
.TP
|
||||
|
|
Loading…
Reference in New Issue