public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] Cygwin: pty: Discard CSI > Pm m sequence from native windows apps.
@ 2020-07-01  7:27 Corinna Vinschen
  0 siblings, 0 replies; only message in thread
From: Corinna Vinschen @ 2020-07-01  7:27 UTC (permalink / raw)
  To: cygwin-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=8121b606e843c001d5ca5213d24099e04ebc62ca

commit 8121b606e843c001d5ca5213d24099e04ebc62ca
Author: Takashi Yano via Cygwin-patches <cygwin-patches@cygwin.com>
Date:   Tue Jun 30 20:12:13 2020 +0900

    Cygwin: pty: Discard CSI > Pm m sequence from native windows apps.
    
    - If vim is started from WSL (Ubuntu) which is executed in pseudo
      console in mintty, shift key and ctrl key do not work. Though
      this issue is similar to the issue resolved by commit
      4527541ec66af8d82bb9dba5d25afdf489d71271, that commit is not
      effective for this issue. This patch fixes the issue by discarding
      "CSI > Pm m" in fhandler_pty_master::pty_master_fwd_thread().

Diff:
---
 winsup/cygwin/fhandler_tty.cc | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index 126249d9f..0f95cec2e 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -3316,6 +3316,34 @@ fhandler_pty_master::pty_master_fwd_thread ()
 		continue;
 	      }
 
+	  /* Remove CSI > Pm m */
+	  state = 0;
+	  start_at = 0;
+	  for (DWORD i=0; i<rlen; i++)
+	    if (outbuf[i] == '\033')
+	      {
+		start_at = i;
+		state = 1;
+		continue;
+	      }
+	    else if ((state == 1 && outbuf[i] == '[') ||
+		     (state == 2 && outbuf[i] == '>'))
+	      {
+		state ++;
+		continue;
+	      }
+	    else if (state == 3 && (isdigit (outbuf[i]) || outbuf[i] == ';'))
+	      continue;
+	    else if (state == 3 && outbuf[i] == 'm')
+	      {
+		memmove (&outbuf[start_at], &outbuf[i+1], rlen-i-1);
+		rlen = wlen = start_at + rlen - i - 1;
+		state = 0;
+		continue;
+	      }
+	    else
+	      state = 0;
+
 	  size_t nlen;
 	  char *buf = convert_mb_str
 	    (get_ttyp ()->term_code_page, &nlen, CP_UTF8, ptr, wlen);


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-07-01  7:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-01  7:27 [newlib-cygwin] Cygwin: pty: Discard CSI > Pm m sequence from native windows apps 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).