diff --git a/src/syncterm/CHANGES b/src/syncterm/CHANGES
index 24e81726d9d67d4128e9a60ee9f318505d436397..faf742d7a0251f8b069b2f0934195f52455142e2 100644
--- a/src/syncterm/CHANGES
+++ b/src/syncterm/CHANGES
@@ -1,3 +1,9 @@
+Version 1.2rc5
+--------------
+Fix RIP parsing when passed fragmented ANSI sequences
+Fix cursor when RIP changes font height
+Fix Alt-O in RIP mode
+
 Version 1.2rc4
 --------------
 Fix pointy scaling to work even when interpolating both directions
@@ -9,7 +15,6 @@ Fix telnets (broken when sftp support was added)
 Update ANSI and win32 console support
 Fix bug with window resizing calculations
 New icons thanks to zuMi!
-Fix RIP parsing when passed fragmented ANSI sequences
 
 Version 1.2rc3
 --------------
diff --git a/src/syncterm/ripper.c b/src/syncterm/ripper.c
index 28a3f88500168d613ed2a9a08d8610a1daa4b657..19a9ac0079ef201adba456134cd7e4d8c7b2e7dc 100644
--- a/src/syncterm/ripper.c
+++ b/src/syncterm/ripper.c
@@ -16241,6 +16241,7 @@ rip_getch(void)
 		}
 		return ch;
 	}
+	struct mouse_state *ms = cterm->mouse_state_change_cbdata;
 
 	gotoxy(wherex(), wherey());
 	ch = getch();
@@ -16251,7 +16252,7 @@ rip_getch(void)
 	}
 
 	shadow_palette();
-	if (ch == CIO_KEY_MOUSE) {
+	if (ch == CIO_KEY_MOUSE && (!(ms->flags & MS_FLAGS_DISABLED))) {
 		ch = -1;
 		getmouse(&mevent);
 		mevent.startx_res = unmap_rip_x(mevent.startx_res);
diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index 67b39b995f91e2e940f6a7c90ce294097eb3f0f2..d5ab686ffff17a89d753e6fba6ebe7d00e867971 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -102,25 +102,6 @@ get_cterm_size(int *cols, int *rows, int ns)
 	}
 }
 
-enum mouse_modes {
-	MM_OFF,
-	MM_RIP = 1,
-	MM_X10 = 9,
-	MM_NORMAL_TRACKING = 1000,
-	MM_HIGHLIGHT_TRACKING = 1001,
-	MM_BUTTON_EVENT_TRACKING = 1002,
-	MM_ANY_EVENT_TRACKING = 1003
-};
-
-struct mouse_state {
-	uint32_t         flags;
-
-#define MS_FLAGS_SGR (1 << 0)
-#define MS_FLAGS_DISABLED (1 << 1)
-#define MS_SGR_SET (1006)
-	enum mouse_modes mode;
-};
-
 void
 setup_mouse_events(struct mouse_state *ms)
 {
diff --git a/src/syncterm/term.h b/src/syncterm/term.h
index 3074867cc84779000eb01d203ee98711ef5cdd04..42736162bcb1953bb85c64f2f23e2a088c52ffa9 100644
--- a/src/syncterm/term.h
+++ b/src/syncterm/term.h
@@ -18,6 +18,25 @@ struct terminal {
 	int nostatus;
 };
 
+enum mouse_modes {
+	MM_OFF,
+	MM_RIP = 1,
+	MM_X10 = 9,
+	MM_NORMAL_TRACKING = 1000,
+	MM_HIGHLIGHT_TRACKING = 1001,
+	MM_BUTTON_EVENT_TRACKING = 1002,
+	MM_ANY_EVENT_TRACKING = 1003
+};
+
+struct mouse_state {
+	uint32_t         flags;
+
+#define MS_FLAGS_SGR (1 << 0)
+#define MS_FLAGS_DISABLED (1 << 1)
+#define MS_SGR_SET (1006)
+	enum mouse_modes mode;
+};
+
 #define XMODEM_128B (1 << 10) /* Use 128 byte block size (ick!) */
 
 extern struct terminal   term;