+ }
+
+ return FALSE;
+}
+
+gboolean
+key_downloadmanager(GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ if (event->type == GDK_KEY_PRESS)
+ {
+ if (((GdkEventKey *)event)->state & GDK_MOD1_MASK)
+ {
+ switch (((GdkEventKey *)event)->keyval)
+ {
+ case GDK_KEY_d: /* close window (left hand) */
+ case GDK_KEY_q:
+ downloadmanager_delete(dm.win, NULL);
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+gboolean
+key_location(GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ struct Client *c = (struct Client *)data;
+ const gchar *t;
+ gchar *f;
+
+ if (key_common(widget, event, data))
+ return TRUE;
+
+ if (event->type == GDK_KEY_PRESS)
+ {
+ switch (((GdkEventKey *)event)->keyval)
+ {
+ case GDK_KEY_KP_Enter:
+ case GDK_KEY_Return:
+ gtk_widget_grab_focus(c->web_view);
+ t = gtk_entry_get_text(GTK_ENTRY(c->location));
+ if (t != NULL && t[0] == ':' && t[1] == '/')
+ {
+ if (search_text != NULL)
+ g_free(search_text);
+ search_text = g_strdup(t + 2);
+ search(c, 0);
+ }
+ else if (!keywords_try_search(WEBKIT_WEB_VIEW(c->web_view), t))
+ {
+ f = ensure_uri_scheme(t);
+ webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view), f);
+ g_free(f);
+ }
+ return TRUE;
+ case GDK_KEY_Escape:
+ t = webkit_web_view_get_uri(WEBKIT_WEB_VIEW(c->web_view));
+ gtk_entry_set_text(GTK_ENTRY(c->location),
+ (t == NULL ? __NAME__ : t));
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+gboolean
+key_web_view(GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ struct Client *c = (struct Client *)data;
+ gdouble dx, dy;
+ gfloat z;
+
+ if (key_common(widget, event, data))
+ return TRUE;
+
+ if (event->type == GDK_KEY_PRESS)
+ {
+ if (((GdkEventKey *)event)->keyval == GDK_KEY_Escape)