summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-09-17 11:24:06 -0400
committerJesse Luehrs <doy@tozt.net>2014-09-17 11:24:06 -0400
commit858dfa5e53f2068b0b88eb5ebdaef5afc5f0301d (patch)
tree6e0d6f1a4ec1ce61e9913110009d13a8a16e20f2
parente66769c5c6e6e91d0ac6836c16c81f3a58ccb12a (diff)
downloadlibvt100-858dfa5e53f2068b0b88eb5ebdaef5afc5f0301d.tar.gz
libvt100-858dfa5e53f2068b0b88eb5ebdaef5afc5f0301d.zip
these mouse reporting modes are probably also worthwhile to support
this doesn't really affect anything, but it'll be useful for runes eventually
-rw-r--r--src/parser.c12
-rw-r--r--src/parser.l12
-rw-r--r--src/screen.c20
-rw-r--r--src/screen.h6
4 files changed, 50 insertions, 0 deletions
diff --git a/src/parser.c b/src/parser.c
index 30015f4..fa8d7b8 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -2679,6 +2679,12 @@ static void vt100_parser_handle_sm(VT100Screen *vt, char *buf, size_t len)
case 1000:
vt100_screen_set_mouse_reporting_press_release(vt);
break;
+ case 1002:
+ vt100_screen_set_mouse_reporting_button_motion(vt);
+ break;
+ case 1006:
+ vt100_screen_set_mouse_reporting_sgr_mode(vt);
+ break;
case 47:
case 1049:
vt100_screen_use_alternate_buffer(vt);
@@ -2732,6 +2738,12 @@ static void vt100_parser_handle_rm(VT100Screen *vt, char *buf, size_t len)
case 1000:
vt100_screen_set_mouse_reporting_press_release(vt);
break;
+ case 1002:
+ vt100_screen_set_mouse_reporting_button_motion(vt);
+ break;
+ case 1006:
+ vt100_screen_set_mouse_reporting_sgr_mode(vt);
+ break;
case 47:
case 1049:
vt100_screen_use_normal_buffer(vt);
diff --git a/src/parser.l b/src/parser.l
index da403cd..6594358 100644
--- a/src/parser.l
+++ b/src/parser.l
@@ -511,6 +511,12 @@ static void vt100_parser_handle_sm(VT100Screen *vt, char *buf, size_t len)
case 1000:
vt100_screen_set_mouse_reporting_press_release(vt);
break;
+ case 1002:
+ vt100_screen_set_mouse_reporting_button_motion(vt);
+ break;
+ case 1006:
+ vt100_screen_set_mouse_reporting_sgr_mode(vt);
+ break;
case 47:
case 1049:
vt100_screen_use_alternate_buffer(vt);
@@ -564,6 +570,12 @@ static void vt100_parser_handle_rm(VT100Screen *vt, char *buf, size_t len)
case 1000:
vt100_screen_set_mouse_reporting_press_release(vt);
break;
+ case 1002:
+ vt100_screen_set_mouse_reporting_button_motion(vt);
+ break;
+ case 1006:
+ vt100_screen_set_mouse_reporting_sgr_mode(vt);
+ break;
case 47:
case 1049:
vt100_screen_use_normal_buffer(vt);
diff --git a/src/screen.c b/src/screen.c
index 1fc4edf..5ba16e7 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -684,6 +684,26 @@ void vt100_screen_reset_mouse_reporting_press_release(VT100Screen *vt)
vt->mouse_reporting_press_release = 0;
}
+void vt100_screen_set_mouse_reporting_button_motion(VT100Screen *vt)
+{
+ vt->mouse_reporting_button_motion = 1;
+}
+
+void vt100_screen_reset_mouse_reporting_button_motion(VT100Screen *vt)
+{
+ vt->mouse_reporting_button_motion = 0;
+}
+
+void vt100_screen_set_mouse_reporting_sgr_mode(VT100Screen *vt)
+{
+ vt->mouse_reporting_sgr_mode = 1;
+}
+
+void vt100_screen_reset_mouse_reporting_sgr_mode(VT100Screen *vt)
+{
+ vt->mouse_reporting_sgr_mode = 0;
+}
+
void vt100_screen_set_bracketed_paste(VT100Screen *vt)
{
vt->bracketed_paste = 1;
diff --git a/src/screen.h b/src/screen.h
index 16cfc70..01ad280 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -102,6 +102,8 @@ struct vt100_screen {
unsigned char application_cursor: 1;
unsigned char mouse_reporting_press: 1;
unsigned char mouse_reporting_press_release: 1;
+ unsigned char mouse_reporting_button_motion: 1;
+ unsigned char mouse_reporting_sgr_mode: 1;
unsigned char bracketed_paste: 1;
unsigned char visual_bell: 1;
@@ -175,6 +177,10 @@ void vt100_screen_set_mouse_reporting_press(VT100Screen *vt);
void vt100_screen_reset_mouse_reporting_press(VT100Screen *vt);
void vt100_screen_set_mouse_reporting_press_release(VT100Screen *vt);
void vt100_screen_reset_mouse_reporting_press_release(VT100Screen *vt);
+void vt100_screen_set_mouse_reporting_button_motion(VT100Screen *vt);
+void vt100_screen_reset_mouse_reporting_button_motion(VT100Screen *vt);
+void vt100_screen_set_mouse_reporting_sgr_mode(VT100Screen *vt);
+void vt100_screen_reset_mouse_reporting_sgr_mode(VT100Screen *vt);
void vt100_screen_set_bracketed_paste(VT100Screen *vt);
void vt100_screen_reset_bracketed_paste(VT100Screen *vt);
void vt100_screen_set_window_title(VT100Screen *vt, char *buf, size_t len);