diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim
index d882756..7c424cd 100644
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -7,11 +7,17 @@
 
 source shared.vim
 
+" xterm2 and sgr always work, urxvt is optional.
+let s:test_ttymouse = ['xterm2', 'sgr']
+if has('mouse_urxvt')
+  call add(s:test_ttymouse, 'urxvt')
+endif
+
 " Helper function to emit a terminal escape code.
-func TerminalEscapeCode(code_xterm, code_sgr, row, col, m)
+func TerminalEscapeCode(code, row, col, m)
   if &ttymouse ==# 'xterm2'
     " need to use byte encoding here.
-    let str = list2str([a:code_xterm, a:col + 0x20, a:row + 0x20])
+    let str = list2str([a:code + 0x20, a:col + 0x20, a:row + 0x20])
     if has('iconv')
       let bytes = iconv(str, 'utf-8', 'latin1')
     else
@@ -20,50 +26,52 @@
     endif
     call feedkeys("\<Esc>[M" .. bytes, 'Lx!')
   elseif &ttymouse ==# 'sgr'
-    call feedkeys(printf("\<Esc>[<%d;%d;%d%s", a:code_sgr, a:col, a:row, a:m), 'Lx!')
+    call feedkeys(printf("\<Esc>[<%d;%d;%d%s", a:code, a:col, a:row, a:m), 'Lx!')
+  elseif &ttymouse ==# 'urxvt'
+    call feedkeys(printf("\<Esc>[%d;%d;%dM", a:code + 0x20, a:col, a:row), 'Lx!')
   endif
 endfunc
 
 func MouseLeftClick(row, col)
-  call TerminalEscapeCode(0x20, 0, a:row, a:col, 'M')
+  call TerminalEscapeCode(0, a:row, a:col, 'M')
 endfunc
 
 func MouseMiddleClick(row, col)
-  call TerminalEscapeCode(0x21, 1, a:row, a:col, 'M')
+  call TerminalEscapeCode(1, a:row, a:col, 'M')
 endfunc
 
 func MouseCtrlLeftClick(row, col)
   let ctrl = 0x10
-  call TerminalEscapeCode(0x20 + ctrl, 0 + ctrl, a:row, a:col, 'M')
+  call TerminalEscapeCode(0 + ctrl, a:row, a:col, 'M')
 endfunc
 
 func MouseCtrlRightClick(row, col)
   let ctrl = 0x10
-  call TerminalEscapeCode(0x22 + ctrl, 2 + ctrl, a:row, a:col, 'M')
+  call TerminalEscapeCode(2 + ctrl, a:row, a:col, 'M')
 endfunc
 
 func MouseLeftRelease(row, col)
-  call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm')
+  call TerminalEscapeCode(3, a:row, a:col, 'm')
 endfunc
 
 func MouseMiddleRelease(row, col)
-  call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm')
+  call TerminalEscapeCode(3, a:row, a:col, 'm')
 endfunc
 
 func MouseRightRelease(row, col)
-  call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm')
+  call TerminalEscapeCode(3, a:row, a:col, 'm')
 endfunc
 
 func MouseLeftDrag(row, col)
-  call TerminalEscapeCode(0x43, 0x20, a:row, a:col, 'M')
+  call TerminalEscapeCode(0x20, a:row, a:col, 'M')
 endfunc
 
 func MouseWheelUp(row, col)
-  call TerminalEscapeCode(0x40, 0x40, a:row, a:col, 'M')
+  call TerminalEscapeCode(0x40, a:row, a:col, 'M')
 endfunc
 
 func MouseWheelDown(row, col)
-  call TerminalEscapeCode(0x41, 0x41, a:row, a:col, 'M')
+  call TerminalEscapeCode(0x41, a:row, a:col, 'M')
 endfunc
 
 func Test_xterm_mouse_left_click()
@@ -74,7 +82,7 @@
   set mouse=a term=xterm
   call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer'])
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     go
@@ -99,7 +107,7 @@
   let save_ttymouse = &ttymouse
   set mouse=a term=xterm
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     help
@@ -138,7 +146,7 @@
   let @* = 'abc'
   set mouse=a term=xterm
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     call setline(1, ['123456789', '123456789'])
@@ -179,7 +187,7 @@
   set mouse=a term=xterm
   call setline(1, range(1, 100))
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     go
@@ -215,7 +223,7 @@
   let save_ttymouse = &ttymouse
   set mouse=a term=xterm
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
 
@@ -272,7 +280,7 @@
   let save_laststatus = &laststatus
   set mouse=a term=xterm laststatus=2
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
 
@@ -313,7 +321,7 @@
   set mouse=a term=xterm
   let row = 1
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     e Xfoo
@@ -361,7 +369,7 @@
   let row = 1
   let col = &columns
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     if ttymouse_val ==# 'xterm2' && col > 223
       " When 'ttymouse' is 'xterm2', row/col bigger than 223 are not supported.
       continue
@@ -407,7 +415,7 @@
   set mouse=a term=xterm mousetime=1
   let row = 1
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     e Xtab1
@@ -456,12 +464,20 @@
   let row = 1
   let col = 10
 
-  for ttymouse_val in ['xterm2', 'sgr']
+  let round = 0
+  for ttymouse_val in s:test_ttymouse
     let msg = 'ttymouse=' .. ttymouse_val
     exe 'set ttymouse=' .. ttymouse_val
     e Xtab1
     tabnew Xtab2
 
+    if round > 0
+      " We need to sleep, or else the first MouseLeftClick() will be
+      " interpreted as a spurious triple-click.
+      sleep 100m
+    endif
+    let round += 1
+
     let a = split(execute(':tabs'), "\n")
     call assert_equal(['Tab page 1',
         \              '    Xtab1',
@@ -485,11 +501,6 @@
         \              'Tab page 3',
         \              '    Xtab2'], a, msg)
 
-    if ttymouse_val !=# 'sgr'
-      " We need to sleep, or else MouseLeftClick() in next loop
-      " iteration will be interpreted as a spurious triple-click.
-      sleep 100m
-    endif
     %bwipe!
   endfor
 
diff --git a/src/version.c b/src/version.c
index 0e7f3f5..f3e646c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1247,
+/**/
     1246,
 /**/
     1245,
