Rewrite termo_interpret_mouse()
This commit is contained in:
parent
5ca6b7fb42
commit
86025fcf6f
27
driver-csi.c
27
driver-csi.c
|
@ -257,48 +257,45 @@ termo_interpret_mouse (termo_t *tk, const termo_key_t *key,
|
||||||
if (key->type != TERMO_TYPE_MOUSE)
|
if (key->type != TERMO_TYPE_MOUSE)
|
||||||
return TERMO_RES_NONE;
|
return TERMO_RES_NONE;
|
||||||
|
|
||||||
if (button)
|
|
||||||
*button = 0;
|
|
||||||
|
|
||||||
termo_key_get_linecol (key, line, col);
|
|
||||||
|
|
||||||
// XXX: WTF is this logic?
|
|
||||||
if (!event)
|
|
||||||
return TERMO_RES_KEY;
|
|
||||||
|
|
||||||
int btn = 0;
|
int btn = 0;
|
||||||
int code = key->code.mouse.info;
|
int code = key->code.mouse.info;
|
||||||
int drag = code & 0x20;
|
int drag = code & 0x20;
|
||||||
code &= ~0x3c;
|
code &= ~0x3c;
|
||||||
|
|
||||||
|
termo_mouse_event_t ev;
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
*event = drag ? TERMO_MOUSE_DRAG : TERMO_MOUSE_PRESS;
|
ev = drag ? TERMO_MOUSE_DRAG : TERMO_MOUSE_PRESS;
|
||||||
btn = code + 1;
|
btn = code + 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
*event = TERMO_MOUSE_RELEASE;
|
ev = TERMO_MOUSE_RELEASE;
|
||||||
// no button hint
|
// no button hint
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 64:
|
case 64:
|
||||||
case 65:
|
case 65:
|
||||||
*event = drag ? TERMO_MOUSE_DRAG : TERMO_MOUSE_PRESS;
|
ev = drag ? TERMO_MOUSE_DRAG : TERMO_MOUSE_PRESS;
|
||||||
btn = code + 4 - 64;
|
btn = code + 4 - 64;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
*event = TERMO_MOUSE_UNKNOWN;
|
ev = TERMO_MOUSE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key->code.mouse.info & 0x8000)
|
||||||
|
ev = TERMO_MOUSE_RELEASE;
|
||||||
|
|
||||||
|
if (event)
|
||||||
|
*event = ev;
|
||||||
if (button)
|
if (button)
|
||||||
*button = btn;
|
*button = btn;
|
||||||
if (key->code.mouse.info & 0x8000)
|
|
||||||
*event = TERMO_MOUSE_RELEASE;
|
termo_key_get_linecol (key, line, col);
|
||||||
return TERMO_RES_KEY;
|
return TERMO_RES_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue