Add support for setting the mouse protocol
This commit is contained in:
54
termo.c
54
termo.c
@@ -313,6 +313,14 @@ termo_alloc (void)
|
||||
tk->method.emit_codepoint = &emit_codepoint;
|
||||
tk->method.peekkey_simple = &peekkey_simple;
|
||||
tk->method.peekkey_mouse = &peekkey_mouse;
|
||||
|
||||
tk->mouse_proto = TERMO_MOUSE_PROTO_NONE;
|
||||
tk->mouse_tracking = TERMO_MOUSE_TRACKING_NORMAL;
|
||||
tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_NONE;
|
||||
|
||||
tk->ti_data = NULL;
|
||||
tk->ti_method.set_mouse_proto = NULL;
|
||||
tk->ti_method.set_mouse_tracking_mode = NULL;
|
||||
return tk;
|
||||
}
|
||||
|
||||
@@ -625,6 +633,52 @@ termo_get_buffer_remaining (termo_t *tk)
|
||||
return tk->buffsize - tk->buffcount;
|
||||
}
|
||||
|
||||
int
|
||||
termo_get_mouse_proto (termo_t *tk)
|
||||
{
|
||||
return tk->mouse_proto;
|
||||
}
|
||||
|
||||
int
|
||||
termo_guess_mouse_proto (termo_t *tk)
|
||||
{
|
||||
return tk->guessed_mouse_proto;
|
||||
}
|
||||
|
||||
int
|
||||
termo_set_mouse_proto (termo_t *tk, int proto)
|
||||
{
|
||||
int old_proto = tk->mouse_proto;
|
||||
tk->mouse_proto = proto;
|
||||
|
||||
// Call the TI driver to apply the change if needed
|
||||
if (!tk->is_started
|
||||
|| !tk->ti_method.set_mouse_proto)
|
||||
return true;
|
||||
return tk->ti_method.set_mouse_proto (tk->ti_data, old_proto, false)
|
||||
&& tk->ti_method.set_mouse_proto (tk->ti_data, proto, true);
|
||||
}
|
||||
|
||||
termo_mouse_tracking_t
|
||||
termo_get_mouse_tracking_mode (termo_t *tk)
|
||||
{
|
||||
return tk->mouse_tracking;
|
||||
}
|
||||
|
||||
int
|
||||
termo_set_mouse_tracking_mode (termo_t *tk, termo_mouse_tracking_t mode)
|
||||
{
|
||||
termo_mouse_tracking_t old_mode = tk->mouse_tracking;
|
||||
tk->mouse_tracking = mode;
|
||||
|
||||
// Call the TI driver to apply the change if needed
|
||||
if (!tk->is_started
|
||||
|| !tk->ti_method.set_mouse_tracking_mode)
|
||||
return true;
|
||||
return tk->ti_method.set_mouse_tracking_mode (tk->ti_data, old_mode, false)
|
||||
&& tk->ti_method.set_mouse_tracking_mode (tk->ti_data, mode, true);
|
||||
}
|
||||
|
||||
static void
|
||||
eat_bytes (termo_t *tk, size_t count)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user