diff --git a/src/terminal/terminaldisplay.cc b/src/terminal/terminaldisplay.cc index b76d84e..a6a06bc 100644 --- a/src/terminal/terminaldisplay.cc +++ b/src/terminal/terminaldisplay.cc @@ -292,7 +292,13 @@ std::string Display::new_frame( bool initialized, const Framebuffer &last, const frame.append( f.ds.bracketed_paste ? "\033[?2004h" : "\033[?2004l" ); } - /* has xterm mouse mode changed (SET_ANY_EVENT_MOUSE)? */ + /* has xterm VT100 mouse mode changed? */ + if ( (!initialized) + || (f.ds.vt100_mouse != frame.last_frame.ds.vt100_mouse) ) { + frame.append( f.ds.vt100_mouse ? "\033[?1000h" : "\033[?1000l" ); + } + + /* has xterm mouse mode changed? */ if ( (!initialized) || (f.ds.xterm_mouse != frame.last_frame.ds.xterm_mouse) ) { frame.append( f.ds.xterm_mouse ? "\033[?1002h" : "\033[?1002l" ); diff --git a/src/terminal/terminalframebuffer.cc b/src/terminal/terminalframebuffer.cc index 0659c31..c1ba094 100644 --- a/src/terminal/terminalframebuffer.cc +++ b/src/terminal/terminalframebuffer.cc @@ -62,8 +62,8 @@ DrawState::DrawState( int s_width, int s_height ) renditions( 0 ), save(), next_print_will_wrap( false ), origin_mode( false ), auto_wrap_mode( true ), insert_mode( false ), cursor_visible( true ), reverse_video( false ), - bracketed_paste( false ), xterm_mouse( false ), xterm_extended_mouse( false ), - application_mode_cursor_keys( false ) + bracketed_paste( false ), vt100_mouse( false ), xterm_mouse( false ), + xterm_extended_mouse( false ), application_mode_cursor_keys( false ) { reinitialize_tabs( 0 ); } diff --git a/src/terminal/terminalframebuffer.h b/src/terminal/terminalframebuffer.h index 01576b7..68c288f 100644 --- a/src/terminal/terminalframebuffer.h +++ b/src/terminal/terminalframebuffer.h @@ -190,6 +190,7 @@ namespace Terminal { bool cursor_visible; bool reverse_video; bool bracketed_paste; + bool vt100_mouse; bool xterm_mouse; bool xterm_extended_mouse; @@ -241,8 +242,8 @@ namespace Terminal { return ( width == x.width ) && ( height == x.height ) && ( cursor_col == x.cursor_col ) && ( cursor_row == x.cursor_row ) && ( cursor_visible == x.cursor_visible ) && ( reverse_video == x.reverse_video ) && ( renditions == x.renditions ) && - ( bracketed_paste == x.bracketed_paste ) && ( xterm_mouse == x.xterm_mouse ) && - ( xterm_extended_mouse == x.xterm_extended_mouse ); + ( bracketed_paste == x.bracketed_paste ) && ( vt100_mouse == x.vt100_mouse ) && + ( xterm_mouse == x.xterm_mouse ) && ( xterm_extended_mouse == x.xterm_extended_mouse ); } }; diff --git a/src/terminal/terminalfunctions.cc b/src/terminal/terminalfunctions.cc index 992c63f..8598ad9 100644 --- a/src/terminal/terminalfunctions.cc +++ b/src/terminal/terminalfunctions.cc @@ -269,6 +269,7 @@ static bool *get_DEC_mode( int param, Framebuffer *fb ) { case 25: return &(fb->ds.cursor_visible); case 1000: /* xterm mouse 1 (normal) */ + return &(fb->ds.vt100_mouse); case 1002: /* xterm mouse 2 (inc. button drags) */ return &(fb->ds.xterm_mouse); case 1006: /* xterm extended mouse */