--- /dev/null
+/* modifier 0 means no modifier */
+static Key searchbar_keys[] = {
+ /* modifier keyval function arg stop event */
+ { 0, GDK_Escape, hidesearch, {0}, TRUE },
+ { 0, GDK_Return, searchtext, {.b = TRUE}, TRUE },
+ { GDK_SHIFT_MASK, GDK_Return, searchtext, {.b = FALSE}, TRUE },
+ { GDK_SHIFT_MASK, GDK_Left, NULL, {0}, FALSE },
+ { GDK_SHIFT_MASK, GDK_Right, NULL, {0}, FALSE },
+};
+
+static Key urlbar_keys[] = {
+ /* modifier keyval function arg stop event */
+ { 0, GDK_Escape, hideurl, {0}, TRUE },
+ /* able to "chain" commands; by setting stop event to FALSE */
+ { 0, GDK_Return, loaduri, {.v = NULL}, FALSE },
+ { 0, GDK_Return, hideurl, {0}, TRUE },
+ { GDK_SHIFT_MASK, GDK_Left, NULL, {0}, FALSE },
+ { GDK_SHIFT_MASK, GDK_Right, NULL, {0}, FALSE },
+};
+
+static Key general_keys[] = {
+ /* modifier keyval function arg stop event */
+ { GDK_CONTROL_MASK, GDK_p, clipboard, {.b = TRUE }, TRUE },
+ { GDK_CONTROL_MASK, GDK_y, clipboard, {.b = FALSE}, TRUE },
+ { GDK_CONTROL_MASK, GDK_R, reload, {.b = TRUE}, TRUE },
+ { GDK_CONTROL_MASK, GDK_r, reload, {.b = FALSE}, TRUE },
+ { GDK_CONTROL_MASK, GDK_b, NULL, {0}, TRUE },
+ { GDK_CONTROL_MASK, GDK_g, showurl, {0}, TRUE },
+ { GDK_CONTROL_MASK, GDK_slash, showsearch, {0}, TRUE },
+ { GDK_CONTROL_MASK, GDK_plus, zoompage, {0}, TRUE },
+ { GDK_CONTROL_MASK, GDK_minus, zoompage, {.f = -1.0 }, TRUE },
+ { GDK_CONTROL_MASK, GDK_0, zoompage, {.f = +1.0 }, TRUE },
+ { GDK_CONTROL_MASK, GDK_n, searchtext, {.b = TRUE}, TRUE },
+ { GDK_CONTROL_MASK, GDK_N, searchtext, {.b = FALSE}, TRUE },
+ { GDK_CONTROL_MASK, GDK_Right, navigate, {.b = TRUE}, TRUE },
+ { GDK_CONTROL_MASK, GDK_Left, navigate, {.b = FALSE}, TRUE },
+ { 0, GDK_Escape, stop, {0}, TRUE },
+};
+
+/* Sequence of Keys to match against a keypress */
+static KeySet keysets[] = {
+ /* keyset (Key[]) numkeys focusedwidget/mode */
+ { searchbar_keys, LENGTH(searchbar_keys), SEARCHBAR },
+ { urlbar_keys, LENGTH(urlbar_keys), URLBAR },
+ { general_keys, LENGTH(general_keys), NONE },
+};