diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 8abdf86..debc11b 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -896,6 +896,38 @@
 }
 #endif /* HAVE_GTK2 */
 
+    static int
+modifiers_gdk2vim(guint state)
+{
+    int modifiers = 0;
+
+    if (state & GDK_SHIFT_MASK)
+	modifiers |= MOD_MASK_SHIFT;
+    if (state & GDK_CONTROL_MASK)
+	modifiers |= MOD_MASK_CTRL;
+    if (state & GDK_MOD1_MASK)
+	modifiers |= MOD_MASK_ALT;
+    if (state & GDK_MOD4_MASK)
+	modifiers |= MOD_MASK_META;
+
+    return modifiers;
+}
+
+    static int
+modifiers_gdk2mouse(guint state)
+{
+    int modifiers = 0;
+
+    if (state & GDK_SHIFT_MASK)
+	modifiers |= MOUSE_SHIFT;
+    if (state & GDK_CONTROL_MASK)
+	modifiers |= MOUSE_CTRL;
+    if (state & GDK_MOD1_MASK)
+	modifiers |= MOUSE_ALT;
+
+    return modifiers;
+}
+
 /*
  * Main keyboard handler:
  */
@@ -1112,13 +1144,7 @@
 #endif
 	    )
     {
-	modifiers = 0;
-	if (state & GDK_SHIFT_MASK)
-	    modifiers |= MOD_MASK_SHIFT;
-	if (state & GDK_CONTROL_MASK)
-	    modifiers |= MOD_MASK_CTRL;
-	if (state & GDK_MOD1_MASK)
-	    modifiers |= MOD_MASK_ALT;
+	modifiers = modifiers_gdk2vim(state);
 
 	/*
 	 * For some keys a shift modifier is translated into another key
@@ -1598,13 +1624,7 @@
     }
 
     /* translate modifier coding between the main engine and GTK */
-    vim_modifiers = 0x0;
-    if (state & GDK_SHIFT_MASK)
-	vim_modifiers |= MOUSE_SHIFT;
-    if (state & GDK_CONTROL_MASK)
-	vim_modifiers |= MOUSE_CTRL;
-    if (state & GDK_MOD1_MASK)
-	vim_modifiers |= MOUSE_ALT;
+    vim_modifiers = modifiers_gdk2mouse(state);
 
     /* inform the editor engine about the occurence of this event */
     gui_send_mouse_event(button, x, y, FALSE, vim_modifiers);
@@ -1796,13 +1816,7 @@
 	xim_reset();
 #endif
 
-    vim_modifiers = 0x0;
-    if (event->state & GDK_SHIFT_MASK)
-	vim_modifiers |= MOUSE_SHIFT;
-    if (event->state & GDK_CONTROL_MASK)
-	vim_modifiers |= MOUSE_CTRL;
-    if (event->state & GDK_MOD1_MASK)
-	vim_modifiers |= MOUSE_ALT;
+    vim_modifiers = modifiers_gdk2mouse(event->state);
 
     gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers);
     if (gtk_main_level() > 0)
@@ -1821,7 +1835,7 @@
 scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer data)
 {
     int	    button;
-    int_u   vim_modifiers = 0;
+    int_u   vim_modifiers;
 
     if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget))
 	gtk_widget_grab_focus(widget);
@@ -1844,12 +1858,7 @@
 	xim_reset();
 # endif
 
-    if (event->state & GDK_SHIFT_MASK)
-	vim_modifiers |= MOUSE_SHIFT;
-    if (event->state & GDK_CONTROL_MASK)
-	vim_modifiers |= MOUSE_CTRL;
-    if (event->state & GDK_MOD1_MASK)
-	vim_modifiers |= MOUSE_ALT;
+    vim_modifiers = modifiers_gdk2mouse(event->state);
 
     gui_send_mouse_event(button, (int)event->x, (int)event->y,
 							FALSE, vim_modifiers);
@@ -1881,13 +1890,7 @@
     x = event->x;
     y = event->y;
 
-    vim_modifiers = 0x0;
-    if (event->state & GDK_SHIFT_MASK)
-	vim_modifiers |= MOUSE_SHIFT;
-    if (event->state & GDK_CONTROL_MASK)
-	vim_modifiers |= MOUSE_CTRL;
-    if (event->state & GDK_MOD1_MASK)
-	vim_modifiers |= MOUSE_ALT;
+    vim_modifiers = modifiers_gdk2mouse(event->state);
 
     gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, vim_modifiers);
     if (gtk_main_level() > 0)
@@ -2001,16 +2004,11 @@
 
     if (fnames != NULL && nfiles > 0)
     {
-	int_u   modifiers = 0;
+	int_u   modifiers;
 
 	gtk_drag_finish(context, TRUE, FALSE, time_); /* accept */
 
-	if (state & GDK_SHIFT_MASK)
-	    modifiers |= MOUSE_SHIFT;
-	if (state & GDK_CONTROL_MASK)
-	    modifiers |= MOUSE_CTRL;
-	if (state & GDK_MOD1_MASK)
-	    modifiers |= MOUSE_ALT;
+	modifiers = modifiers_gdk2mouse(state);
 
 	gui_handle_drop(x, y, modifiers, fnames, nfiles);
     }
@@ -2061,12 +2059,7 @@
     vim_free(tmpbuf);
 # endif
 
-    if (state & GDK_SHIFT_MASK)
-	dropkey[2] |= MOD_MASK_SHIFT;
-    if (state & GDK_CONTROL_MASK)
-	dropkey[2] |= MOD_MASK_CTRL;
-    if (state & GDK_MOD1_MASK)
-	dropkey[2] |= MOD_MASK_ALT;
+    dropkey[2] = modifiers_gdk2vim(state);
 
     if (dropkey[2] != 0)
 	add_to_input_buf(dropkey, (int)sizeof(dropkey));
