diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 7407ee3..53c187c 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -413,6 +413,31 @@ chat_window_contact_menu_update (EmpathyChatWindowPriv *priv,
 	}
 }
 
+static gboolean
+chat_window_tab_key_cb (GtkWidget         *widget,
+		        GdkEventKey       *event,
+ 			EmpathyChatWindow *window)
+{
+	guint modifiers;
+	modifiers = gtk_accelerator_get_default_mod_mask ();
+
+	if (event->keyval == GDK_Tab
+			&& (event->state & modifiers) == GDK_CONTROL_MASK)
+	{
+		chat_window_tabs_next_activate_cb(NULL, window);
+		return gtk_true();
+	}
+
+	if (event->keyval == GDK_ISO_Left_Tab
+			&& (event->state & modifiers) == (GDK_CONTROL_MASK | GDK_SHIFT_MASK))
+	{
+		chat_window_tabs_previous_activate_cb(NULL, window);
+		return gtk_true();
+	}
+
+	return gtk_false();
+}
+
 static guint
 get_all_unread_messages (EmpathyChatWindowPriv *priv)
 {
@@ -1046,7 +1071,7 @@ chat_window_find_activate_cb (GtkAction         *action,
 	empathy_chat_find (priv->current_chat);
 }
 
-static void
+void
 chat_window_tabs_next_activate_cb (GtkAction         *action,
 				   EmpathyChatWindow *window)
 {
@@ -1072,7 +1097,7 @@ chat_window_tabs_next_activate_cb (GtkAction         *action,
 	gtk_notebook_next_page (GTK_NOTEBOOK (priv->notebook));
 }
 
-static void
+void
 chat_window_tabs_previous_activate_cb (GtkAction         *action,
 				   EmpathyChatWindow *window)
 {
@@ -1940,6 +1965,8 @@ empathy_chat_window_init (EmpathyChatWindow *window)
 			      "menu_tabs_detach", "activate", chat_window_detach_activate_cb,
 			      "menu_help_contents", "activate", chat_window_help_contents_activate_cb,
 			      "menu_help_about", "activate", chat_window_help_about_activate_cb,
+	/* No way to assign Tab with accel group (http://bugzilla.gnome.org/show_bug.cgi?id=123994) */
+			      "chat_window", "key_press_event", chat_window_tab_key_cb,
 			      NULL);
 
 	g_object_ref (priv->ui_manager);
diff --git a/src/empathy-chat-window.h b/src/empathy-chat-window.h
index 4cbd209..8144e97 100644
--- a/src/empathy-chat-window.h
+++ b/src/empathy-chat-window.h
@@ -70,15 +70,18 @@ void               empathy_chat_window_move_chat      (EmpathyChatWindow *old_wi
 void               empathy_chat_window_switch_to_chat (EmpathyChatWindow *window,
 						       EmpathyChat       *chat);
 gboolean           empathy_chat_window_has_focus      (EmpathyChatWindow *window);
-EmpathyChat *      empathy_chat_window_find_chat      (TpAccount        *account,
-						       const gchar      *id);
-void               empathy_chat_window_present_chat   (EmpathyChat      *chat,
+EmpathyChat *      empathy_chat_window_find_chat      (TpAccount         *account,
+						       const gchar       *id);
+void               empathy_chat_window_present_chat   (EmpathyChat       *chat,
 						       gint64 timestamp);
 
 void               empathy_chat_window_get_nb_chats   (EmpathyChatWindow *window,
 						       guint *nb_rooms,
 						       guint *nb_private);
-
+void	   chat_window_tabs_next_activate_cb  (GtkAction	 *action,
+				   		       EmpathyChatWindow *window);
+void	   chat_window_tabs_previous_activate_cb (GtkAction      *action,
+					               EmpathyChatWindow *window);
 G_END_DECLS
 
 #endif /* __EMPATHY_CHAT_WINDOW_H__ */
