* [PATCH] Extended mouse coordinates @ 2012-04-22 19:08 Thomas Wolff 2012-04-24 14:44 ` Corinna Vinschen 0 siblings, 1 reply; 9+ messages in thread From: Thomas Wolff @ 2012-04-22 19:08 UTC (permalink / raw) To: cygwin-patches [-- Attachment #1: Type: text/plain, Size: 482 bytes --] This patch replaces my previous proposal (http://cygwin.com/ml/cygwin-patches/2012-q2/msg00005.html) with two modifications: * Fixed a bug that suppressed mouse reporting at large coordinates (in all modes actually:-\ ) * Added mouse mode 1005 (total of 3 three new modes, so all reporting modes run by current terminal emulators would be implemented) I would appreciate the patch to be applied this time, planned to be my last mouse patch :) Kind regards, Thomas [-- Attachment #2: mouse-modes-6-16.changelog --] [-- Type: text/plain, Size: 498 bytes --] 2012-04-03 Thomas Wolff <towo@towo.net> * fhandler.h (class dev_console): Two flags for extended mouse modes. * fhandler_console.cc (fhandler_console::read): Implemented extended mouse modes 1015 (urxvt, mintty, xterm) and 1006 (xterm). Not implemented extended mouse mode 1005 (xterm, mintty). Supporting mouse coordinates greater than 222 (each axis). Also: two { wrap formatting consistency fixes. (fhandler_console::char_command) Initialization of enhanced mouse reporting modes. [-- Attachment #3: mouse-modes-6-16.patch --] [-- Type: text/plain, Size: 4760 bytes --] diff -rup sav/fhandler.h ./fhandler.h --- sav/fhandler.h 2012-04-01 19:46:04.000000000 +0200 +++ ./fhandler.h 2012-04-03 15:52:07.893561600 +0200 @@ -1282,6 +1282,8 @@ class dev_console bool insert_mode; int use_mouse; + bool ext_mouse_mode6; + bool ext_mouse_mode15; bool use_focus; bool raw_win32_keyboard_mode; diff -rup sav/fhandler_console.cc ./fhandler_console.cc --- sav/fhandler_console.cc 2012-04-02 00:28:55.000000000 +0200 +++ ./fhandler_console.cc 2012-04-03 15:56:13.993152400 +0200 @@ -452,12 +452,13 @@ fhandler_console::read (void *pv, size_t { char c = dev_state.backspace_keycode; nread = 0; - if (control_key_state & ALT_PRESSED) { - if (dev_state.metabit) - c |= 0x80; - else - tmp[nread++] = '\e'; - } + if (control_key_state & ALT_PRESSED) + { + if (dev_state.metabit) + c |= 0x80; + else + tmp[nread++] = '\e'; + } tmp[nread++] = c; tmp[nread] = 0; toadd = tmp; @@ -550,6 +551,7 @@ fhandler_console::read (void *pv, size_t events at the same time. */ int b = 0; char sz[32]; + char mode6_term = 'M'; if (mouse_event.dwEventFlags == MOUSE_WHEELED) { @@ -573,7 +575,7 @@ fhandler_console::read (void *pv, size_t { b = dev_state.last_button_code; } - else if (mouse_event.dwButtonState < dev_state.dwLastButtonState) + else if (mouse_event.dwButtonState < dev_state.dwLastButtonState && !dev_state.ext_mouse_mode6) { b = 3; strcpy (sz, "btn up"); @@ -594,6 +596,10 @@ fhandler_console::read (void *pv, size_t strcpy (sz, "btn3 down"); } + if (dev_state.ext_mouse_mode6) /* distinguish release */ + if (mouse_event.dwButtonState < dev_state.dwLastButtonState) + mode6_term = 'm'; + dev_state.last_button_code = b; if (mouse_event.dwEventFlags == MOUSE_MOVED) @@ -625,25 +631,46 @@ fhandler_console::read (void *pv, size_t b |= dev_state.nModifiers; /* We can now create the code. */ - sprintf (tmp, "\033[M%c%c%c", b + ' ', dev_state.dwMousePosition.X + ' ' + 1, dev_state.dwMousePosition.Y + ' ' + 1); + if (dev_state.ext_mouse_mode6) + { + sprintf (tmp, "\033[<%d;%d;%d%c", b, dev_state.dwMousePosition.X + 1, dev_state.dwMousePosition.Y + 1, mode6_term); + nread = strlen (tmp); + } + else if (dev_state.ext_mouse_mode15) + { + sprintf (tmp, "\033[%d;%d;%dM", b + 32, dev_state.dwMousePosition.X + 1, dev_state.dwMousePosition.Y + 1); + nread = strlen (tmp); + } + /* else if (dev_state.ext_mouse_mode5) not implemented */ + else + { + unsigned int xcode = dev_state.dwMousePosition.X + ' ' + 1; + unsigned int ycode = dev_state.dwMousePosition.Y + ' ' + 1; + if (xcode >= 256) + xcode = 0; + if (ycode >= 256) + ycode = 0; + sprintf (tmp, "\033[M%c%c%c", b + ' ', xcode, ycode); + nread = 6; /* tmp may contain NUL bytes */ + } syscall_printf ("mouse: %s at (%d,%d)", sz, dev_state.dwMousePosition.X, dev_state.dwMousePosition.Y); toadd = tmp; - nread = 6; } } break; case FOCUS_EVENT: - if (dev_state.use_focus) { - if (input_rec.Event.FocusEvent.bSetFocus) - sprintf (tmp, "\033[I"); - else - sprintf (tmp, "\033[O"); + if (dev_state.use_focus) + { + if (input_rec.Event.FocusEvent.bSetFocus) + sprintf (tmp, "\033[I"); + else + sprintf (tmp, "\033[O"); - toadd = tmp; - nread = 3; - } + toadd = tmp; + nread = 3; + } break; case WINDOW_BUFFER_SIZE_EVENT: @@ -1516,22 +1543,30 @@ fhandler_console::char_command (char c) case 1000: /* Mouse tracking */ dev_state.use_mouse = (c == 'h') ? 1 : 0; - syscall_printf ("mouse support set to mode %d", dev_state.use_mouse); break; case 1002: /* Mouse button event tracking */ dev_state.use_mouse = (c == 'h') ? 2 : 0; - syscall_printf ("mouse support set to mode %d", dev_state.use_mouse); break; case 1003: /* Mouse any event tracking */ dev_state.use_mouse = (c == 'h') ? 3 : 0; - syscall_printf ("mouse support set to mode %d", dev_state.use_mouse); break; case 1004: /* Focus in/out event reporting */ dev_state.use_focus = (c == 'h') ? true : false; - syscall_printf ("focus reporting set to %d", dev_state.use_focus); + break; + + case 1005: /* Extended mouse mode */ + syscall_printf ("ignored h/l command for extended mouse mode"); + break; + + case 1006: /* SGR extended mouse mode */ + dev_state.ext_mouse_mode6 = c == 'h'; + break; + + case 1015: /* Urxvt extended mouse mode */ + dev_state.ext_mouse_mode15 = c == 'h'; break; case 2000: /* Raw keyboard mode */ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Extended mouse coordinates 2012-04-22 19:08 [PATCH] Extended mouse coordinates Thomas Wolff @ 2012-04-24 14:44 ` Corinna Vinschen 2012-04-24 19:35 ` Thomas Wolff 0 siblings, 1 reply; 9+ messages in thread From: Corinna Vinschen @ 2012-04-24 14:44 UTC (permalink / raw) To: cygwin-patches On Apr 22 21:07, Thomas Wolff wrote: > This patch replaces my previous proposal > (http://cygwin.com/ml/cygwin-patches/2012-q2/msg00005.html) with two > modifications: > > * Fixed a bug that suppressed mouse reporting at large coordinates (in > all modes actually:-\ ) > * Added mouse mode 1005 (total of 3 three new modes, so all reporting > modes run by current terminal emulators would be implemented) > > I would appreciate the patch to be applied this time, planned to be > my last mouse patch :) > > Kind regards, > Thomas > 2012-04-03 Thomas Wolff <towo@towo.net> > > * fhandler.h (class dev_console): Two flags for extended mouse modes. > * fhandler_console.cc (fhandler_console::read): Implemented > extended mouse modes 1015 (urxvt, mintty, xterm) and 1006 (xterm). > Not implemented extended mouse mode 1005 (xterm, mintty). > Supporting mouse coordinates greater than 222 (each axis). > Also: two { wrap formatting consistency fixes. > (fhandler_console::char_command) Initialization of enhanced > mouse reporting modes. > Patch applied with changes. Please use __small_sprintf rather than sprintf. I also changed the CHangeLog entry slightly. Keep it short and in present tense. Thanks, Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Extended mouse coordinates 2012-04-24 14:44 ` Corinna Vinschen @ 2012-04-24 19:35 ` Thomas Wolff 2012-04-24 19:45 ` Corinna Vinschen 0 siblings, 1 reply; 9+ messages in thread From: Thomas Wolff @ 2012-04-24 19:35 UTC (permalink / raw) To: cygwin-patches Am 24.04.2012 16:44, schrieb Corinna Vinschen: > On Apr 22 21:07, Thomas Wolff wrote: >> This patch replaces my previous proposal >> (http://cygwin.com/ml/cygwin-patches/2012-q2/msg00005.html) with two >> modifications: >> >> * Fixed a bug that suppressed mouse reporting at large coordinates (in >> all modes actually:-\ ) >> * Added mouse mode 1005 (total of 3 three new modes, so all reporting >> modes run by current terminal emulators would be implemented) >> >> I would appreciate the patch to be applied this time, planned to be >> my last mouse patch :) >> >> Kind regards, >> Thomas >> 2012-04-03 Thomas Wolff<towo@towo.net> >> >> * fhandler.h (class dev_console): Two flags for extended mouse modes. >> * fhandler_console.cc (fhandler_console::read): Implemented >> extended mouse modes 1015 (urxvt, mintty, xterm) and 1006 (xterm). >> Not implemented extended mouse mode 1005 (xterm, mintty). >> Supporting mouse coordinates greater than 222 (each axis). >> Also: two { wrap formatting consistency fixes. >> (fhandler_console::char_command) Initialization of enhanced >> mouse reporting modes. >> > Patch applied with changes. Please use __small_sprintf rather than > sprintf. I also changed the CHangeLog entry slightly. Keep it short > and in present tense. > > > Thanks, > Corinna > Hmm, thanks but I'm afraid this went wrong. You quote (and probably applied) my first patch which is missing mouse mode 1005 and unfortunately also has a bug which effectively makes the extended coordinates unusable (because the reports are suppressed in that case as they were before :( ). The mail you responded to contained an updated patch. Thomas ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Extended mouse coordinates 2012-04-24 19:35 ` Thomas Wolff @ 2012-04-24 19:45 ` Corinna Vinschen 2012-04-24 19:48 ` Corinna Vinschen 0 siblings, 1 reply; 9+ messages in thread From: Corinna Vinschen @ 2012-04-24 19:45 UTC (permalink / raw) To: cygwin-patches On Apr 24 21:35, Thomas Wolff wrote: > Am 24.04.2012 16:44, schrieb Corinna Vinschen: > >On Apr 22 21:07, Thomas Wolff wrote: > >>This patch replaces my previous proposal > >>(http://cygwin.com/ml/cygwin-patches/2012-q2/msg00005.html) with two > >>modifications: > >> > >> * Fixed a bug that suppressed mouse reporting at large coordinates (in > >> all modes actually:-\ ) > >> * Added mouse mode 1005 (total of 3 three new modes, so all reporting > >> modes run by current terminal emulators would be implemented) > >> > >>I would appreciate the patch to be applied this time, planned to be > >>my last mouse patch :) > >> > >>Kind regards, > >>Thomas > >>2012-04-03 Thomas Wolff<towo@towo.net> > >> > >> * fhandler.h (class dev_console): Two flags for extended mouse modes. > >> * fhandler_console.cc (fhandler_console::read): Implemented > >> extended mouse modes 1015 (urxvt, mintty, xterm) and 1006 (xterm). > >> Not implemented extended mouse mode 1005 (xterm, mintty). > >> Supporting mouse coordinates greater than 222 (each axis). > >> Also: two { wrap formatting consistency fixes. > >> (fhandler_console::char_command) Initialization of enhanced > >> mouse reporting modes. > >> > >Patch applied with changes. Please use __small_sprintf rather than > >sprintf. I also changed the CHangeLog entry slightly. Keep it short > >and in present tense. > > > > > >Thanks, > >Corinna > > > Hmm, thanks but I'm afraid this went wrong. You quote (and probably > applied) my first patch which is missing mouse mode 1005 and > unfortunately also has a bug which effectively makes the extended > coordinates unusable (because the reports are suppressed in that > case as they were before :( ). > The mail you responded to contained an updated patch. That was exactly the patch I applied. I only chnaged the formatting and changed sprintf to __small_sprintf. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Extended mouse coordinates 2012-04-24 19:45 ` Corinna Vinschen @ 2012-04-24 19:48 ` Corinna Vinschen 2012-04-24 20:00 ` Thomas Wolff 0 siblings, 1 reply; 9+ messages in thread From: Corinna Vinschen @ 2012-04-24 19:48 UTC (permalink / raw) To: cygwin-patches On Apr 24 21:45, Corinna Vinschen wrote: > On Apr 24 21:35, Thomas Wolff wrote: > > Am 24.04.2012 16:44, schrieb Corinna Vinschen: > > >On Apr 22 21:07, Thomas Wolff wrote: > > >>This patch replaces my previous proposal > > >>(http://cygwin.com/ml/cygwin-patches/2012-q2/msg00005.html) with two > > >>modifications: > > >> > > >> * Fixed a bug that suppressed mouse reporting at large coordinates (in > > >> all modes actually:-\ ) > > >> * Added mouse mode 1005 (total of 3 three new modes, so all reporting > > >> modes run by current terminal emulators would be implemented) > > >> > > >>I would appreciate the patch to be applied this time, planned to be > > >>my last mouse patch :) > > >> > > >>Kind regards, > > >>Thomas > > >>2012-04-03 Thomas Wolff<towo@towo.net> > > >> > > >> * fhandler.h (class dev_console): Two flags for extended mouse modes. > > >> * fhandler_console.cc (fhandler_console::read): Implemented > > >> extended mouse modes 1015 (urxvt, mintty, xterm) and 1006 (xterm). > > >> Not implemented extended mouse mode 1005 (xterm, mintty). > > >> Supporting mouse coordinates greater than 222 (each axis). > > >> Also: two { wrap formatting consistency fixes. > > >> (fhandler_console::char_command) Initialization of enhanced > > >> mouse reporting modes. > > >> > > >Patch applied with changes. Please use __small_sprintf rather than > > >sprintf. I also changed the CHangeLog entry slightly. Keep it short > > >and in present tense. > > > > > > > > >Thanks, > > >Corinna > > > > > Hmm, thanks but I'm afraid this went wrong. You quote (and probably > > applied) my first patch which is missing mouse mode 1005 and > > unfortunately also has a bug which effectively makes the extended > > coordinates unusable (because the reports are suppressed in that > > case as they were before :( ). > > The mail you responded to contained an updated patch. > > That was exactly the patch I applied. I only chnaged the formatting > and changed sprintf to __small_sprintf. ...and as far as quoting goes, the above is the ChangeLog you provided with your updated patch. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Extended mouse coordinates 2012-04-24 19:48 ` Corinna Vinschen @ 2012-04-24 20:00 ` Thomas Wolff 2012-04-24 20:23 ` Corinna Vinschen 0 siblings, 1 reply; 9+ messages in thread From: Thomas Wolff @ 2012-04-24 20:00 UTC (permalink / raw) To: cygwin-patches [-- Attachment #1: Type: text/plain, Size: 2294 bytes --] Am 24.04.2012 21:47, schrieb Corinna Vinschen: > On Apr 24 21:45, Corinna Vinschen wrote: >> On Apr 24 21:35, Thomas Wolff wrote: >>> Am 24.04.2012 16:44, schrieb Corinna Vinschen: >>>> On Apr 22 21:07, Thomas Wolff wrote: >>>>> This patch replaces my previous proposal >>>>> (http://cygwin.com/ml/cygwin-patches/2012-q2/msg00005.html) with two >>>>> modifications: >>>>> >>>>> * Fixed a bug that suppressed mouse reporting at large coordinates (in >>>>> all modes actually:-\ ) >>>>> * Added mouse mode 1005 (total of 3 three new modes, so all reporting >>>>> modes run by current terminal emulators would be implemented) >>>>> >>>>> I would appreciate the patch to be applied this time, planned to be >>>>> my last mouse patch :) >>>>> >>>>> Kind regards, >>>>> Thomas >>>>> 2012-04-03 Thomas Wolff<towo@towo.net> >>>>> >>>>> * fhandler.h (class dev_console): Two flags for extended mouse modes. >>>>> * fhandler_console.cc (fhandler_console::read): Implemented >>>>> extended mouse modes 1015 (urxvt, mintty, xterm) and 1006 (xterm). >>>>> Not implemented extended mouse mode 1005 (xterm, mintty). >>>>> Supporting mouse coordinates greater than 222 (each axis). >>>>> Also: two { wrap formatting consistency fixes. >>>>> (fhandler_console::char_command) Initialization of enhanced >>>>> mouse reporting modes. >>>>> >>>> Patch applied with changes. Please use __small_sprintf rather than >>>> sprintf. I also changed the CHangeLog entry slightly. Keep it short >>>> and in present tense. >>>> >>>> >>>> Thanks, >>>> Corinna >>>> >>> Hmm, thanks but I'm afraid this went wrong. You quote (and probably >>> applied) my first patch which is missing mouse mode 1005 and >>> unfortunately also has a bug which effectively makes the extended >>> coordinates unusable (because the reports are suppressed in that >>> case as they were before :( ). >>> The mail you responded to contained an updated patch. >> That was exactly the patch I applied. I only chnaged the formatting >> and changed sprintf to __small_sprintf. > ...and as far as quoting goes, the above is the ChangeLog you provided > with your updated patch. Sh.. I see. My deep apologies, I must have been confused. Here is the actual updated patch which should be used instead. Sorry for the trouble. Thomas [-- Attachment #2: mouse-modes-5-6-16.changelog --] [-- Type: text/plain, Size: 581 bytes --] 2012-04-20 Thomas Wolff <towo@towo.net> * fhandler.h (class dev_console): Flags for extended mouse modes. * fhandler_console.cc: Supporting mouse coordinates greater than 222. (fhandler_console::read) Implemented extended mouse modes 1015 (urxvt, mintty, xterm), 1006 (xterm), and 1005 (xterm, mintty). Also: two { wrap formatting consistency fixes. (fhandler_console::mouse_aware) Removed limitation of not sending anything at exceeded coordinates; sending 0 byte instead (xterm). (fhandler_console::char_command) Initialization of enhanced mouse reporting modes. [-- Attachment #3: mouse-modes-5-6-16.patch --] [-- Type: text/plain, Size: 6072 bytes --] diff -rup sav/fhandler.h ./fhandler.h --- sav/fhandler.h 2012-04-18 07:58:04.000000000 +0200 +++ ./fhandler.h 2012-04-20 13:59:02.265328800 +0200 @@ -1288,6 +1288,9 @@ class dev_console bool insert_mode; int use_mouse; + bool ext_mouse_mode5; + bool ext_mouse_mode6; + bool ext_mouse_mode15; bool use_focus; bool raw_win32_keyboard_mode; diff -rup sav/fhandler_console.cc ./fhandler_console.cc --- sav/fhandler_console.cc 2012-04-15 19:51:49.000000000 +0200 +++ ./fhandler_console.cc 2012-04-20 13:59:02.296579200 +0200 @@ -304,14 +304,6 @@ fhandler_console::mouse_aware (MOUSE_EVE 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 @@ -453,12 +445,13 @@ fhandler_console::read (void *pv, size_t { char c = dev_state.backspace_keycode; nread = 0; - if (control_key_state & ALT_PRESSED) { - if (dev_state.metabit) - c |= 0x80; - else - tmp[nread++] = '\e'; - } + if (control_key_state & ALT_PRESSED) + { + if (dev_state.metabit) + c |= 0x80; + else + tmp[nread++] = '\e'; + } tmp[nread++] = c; tmp[nread] = 0; toadd = tmp; @@ -551,6 +544,7 @@ fhandler_console::read (void *pv, size_t events at the same time. */ int b = 0; char sz[32]; + char mode6_term = 'M'; if (mouse_event.dwEventFlags == MOUSE_WHEELED) { @@ -574,7 +568,7 @@ fhandler_console::read (void *pv, size_t { b = dev_state.last_button_code; } - else if (mouse_event.dwButtonState < dev_state.dwLastButtonState) + else if (mouse_event.dwButtonState < dev_state.dwLastButtonState && !dev_state.ext_mouse_mode6) { b = 3; strcpy (sz, "btn up"); @@ -595,6 +589,10 @@ fhandler_console::read (void *pv, size_t strcpy (sz, "btn3 down"); } + if (dev_state.ext_mouse_mode6) /* distinguish release */ + if (mouse_event.dwButtonState < dev_state.dwLastButtonState) + mode6_term = 'm'; + dev_state.last_button_code = b; if (mouse_event.dwEventFlags == MOUSE_MOVED) @@ -626,25 +624,73 @@ fhandler_console::read (void *pv, size_t b |= dev_state.nModifiers; /* We can now create the code. */ - sprintf (tmp, "\033[M%c%c%c", b + ' ', dev_state.dwMousePosition.X + ' ' + 1, dev_state.dwMousePosition.Y + ' ' + 1); + if (dev_state.ext_mouse_mode6) + { + sprintf (tmp, "\033[<%d;%d;%d%c", b, dev_state.dwMousePosition.X + 1, dev_state.dwMousePosition.Y + 1, mode6_term); + nread = strlen (tmp); + } + else if (dev_state.ext_mouse_mode15) + { + sprintf (tmp, "\033[%d;%d;%dM", b + 32, dev_state.dwMousePosition.X + 1, dev_state.dwMousePosition.Y + 1); + nread = strlen (tmp); + } + else if (dev_state.ext_mouse_mode5) + { + unsigned int xcode = dev_state.dwMousePosition.X + ' ' + 1; + unsigned int ycode = dev_state.dwMousePosition.Y + ' ' + 1; + + 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; + unsigned int ycode = dev_state.dwMousePosition.Y + ' ' + 1; + if (xcode >= 256) + xcode = 0; + if (ycode >= 256) + ycode = 0; + sprintf (tmp, "\033[M%c%c%c", b + ' ', xcode, ycode); + nread = 6; /* tmp may contain NUL bytes */ + } syscall_printf ("mouse: %s at (%d,%d)", sz, dev_state.dwMousePosition.X, dev_state.dwMousePosition.Y); toadd = tmp; - nread = 6; } } break; case FOCUS_EVENT: - if (dev_state.use_focus) { - if (input_rec.Event.FocusEvent.bSetFocus) - sprintf (tmp, "\033[I"); - else - sprintf (tmp, "\033[O"); + if (dev_state.use_focus) + { + if (input_rec.Event.FocusEvent.bSetFocus) + sprintf (tmp, "\033[I"); + else + sprintf (tmp, "\033[O"); - toadd = tmp; - nread = 3; - } + toadd = tmp; + nread = 3; + } break; case WINDOW_BUFFER_SIZE_EVENT: @@ -1517,22 +1563,30 @@ fhandler_console::char_command (char c) case 1000: /* Mouse tracking */ dev_state.use_mouse = (c == 'h') ? 1 : 0; - syscall_printf ("mouse support set to mode %d", dev_state.use_mouse); break; case 1002: /* Mouse button event tracking */ dev_state.use_mouse = (c == 'h') ? 2 : 0; - syscall_printf ("mouse support set to mode %d", dev_state.use_mouse); break; case 1003: /* Mouse any event tracking */ dev_state.use_mouse = (c == 'h') ? 3 : 0; - syscall_printf ("mouse support set to mode %d", dev_state.use_mouse); break; case 1004: /* Focus in/out event reporting */ dev_state.use_focus = (c == 'h') ? true : false; - syscall_printf ("focus reporting set to %d", dev_state.use_focus); + break; + + case 1005: /* Extended mouse mode */ + dev_state.ext_mouse_mode5 = c == 'h'; + break; + + case 1006: /* SGR extended mouse mode */ + dev_state.ext_mouse_mode6 = c == 'h'; + break; + + case 1015: /* Urxvt extended mouse mode */ + dev_state.ext_mouse_mode15 = c == 'h'; break; case 2000: /* Raw keyboard mode */ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Extended mouse coordinates 2012-04-24 20:00 ` Thomas Wolff @ 2012-04-24 20:23 ` Corinna Vinschen 2012-04-24 21:58 ` Thomas Wolff 0 siblings, 1 reply; 9+ messages in thread From: Corinna Vinschen @ 2012-04-24 20:23 UTC (permalink / raw) To: cygwin-patches On Apr 24 22:00, Thomas Wolff wrote: > Am 24.04.2012 21:47, schrieb Corinna Vinschen: > >On Apr 24 21:45, Corinna Vinschen wrote: > >>That was exactly the patch I applied. I only chnaged the formatting > >>and changed sprintf to __small_sprintf. > >...and as far as quoting goes, the above is the ChangeLog you provided > >with your updated patch. > Sh.. I see. My deep apologies, I must have been confused. Here is > the actual updated patch which should be used instead. > Sorry for the trouble. > Thomas > 2012-04-20 Thomas Wolff <towo@towo.net> > > * fhandler.h (class dev_console): Flags for extended mouse modes. > * fhandler_console.cc: Supporting mouse coordinates greater than 222. > (fhandler_console::read) Implemented extended mouse modes > 1015 (urxvt, mintty, xterm), 1006 (xterm), and 1005 (xterm, mintty). > Also: two { wrap formatting consistency fixes. > (fhandler_console::mouse_aware) Removed limitation of not sending > anything at exceeded coordinates; sending 0 byte instead (xterm). > (fhandler_console::char_command) Initialization of enhanced > mouse reporting modes. > Please recreate the patch against current CVS. And please use __small_sprintf instead of sprintf. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Extended mouse coordinates 2012-04-24 20:23 ` Corinna Vinschen @ 2012-04-24 21:58 ` Thomas Wolff 2012-04-25 8:23 ` Corinna Vinschen 0 siblings, 1 reply; 9+ messages in thread From: Thomas Wolff @ 2012-04-24 21:58 UTC (permalink / raw) To: cygwin-patches [-- Attachment #1: Type: text/plain, Size: 1363 bytes --] Am 24.04.2012 22:22, schrieb Corinna Vinschen: > On Apr 24 22:00, Thomas Wolff wrote: >> Am 24.04.2012 21:47, schrieb Corinna Vinschen: >>> On Apr 24 21:45, Corinna Vinschen wrote: >>>> That was exactly the patch I applied. I only chnaged the formatting >>>> and changed sprintf to __small_sprintf. >>> ...and as far as quoting goes, the above is the ChangeLog you provided >>> with your updated patch. >> Sh.. I see. My deep apologies, I must have been confused. Here is >> the actual updated patch which should be used instead. >> Sorry for the trouble. >> Thomas >> 2012-04-20 Thomas Wolff<towo@towo.net> >> >> * fhandler.h (class dev_console): Flags for extended mouse modes. >> * fhandler_console.cc: Supporting mouse coordinates greater than 222. >> (fhandler_console::read) Implemented extended mouse modes >> 1015 (urxvt, mintty, xterm), 1006 (xterm), and 1005 (xterm, mintty). >> Also: two { wrap formatting consistency fixes. >> (fhandler_console::mouse_aware) Removed limitation of not sending >> anything at exceeded coordinates; sending 0 byte instead (xterm). >> (fhandler_console::char_command) Initialization of enhanced >> mouse reporting modes. >> > Please recreate the patch against current CVS. And please use > __small_sprintf instead of sprintf. > Here's the missing patch and changelog. Sorry again for previous mix-up. Thomas [-- Attachment #2: mouse-mode-5.changelog --] [-- Type: text/plain, Size: 260 bytes --] 2012-04-24 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. [-- Attachment #3: mouse-mode-5.patch --] [-- Type: text/plain, Size: 2451 bytes --] diff -rup sav/fhandler.h ./fhandler.h --- sav/fhandler.h 2012-04-24 16:29:37.000000000 +0200 +++ ./fhandler.h 2012-04-24 23:48:29.453125000 +0200 @@ -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; diff -rup sav/fhandler_console.cc ./fhandler_console.cc --- sav/fhandler_console.cc 2012-04-24 16:39:22.000000000 +0200 +++ ./fhandler_console.cc 2012-04-24 23:52:00.265625000 +0200 @@ -307,14 +307,6 @@ fhandler_console::mouse_aware (MOUSE_EVE 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 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 */ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Extended mouse coordinates 2012-04-24 21:58 ` Thomas Wolff @ 2012-04-25 8:23 ` Corinna Vinschen 0 siblings, 0 replies; 9+ messages in thread From: Corinna Vinschen @ 2012-04-25 8:23 UTC (permalink / raw) To: cygwin-patches On Apr 24 23:58, Thomas Wolff wrote: > Am 24.04.2012 22:22, schrieb Corinna Vinschen: > >On Apr 24 22:00, Thomas Wolff wrote: > >>Am 24.04.2012 21:47, schrieb Corinna Vinschen: > >>>On Apr 24 21:45, Corinna Vinschen wrote: > >>>>That was exactly the patch I applied. I only chnaged the formatting > >>>>and changed sprintf to __small_sprintf. > >>>...and as far as quoting goes, the above is the ChangeLog you provided > >>>with your updated patch. > >>Sh.. I see. My deep apologies, I must have been confused. Here is > >>the actual updated patch which should be used instead. > >>Sorry for the trouble. > >>Thomas > >>2012-04-20 Thomas Wolff<towo@towo.net> > >> > >> * fhandler.h (class dev_console): Flags for extended mouse modes. > >> * fhandler_console.cc: Supporting mouse coordinates greater than 222. > >> (fhandler_console::read) Implemented extended mouse modes > >> 1015 (urxvt, mintty, xterm), 1006 (xterm), and 1005 (xterm, mintty). > >> Also: two { wrap formatting consistency fixes. > >> (fhandler_console::mouse_aware) Removed limitation of not sending > >> anything at exceeded coordinates; sending 0 byte instead (xterm). > >> (fhandler_console::char_command) Initialization of enhanced > >> mouse reporting modes. > >> > >Please recreate the patch against current CVS. And please use > >__small_sprintf instead of sprintf. > > > Here's the missing patch and changelog. Sorry again for previous mix-up. > Thomas Patch applied and rigged into 1.7.14. Thanks, Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-04-25 8:23 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-04-22 19:08 [PATCH] Extended mouse coordinates Thomas Wolff 2012-04-24 14:44 ` Corinna Vinschen 2012-04-24 19:35 ` Thomas Wolff 2012-04-24 19:45 ` Corinna Vinschen 2012-04-24 19:48 ` Corinna Vinschen 2012-04-24 20:00 ` Thomas Wolff 2012-04-24 20:23 ` Corinna Vinschen 2012-04-24 21:58 ` Thomas Wolff 2012-04-25 8:23 ` Corinna Vinschen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).