* fhandler.h (class dev_console): Add member ext_mouse_mode5.
* fhandler_console.cc (fhandler_console::read): Implement extended mouse mode 1005 (xterm, mintty). Fix actual mouse reporting for large coordinates.
This commit is contained in:
parent
f1ce77295d
commit
8ee7527dc2
|
@ -1,3 +1,10 @@
|
|||
2012-04-25 Thomas Wolff <towo@towo.net>
|
||||
|
||||
* fhandler.h (class dev_console): Add member ext_mouse_mode5.
|
||||
* fhandler_console.cc (fhandler_console::read): Implement extended
|
||||
mouse mode 1005 (xterm, mintty).
|
||||
Fix actual mouse reporting for large coordinates.
|
||||
|
||||
2012-04-24 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 15.
|
||||
|
|
|
@ -1288,6 +1288,7 @@ class dev_console
|
|||
|
||||
bool insert_mode;
|
||||
int use_mouse;
|
||||
bool ext_mouse_mode5;
|
||||
bool ext_mouse_mode6;
|
||||
bool ext_mouse_mode15;
|
||||
bool use_focus;
|
||||
|
|
|
@ -307,14 +307,6 @@ fhandler_console::mouse_aware (MOUSE_EVENT_RECORD& mouse_event)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Check whether adjusted mouse position can be reported */
|
||||
if (dev_state.dwMousePosition.X > 0xFF - ' ' - 1
|
||||
|| dev_state.dwMousePosition.Y > 0xFF - ' ' - 1)
|
||||
{
|
||||
/* Mouse position out of reporting range */
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ((mouse_event.dwEventFlags == 0 || mouse_event.dwEventFlags == DOUBLE_CLICK)
|
||||
&& mouse_event.dwButtonState != dev_state.dwLastButtonState)
|
||||
|| mouse_event.dwEventFlags == MOUSE_WHEELED
|
||||
|
@ -646,7 +638,34 @@ fhandler_console::read (void *pv, size_t& buflen)
|
|||
dev_state.dwMousePosition.Y + 1);
|
||||
nread = strlen (tmp);
|
||||
}
|
||||
/* else if (dev_state.ext_mouse_mode5) not implemented */
|
||||
else if (dev_state.ext_mouse_mode5)
|
||||
{
|
||||
unsigned int xcode = dev_state.dwMousePosition.X + ' ' + 1;
|
||||
unsigned int ycode = dev_state.dwMousePosition.Y + ' ' + 1;
|
||||
|
||||
__small_sprintf (tmp, "\033[M%c", b + ' ');
|
||||
nread = 4;
|
||||
/* the neat nested encoding function of mintty
|
||||
does not compile in g++, so let's unfold it: */
|
||||
if (xcode < 0x80)
|
||||
tmp [nread++] = xcode;
|
||||
else if (xcode < 0x800)
|
||||
{
|
||||
tmp [nread++] = 0xC0 + (xcode >> 6);
|
||||
tmp [nread++] = 0x80 + (xcode & 0x3F);
|
||||
}
|
||||
else
|
||||
tmp [nread++] = 0;
|
||||
if (ycode < 0x80)
|
||||
tmp [nread++] = ycode;
|
||||
else if (ycode < 0x800)
|
||||
{
|
||||
tmp [nread++] = 0xC0 + (ycode >> 6);
|
||||
tmp [nread++] = 0x80 + (ycode & 0x3F);
|
||||
}
|
||||
else
|
||||
tmp [nread++] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int xcode = dev_state.dwMousePosition.X + ' ' + 1;
|
||||
|
@ -1566,7 +1585,7 @@ fhandler_console::char_command (char c)
|
|||
break;
|
||||
|
||||
case 1005: /* Extended mouse mode */
|
||||
syscall_printf ("ignored h/l command for extended mouse mode");
|
||||
dev_state.ext_mouse_mode5 = c == 'h';
|
||||
break;
|
||||
|
||||
case 1006: /* SGR extended mouse mode */
|
||||
|
|
Loading…
Reference in New Issue