--- a/server.c
+++ b/server.c
@@ -1,4 +1,4 @@
-/* $Id: server.c,v 1.202 2009-10-12 00:14:44 tcunha Exp $ */
+/* $Id: server.c,v 1.203 2009-10-12 00:18:19 tcunha Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -883,9 +883,9 @@
 	struct timeval	 	 tv;
 	struct key_binding	*bd;
 	struct keylist		*keylist;
+	struct mouse_event	 mouse;
 	int		 	 key, status, xtimeout, mode, isprefix;
 	u_int			 i;
-	u_char			 mouse[3];
 
 	xtimeout = options_get_number(&c->session->options, "repeat-time");
 	if (xtimeout != 0 && c->flags & CLIENT_REPEAT) {
@@ -897,7 +897,7 @@
 
 	/* Process keys. */
 	keylist = options_get_data(&c->session->options, "prefix");
-	while (tty_keys_next(&c->tty, &key, mouse) == 0) {
+	while (tty_keys_next(&c->tty, &key, &mouse) == 0) {
 		if (c->session == NULL)
 			return;
 
@@ -925,10 +925,10 @@
 		/* Check for mouse keys. */
 		if (key == KEYC_MOUSE) {
 			if (options_get_number(oo, "mouse-select-pane")) {
-				window_set_active_at(w, mouse[1], mouse[2]);
+				window_set_active_at(w, mouse.x, mouse.y);
 				wp = w->active;
 			}
-			window_pane_mouse(wp, c, mouse[0], mouse[1], mouse[2]);
+			window_pane_mouse(wp, c, &mouse);
 			continue;
 		}