diff --git a/src/globals.h b/src/globals.h
index a17430d..058341b 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1333,6 +1333,9 @@
 #if defined(UNIX) || defined(VMS)
 EXTERN int	term_is_xterm INIT(= FALSE);	/* xterm-like 'term' */
 #endif
+#if defined(UNIX)
+EXTERN int	xterm_conflict_mouse INIT(= FALSE);
+#endif
 
 #ifdef BACKSLASH_IN_FILENAME
 EXTERN char	psepc INIT(= '\\');	/* normal path separator character */
diff --git a/src/os_unix.c b/src/os_unix.c
index 65ce685..78e9914 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -3667,6 +3667,8 @@
     void
 check_mouse_termcode()
 {
+    xterm_conflict_mouse = FALSE;
+
 # ifdef FEAT_MOUSE_XTERM
     if (use_xterm_mouse()
 # ifdef FEAT_MOUSE_URXVT
@@ -3711,7 +3713,7 @@
 # endif
 
 # ifdef FEAT_MOUSE_JSB
-    /* conflicts with xterm mouse: "\033[" and "\033[M" ??? */
+    /* There is no conflict, but it was disabled for xterm before. */
     if (!use_xterm_mouse()
 #  ifdef FEAT_GUI
 	    && !gui.in_use
@@ -3738,32 +3740,40 @@
 # endif
 
 # ifdef FEAT_MOUSE_DEC
-    /* conflicts with xterm mouse: "\033[" and "\033[M" */
-    if (!use_xterm_mouse()
+    /* Conflicts with xterm mouse: "\033[" and "\033[M".
+     * Also conflicts with the xterm termresponse, skip this if it was
+     * requested already. */
+    if (!use_xterm_mouse() && !did_request_esc_sequence()
 #  ifdef FEAT_GUI
 	    && !gui.in_use
 #  endif
 	    )
+    {
 	set_mouse_termcode(KS_DEC_MOUSE, (char_u *)(term_is_8bit(T_NAME)
 		     ? IF_EB("\233", CSI_STR) : IF_EB("\033[", ESC_STR "[")));
+	xterm_conflict_mouse = TRUE;
+    }
     else
 	del_mouse_termcode(KS_DEC_MOUSE);
 # endif
 # ifdef FEAT_MOUSE_PTERM
     /* same as the dec mouse */
-    if (!use_xterm_mouse()
+    if (!use_xterm_mouse() && !did_request_esc_sequence()
 #  ifdef FEAT_GUI
 	    && !gui.in_use
 #  endif
 	    )
+    {
 	set_mouse_termcode(KS_PTERM_MOUSE,
 				      (char_u *) IF_EB("\033[", ESC_STR "["));
+	xterm_conflict_mouse = TRUE;
+    }
     else
 	del_mouse_termcode(KS_PTERM_MOUSE);
 # endif
 # ifdef FEAT_MOUSE_URXVT
     /* same as the dec mouse */
-    if (use_xterm_mouse() == 3
+    if (use_xterm_mouse() == 3 && !did_request_esc_sequence()
 #  ifdef FEAT_GUI
 	    && !gui.in_use
 #  endif
@@ -3778,6 +3788,7 @@
 	    mch_setmouse(FALSE);
 	    setmouse();
 	}
+	xterm_conflict_mouse = TRUE;
     }
     else
 	del_mouse_termcode(KS_URXVT_MOUSE);
diff --git a/src/proto/term.pro b/src/proto/term.pro
index b3d0df3..2ae91c4 100644
--- a/src/proto/term.pro
+++ b/src/proto/term.pro
@@ -34,6 +34,7 @@
 void settmode __ARGS((int tmode));
 void starttermcap __ARGS((void));
 void stoptermcap __ARGS((void));
+int did_request_esc_sequence __ARGS((void));
 void may_req_termresponse __ARGS((void));
 void may_req_ambiguous_char_width __ARGS((void));
 int swapping_screen __ARGS((void));
diff --git a/src/term.c b/src/term.c
index 41974de..5251d6b 100644
--- a/src/term.c
+++ b/src/term.c
@@ -153,6 +153,11 @@
 static char_u *vim_tgetstr __ARGS((char *s, char_u **pp));
 #endif /* HAVE_TGETENT */
 
+#if defined(FEAT_TERMRESPONSE)
+static int xt_index_in = 0;
+static int xt_index_out = 0;
+#endif
+
 static int  detected_8bit = FALSE;	/* detected 8-bit terminal */
 
 static struct builtin_term builtin_termcaps[] =
@@ -3259,7 +3264,7 @@
 	    may_req_termresponse();
 	    /* Immediately check for a response.  If t_Co changes, we don't
 	     * want to redraw with wrong colors first. */
-	    if (crv_status != CRV_GET)
+	    if (crv_status == CRV_SENT)
 		check_for_codes_from_term();
 	}
 #endif
@@ -3306,6 +3311,30 @@
     }
 }
 
+#if defined(UNIX) || defined(PROTO)
+/*
+ * Return TRUE when the xterm version was requested or anything else that
+ * would send an ESC sequence back to Vim.
+ * If not sent yet, prevent it from being sent soon.
+ * Used to check whether it is OK to enable checking for DEC mouse codes,
+ * which conflict with may xterm ESC sequences.
+ */
+    int
+did_request_esc_sequence()
+{
+    if (crv_status == CRV_GET)
+	crv_status = 0;
+    if (u7_status == U7_GET)
+	u7_status = 0;
+    return crv_status == CRV_SENT || u7_status == U7_SENT
+# if defined(FEAT_TERMRESPONSE)
+	|| xt_index_out > xt_index_in
+# endif
+	;
+}
+#endif
+
+
 #if defined(FEAT_TERMRESPONSE) || defined(PROTO)
 /*
  * Request version string (for xterm) when needed.
@@ -3319,6 +3348,8 @@
  * Insert mode.
  * On Unix only do it when both output and input are a tty (avoid writing
  * request to terminal while reading from a file).
+ * Do not do this when a mouse is being detected that starts with the same ESC
+ * sequence as the termresponse.
  * The result is caught in check_termcode().
  */
     void
@@ -3332,6 +3363,7 @@
 # ifdef UNIX
 	    && isatty(1)
 	    && isatty(read_cmd_fd)
+	    && !xterm_conflict_mouse
 # endif
 	    && *T_CRV != NUL)
     {
@@ -5714,9 +5746,6 @@
  * termcap codes from the terminal itself.
  * We get them one by one to avoid a very long response string.
  */
-static int xt_index_in = 0;
-static int xt_index_out = 0;
-
     static void
 req_codes_from_term()
 {
diff --git a/src/version.c b/src/version.c
index 0578a7d..fcf4127 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    305,
+/**/
     304,
 /**/
     303,
