Moved the other termkey_interpret_*() functions into driver-csi.c where they arguably belong
This commit is contained in:
parent
b87ca771bf
commit
fdb44d9796
88
driver-csi.c
88
driver-csi.c
|
@ -189,6 +189,59 @@ static TermKeyResult handle_csi_mouse(TermKey *tk, TermKeyKey *key, int cmd, lon
|
||||||
return TERMKEY_RES_NONE;
|
return TERMKEY_RES_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TermKeyResult termkey_interpret_mouse(TermKey *tk, const TermKeyKey *key, TermKeyMouseEvent *event, int *button, int *line, int *col)
|
||||||
|
{
|
||||||
|
if(key->type != TERMKEY_TYPE_MOUSE)
|
||||||
|
return TERMKEY_RES_NONE;
|
||||||
|
|
||||||
|
if(button)
|
||||||
|
*button = 0;
|
||||||
|
|
||||||
|
termkey_key_get_linecol(key, line, col);
|
||||||
|
|
||||||
|
if(!event)
|
||||||
|
return TERMKEY_RES_KEY;
|
||||||
|
|
||||||
|
int btn = 0;
|
||||||
|
|
||||||
|
int code = key->code.mouse[0];
|
||||||
|
|
||||||
|
int drag = code & 0x20;
|
||||||
|
|
||||||
|
code &= ~0x3c;
|
||||||
|
|
||||||
|
switch(code) {
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
*event = drag ? TERMKEY_MOUSE_DRAG : TERMKEY_MOUSE_PRESS;
|
||||||
|
btn = code + 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
*event = TERMKEY_MOUSE_RELEASE;
|
||||||
|
// no button hint
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 64:
|
||||||
|
case 65:
|
||||||
|
*event = drag ? TERMKEY_MOUSE_DRAG : TERMKEY_MOUSE_PRESS;
|
||||||
|
btn = code + 4 - 64;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
*event = TERMKEY_MOUSE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(button)
|
||||||
|
*button = btn;
|
||||||
|
|
||||||
|
if(key->code.mouse[3] & 0x80)
|
||||||
|
*event = TERMKEY_MOUSE_RELEASE;
|
||||||
|
|
||||||
|
return TERMKEY_RES_KEY;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handler for CSI R position reports
|
* Handler for CSI R position reports
|
||||||
*/
|
*/
|
||||||
|
@ -204,6 +257,16 @@ static TermKeyResult handle_csi_position(TermKey *tk, TermKeyKey *key, int cmd,
|
||||||
return TERMKEY_RES_KEY;
|
return TERMKEY_RES_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TermKeyResult termkey_interpret_position(TermKey *tk, const TermKeyKey *key, int *line, int *col)
|
||||||
|
{
|
||||||
|
if(key->type != TERMKEY_TYPE_POSITION)
|
||||||
|
return TERMKEY_RES_NONE;
|
||||||
|
|
||||||
|
termkey_key_get_linecol(key, line, col);
|
||||||
|
|
||||||
|
return TERMKEY_RES_KEY;
|
||||||
|
}
|
||||||
|
|
||||||
#define CHARAT(i) (tk->buffer[tk->buffstart + (i)])
|
#define CHARAT(i) (tk->buffer[tk->buffstart + (i)])
|
||||||
|
|
||||||
static TermKeyResult parse_csi(TermKey *tk, size_t introlen, size_t *csi_len, long args[], size_t *nargs, unsigned long *commandp)
|
static TermKeyResult parse_csi(TermKey *tk, size_t introlen, size_t *csi_len, long args[], size_t *nargs, unsigned long *commandp)
|
||||||
|
@ -274,6 +337,18 @@ static TermKeyResult parse_csi(TermKey *tk, size_t introlen, size_t *csi_len, lo
|
||||||
return TERMKEY_RES_KEY;
|
return TERMKEY_RES_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TermKeyResult termkey_interpret_csi(TermKey *tk, const TermKeyKey *key, long args[], size_t *nargs, unsigned long *cmd)
|
||||||
|
{
|
||||||
|
size_t dummy;
|
||||||
|
|
||||||
|
if(tk->hightide == 0)
|
||||||
|
return TERMKEY_RES_NONE;
|
||||||
|
if(key->type != TERMKEY_TYPE_UNKNOWN_CSI)
|
||||||
|
return TERMKEY_RES_NONE;
|
||||||
|
|
||||||
|
return parse_csi(tk, 0, &dummy, args, nargs, cmd);
|
||||||
|
}
|
||||||
|
|
||||||
static int register_keys(void)
|
static int register_keys(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -527,19 +602,6 @@ static TermKeyResult peekkey(TermKey *tk, void *info, TermKeyKey *key, int force
|
||||||
return TERMKEY_RES_NONE;
|
return TERMKEY_RES_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* non-static */
|
|
||||||
TermKeyResult termkey_interpret_csi(TermKey *tk, const TermKeyKey *key, long args[], size_t *nargs, unsigned long *cmd)
|
|
||||||
{
|
|
||||||
size_t dummy;
|
|
||||||
|
|
||||||
if(tk->hightide == 0)
|
|
||||||
return TERMKEY_RES_NONE;
|
|
||||||
if(key->type != TERMKEY_TYPE_UNKNOWN_CSI)
|
|
||||||
return TERMKEY_RES_NONE;
|
|
||||||
|
|
||||||
return parse_csi(tk, 0, &dummy, args, nargs, cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct TermKeyDriver termkey_driver_csi = {
|
struct TermKeyDriver termkey_driver_csi = {
|
||||||
.name = "CSI",
|
.name = "CSI",
|
||||||
|
|
||||||
|
|
63
termkey.c
63
termkey.c
|
@ -910,69 +910,6 @@ static TermKeyResult peekkey_mouse(TermKey *tk, TermKeyKey *key, size_t *nbytep)
|
||||||
return TERMKEY_RES_KEY;
|
return TERMKEY_RES_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
TermKeyResult termkey_interpret_mouse(TermKey *tk, const TermKeyKey *key, TermKeyMouseEvent *event, int *button, int *line, int *col)
|
|
||||||
{
|
|
||||||
if(key->type != TERMKEY_TYPE_MOUSE)
|
|
||||||
return TERMKEY_RES_NONE;
|
|
||||||
|
|
||||||
if(button)
|
|
||||||
*button = 0;
|
|
||||||
|
|
||||||
termkey_key_get_linecol(key, line, col);
|
|
||||||
|
|
||||||
if(!event)
|
|
||||||
return TERMKEY_RES_KEY;
|
|
||||||
|
|
||||||
int btn = 0;
|
|
||||||
|
|
||||||
int code = key->code.mouse[0];
|
|
||||||
|
|
||||||
int drag = code & 0x20;
|
|
||||||
|
|
||||||
code &= ~0x3c;
|
|
||||||
|
|
||||||
switch(code) {
|
|
||||||
case 0:
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
*event = drag ? TERMKEY_MOUSE_DRAG : TERMKEY_MOUSE_PRESS;
|
|
||||||
btn = code + 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
*event = TERMKEY_MOUSE_RELEASE;
|
|
||||||
// no button hint
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 64:
|
|
||||||
case 65:
|
|
||||||
*event = drag ? TERMKEY_MOUSE_DRAG : TERMKEY_MOUSE_PRESS;
|
|
||||||
btn = code + 4 - 64;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
*event = TERMKEY_MOUSE_UNKNOWN;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(button)
|
|
||||||
*button = btn;
|
|
||||||
|
|
||||||
if(key->code.mouse[3] & 0x80)
|
|
||||||
*event = TERMKEY_MOUSE_RELEASE;
|
|
||||||
|
|
||||||
return TERMKEY_RES_KEY;
|
|
||||||
}
|
|
||||||
|
|
||||||
TermKeyResult termkey_interpret_position(TermKey *tk, const TermKeyKey *key, int *line, int *col)
|
|
||||||
{
|
|
||||||
if(key->type != TERMKEY_TYPE_POSITION)
|
|
||||||
return TERMKEY_RES_NONE;
|
|
||||||
|
|
||||||
termkey_key_get_linecol(key, line, col);
|
|
||||||
|
|
||||||
return TERMKEY_RES_KEY;
|
|
||||||
}
|
|
||||||
|
|
||||||
TermKeyResult termkey_getkey(TermKey *tk, TermKeyKey *key)
|
TermKeyResult termkey_getkey(TermKey *tk, TermKeyKey *key)
|
||||||
{
|
{
|
||||||
size_t nbytes = 0;
|
size_t nbytes = 0;
|
||||||
|
|
Loading…
Reference in New Issue