terminal: add terminal_set_mouse_input function

This function is used to enable/disable mouse input for win32 and unix.
This commit is contained in:
nanahi 2024-03-31 15:30:26 -04:00 committed by Kacper Michajłow
parent abc0b0e8c9
commit c2ed2e7bc8
6 changed files with 19 additions and 6 deletions

View File

@ -588,6 +588,12 @@ void terminal_get_size2(int *rows, int *cols, int *px_width, int *px_height)
*px_height = ws.ws_ypixel;
}
void terminal_set_mouse_input(bool enable)
{
printf(enable ? TERM_ESC_ENABLE_MOUSE : TERM_ESC_DISABLE_MOUSE);
fflush(stdout);
}
void terminal_init(void)
{
assert(!getch2_enabled);

View File

@ -556,6 +556,10 @@ bool terminal_try_attach(void)
return true;
}
void terminal_set_mouse_input(bool enable)
{
}
void terminal_init(void)
{
CONSOLE_SCREEN_BUFFER_INFO cinfo;

View File

@ -58,6 +58,9 @@ void terminal_get_size(int *w, int *h);
/* Get terminal-size in columns/rows and width/height in pixels. */
void terminal_get_size2(int *rows, int *cols, int *px_width, int *px_height);
/* Enable/Disable mouse input. */
void terminal_set_mouse_input(bool enable);
// Windows only.
int mp_console_vfprintf(void *wstream, const char *format, va_list args);
int mp_console_write(void *wstream, bstr str);

View File

@ -362,7 +362,7 @@ static int preinit(struct vo *vo)
#endif
write_str(TERM_ESC_HIDE_CURSOR);
write_str(TERM_ESC_ENABLE_MOUSE);
terminal_set_mouse_input(true);
if (p->opts.alt_screen)
write_str(TERM_ESC_ALT_SCREEN);
@ -390,7 +390,7 @@ static void uninit(struct vo *vo)
#endif
write_str(TERM_ESC_RESTORE_CURSOR);
write_str(TERM_ESC_DISABLE_MOUSE);
terminal_set_mouse_input(false);
if (p->opts.alt_screen) {
write_str(TERM_ESC_NORMAL_SCREEN);

View File

@ -520,7 +520,7 @@ static int preinit(struct vo *vo)
sixel_strwrite(TERM_ESC_ALT_SCREEN);
sixel_strwrite(TERM_ESC_HIDE_CURSOR);
sixel_strwrite(TERM_ESC_ENABLE_MOUSE);
terminal_set_mouse_input(true);
/* don't use private color registers for each frame. */
sixel_strwrite(TERM_ESC_USE_GLOBAL_COLOR_REG);
@ -560,7 +560,7 @@ static void uninit(struct vo *vo)
struct priv *priv = vo->priv;
sixel_strwrite(TERM_ESC_RESTORE_CURSOR);
sixel_strwrite(TERM_ESC_DISABLE_MOUSE);
terminal_set_mouse_input(false);
if (priv->opts.alt_screen)
sixel_strwrite(TERM_ESC_NORMAL_SCREEN);

View File

@ -299,7 +299,7 @@ static void flip_page(struct vo *vo)
static void uninit(struct vo *vo)
{
WRITE_STR(TERM_ESC_RESTORE_CURSOR);
WRITE_STR(TERM_ESC_DISABLE_MOUSE);
terminal_set_mouse_input(false);
WRITE_STR(TERM_ESC_NORMAL_SCREEN);
struct priv *p = vo->priv;
talloc_free(p->frame);
@ -329,7 +329,7 @@ static int preinit(struct vo *vo)
}
WRITE_STR(TERM_ESC_HIDE_CURSOR);
WRITE_STR(TERM_ESC_ENABLE_MOUSE);
terminal_set_mouse_input(true);
WRITE_STR(TERM_ESC_ALT_SCREEN);
return 0;