summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ryan2015-06-08 22:01:26 +1200
committerJason Ryan2015-06-08 22:01:26 +1200
commit5db9db4f2c002625dba9aa5a403cb2f182059eef (patch)
tree7ddaa7e1ee65b2ab491f26f008b210eadf7a3617
downloadaur-vimprobable2-git.tar.gz
Initial commit
-rw-r--r--.SRCINFO23
-rw-r--r--PKGBUILD49
-rw-r--r--config.h252
-rw-r--r--keymap.h145
4 files changed, 469 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..7d644c226eaa
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,23 @@
+pkgbase = vimprobable2-git
+ pkgdesc = Lightweight, keyboard-driven, WebKit based browser with Vim keybinds.
+ pkgver = 2014.12.26.ga514968
+ pkgrel = 2
+ url = http://www.yllr.net/vimprobable/
+ arch = i686
+ arch = x86_64
+ license = MIT
+ makedepends = git
+ depends = libwebkit>=1.1.11
+ depends = gtk2
+ depends = libsoup
+ provides = vimprobable2
+ conflicts = vimprobable2
+ source = vimprobable::git+http://git.code.sf.net/p/vimprobable/code
+ source = config.h
+ source = keymap.h
+ md5sums = SKIP
+ md5sums = e2845958a1ec3f4d77ae4bec87ef2e4d
+ md5sums = 85e971541294c8e354b095b804fe8ac6
+
+pkgname = vimprobable2-git
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..c5a3a96faefd
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,49 @@
+# Maintainer: jason ryan <jasonwryan@gmail.com>
+# Contributor: totoloco <totoloco en gmail>
+
+pkgname=vimprobable2-git
+pkgver=2014.12.26.ga514968
+pkgrel=2
+pkgdesc="Lightweight, keyboard-driven, WebKit based browser with Vim keybinds."
+arch=('i686' 'x86_64')
+url="http://www.yllr.net/vimprobable/"
+license=('MIT')
+depends=('libwebkit>=1.1.11' 'gtk2' 'libsoup')
+makedepends=('git')
+provides=('vimprobable2')
+conflicts=('vimprobable2')
+_gitname="vimprobable"
+_gitbranch="vimprobable2"/
+source=(
+ "$_gitname::git+http://git.code.sf.net/p/$_gitname/code"
+ 'config.h' 'keymap.h'
+ )
+md5sums=('SKIP'
+ 'e2845958a1ec3f4d77ae4bec87ef2e4d'
+ '85e971541294c8e354b095b804fe8ac6')
+
+pkgver() {
+ cd "$srcdir/${_gitname}"
+ git log -1 --format="%cd.g%h" --date=short | sed 's/-/./g'
+}
+
+prepare() {
+ cp {config,keymap}.h "$srcdir/${_gitname}"
+ cd "$srcdir/${_gitname}"
+ sed -i 's:LIBS = gtk+-2.0 webkit-1.0 libsoup-2.4:LIBS = gtk+-2.0 webkit-1.0 libsoup-2.4 javascriptcoregtk-1.0:' Makefile
+}
+
+build() {
+ cd "$srcdir/${_gitname}"
+ make
+}
+
+package() {
+ cd "$srcdir/$_gitname"
+ make PREFIX=/usr MANDIR=/usr/share/man DESTDIR="$pkgdir" install
+ mkdir -p "$pkgdir"/usr/share/licenses/"${_gitbranch}"
+ chmod 0755 "$pkgdir"/usr/share/licenses/"${_gitbranch}"/
+ install -m 644 LICENSE "$pkgdir"/usr/share/licenses/"${_gitbranch}"/LICENSE
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/config.h b/config.h
new file mode 100644
index 000000000000..e423f776274b
--- /dev/null
+++ b/config.h
@@ -0,0 +1,252 @@
+/*
+ (c) 2009 by Leon Winter
+ (c) 2009-2015 by Hannes Schueller
+ (c) 2009-2010 by Matto Fransen
+ (c) 2010-2011 by Hans-Peter Deifel
+ (c) 2010-2011 by Thomas Adam
+ (c) 2011 by Albert Kim
+ (c) 2013 Daniel Carl
+ see LICENSE file
+*/
+
+/* Vimprobable version number */
+#define VERSION "1.4.2"
+#define INTERNAL_VERSION "Vimprobable2/"VERSION
+
+extern Client client;
+
+/* general settings */
+char startpage[MAX_SETTING_SIZE] = "http://www.vimprobable.org/";
+char useragent[MAX_SETTING_SIZE] = "Vimprobable2/" VERSION;
+char acceptlanguage[MAX_SETTING_SIZE] = "";
+static const gboolean enablePlugins = TRUE; /* TRUE keeps plugins enabled */
+static const gboolean enableJava = TRUE; /* FALSE disables Java applets */
+static const gboolean enablePagecache = FALSE; /* TRUE turns on the page cache. */
+static const gboolean javascriptPopups = TRUE; /* TRUE disables Webkit's popup blocker which interferes with the F function */
+static gboolean escape_input_on_load = TRUE; /* TRUE will disable automatic focusing of input fields via Javascript*/
+static gboolean private_mode = FALSE; /* TRUE will disable writing to the history file, cookie file and closed file */
+char temp_dir[MAX_SETTING_SIZE] = "/tmp"; /* location of temporary files, default will be overridden if TEMPDIR is set */
+
+static const gboolean enableLocalstorage = FALSE;
+static const gboolean enableDatabase = FALSE;
+
+char downloads_path[MAX_SETTING_SIZE] = "";
+char statusfont[MAX_SETTING_SIZE] = "monospace bold 8"; /* font for status bar */
+
+/* appearance */
+char statusbgcolor[MAX_SETTING_SIZE] = "#000000"; /* background color for status bar */
+char statuscolor[MAX_SETTING_SIZE] = "#ffffff"; /* color for status bar */
+char sslbgcolor[MAX_SETTING_SIZE] = "#b0ff00"; /* background color for status bar with SSL url */
+char sslinvalidbgcolor[MAX_SETTING_SIZE]= "#ff0000"; /* background color for status bar with unverified SSL url */
+char sslcolor[MAX_SETTING_SIZE] = "#000000"; /* color for status bar with SSL url */
+
+ /* normal, warning, error */
+char urlboxfont[][MAX_SETTING_SIZE] = { "monospace normal 8", "monospace normal 8", "monospace bold 8"};
+static const char *urlboxcolor[] = { NULL, "#ff0000", "#ffffff" };
+static const char *urlboxbgcolor[] = { NULL, NULL, "#ff0000" };
+
+ /* normal, error */
+char completionfont[2][MAX_SETTING_SIZE] = { "monospace normal 8", "monospace bold 8" };
+ /* topborder color */
+static const char *completioncolor[] = { "#000000", "#ff00ff", "#000000" };
+ /* current row background */
+static const char *completionbgcolor[] = { "#ffffff", "#ffffff", "#fff000" };
+/* pango markup for prefix highliting: opening, closing */
+#define COMPLETION_TAG_OPEN "<b>"
+#define COMPLETION_TAG_CLOSE "</b>"
+
+#define ENABLE_HISTORY_INDICATOR
+#define ENABLE_INCREMENTAL_SEARCH
+#define ENABLE_GTK_PROGRESS_BAR
+#define ENABLE_WGET_PROGRESS_BAR
+static const int progressbartick = 20;
+static const char progressborderleft = '[';
+static const char progressbartickchar = '=';
+static const char progressbarcurrent = '>';
+static const char progressbarspacer = ' ';
+static const char progressborderright = ']';
+
+/* external handlers:
+ * the handle (first string) contain what the handled links have to start with
+ * the handlers (second string) contain the external applications which should be called for this sort of link
+ * %s can be used as a placeholder for the link argument after the handler
+ * e.g.: "mailto:user@example.org
+ * "handle" is "mailto:"
+ * "%s" will translate to "user@example.org"
+ */
+static URIHandler uri_handlers[] = {
+ { "mailto:", "x-terminal-emulator -e mutt %s" },
+ { "vimprobableedit:", "x-terminal-emulator -e vi %s" },
+ { "ftp://", "x-terminal-emulator -e wget ftp://%s" },
+};
+
+/* cookies */
+#define ENABLE_COOKIE_SUPPORT
+#define COOKIES_STORAGE_FILENAME "%s/vimprobable/cookies", client.config.config_base
+#define COOKIES_STORAGE_READONLY FALSE /* if TRUE new cookies will be lost if you quit */
+SoupCookieJarAcceptPolicy CookiePolicy = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY; /* by default, accept all cookies, but third party */
+SoupCookieJarAcceptPolicy CookiePolicyLastOn = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY; /* tracking variable for private mode */
+
+
+/* font size */
+#define DEFAULT_FONT_SIZE 12
+
+/* user styles */
+#define USER_STYLESHEET "%s/vimprobable/style.css", client.config.config_base
+
+/* user javascript */
+#define ENABLE_USER_SCRIPTFILE
+#define USER_SCRIPTFILE "%s/vimprobable/scripts.js", client.config.config_base
+
+/* ssl */
+static gboolean strict_ssl = TRUE; /* FALSE will accept any SSL certificate at face value */
+static char ca_bundle[MAX_SETTING_SIZE] = "/etc/ssl/certs/ca-certificates.crt";
+
+/* proxy */
+static const gboolean use_proxy = TRUE; /* TRUE if you're going to use a proxy (whose address
+ is specified in http_proxy environment variable), false otherwise */
+/* scrolling */
+static unsigned int scrollstep = 40; /* cursor difference in pixel */
+static unsigned int pagingkeep = 40; /* pixels kept when paging */
+#define DISABLE_SCROLLBAR
+
+/* searching */
+#define ENABLE_MATCH_HIGHLITING
+static const int searchoptions = CaseInsensitive | Wrapping;
+gboolean complete_case_sensitive = TRUE;
+
+/* search engines */
+static Searchengine searchengines[] = {
+ { "i", "http://ixquick.com/do/metasearch.pl?query=%s" },
+ { "s", "http://startpage.com/do/metasearch.pl?query=%s" },
+ { "w", "https://secure.wikimedia.org/wikipedia/en/w/index.php?title=Special%%3ASearch&search=%s&go=Go" },
+ { "wd", "https://secure.wikimedia.org/wikipedia/de/w/index.php?title=Special%%3ASearch&search=%s&go=Go" },
+ { "d", "https://duckduckgo.com/?q=%s&t=vimprobable" },
+ { "dd", "https://duckduckgo.com/html/?q=%s&t=vimprobable" },
+};
+
+static char defaultsearch[MAX_SETTING_SIZE] = "d";
+
+/* command mapping */
+Command commands[COMMANDSIZE] = {
+ /* command, function, argument */
+ { "ba", navigate, {NavigationBack} },
+ { "back", navigate, {NavigationBack} },
+ { "clear", clear, {0} },
+ { "ec", script, {Info} },
+ { "echo", script, {Info} },
+ { "echoe", script, {Error} },
+ { "echoerr", script, {Error} },
+ { "fw", navigate, {NavigationForward} },
+ { "fo", navigate, {NavigationForward} },
+ { "forward", navigate, {NavigationForward} },
+ { "javascript", script, {Silent} },
+ { "o", open_arg, {TargetCurrent} },
+ { "open", open_arg, {TargetCurrent} },
+ { "q", quit, {0} },
+ { "quit", quit, {0} },
+ { "re", navigate, {NavigationReload} },
+ { "re!", navigate, {NavigationForceReload} },
+ { "reload", navigate, {NavigationReload} },
+ { "reload!", navigate, {NavigationForceReload} },
+ { "qt", search_tag, {0} },
+ { "st", navigate, {NavigationCancel} },
+ { "stop", navigate, {NavigationCancel} },
+ { "t", open_arg, {TargetNew} },
+ { "tabopen", open_arg, {TargetNew} },
+ { "print", print_frame, {0} },
+ { "bma", bookmark, {0} },
+ { "bookmark", bookmark, {0} },
+ { "source", view_source, {0} },
+ { "esource", edit_source, {0} },
+ { "openeditor", open_editor, {0} },
+ { "set", browser_settings, {0} },
+ { "map", mappings, {0} },
+ { "inspect", open_inspector, {0} },
+ { "jumpleft", scroll, {ScrollJumpTo | DirectionLeft} },
+ { "jumpright", scroll, {ScrollJumpTo | DirectionRight} },
+ { "jumptop", scroll, {ScrollJumpTo | DirectionTop} },
+ { "jumpbottom", scroll, {ScrollJumpTo | DirectionBottom} },
+ { "pageup", scroll, {ScrollMove | DirectionTop | UnitPage} },
+ { "pagedown", scroll, {ScrollMove | DirectionBottom | UnitPage} },
+ { "navigationback", navigate, {NavigationBack} },
+ { "navigationforward", navigate, {NavigationForward} },
+ { "scrollleft", scroll, {ScrollMove | DirectionLeft | UnitLine} },
+ { "scrollright", scroll, {ScrollMove | DirectionRight | UnitLine} },
+ { "scrollup", scroll, {ScrollMove | DirectionTop | UnitLine} },
+ { "scrolldown", scroll, {ScrollMove | DirectionBottom | UnitLine} },
+ { "zi", zoom, {ZoomIn | ZoomText} },
+ { "zo", zoom, {ZoomOut | ZoomText} },
+ { "pgzi", zoom, {ZoomIn | ZoomFullContent} },
+ { "pgzo", zoom, {ZoomOut | ZoomFullContent} },
+};
+
+/* mouse bindings
+ you can use MOUSE_BUTTON_1 to MOUSE_BUTTON_5
+*/
+static Mouse mouse[] = {
+ /* modmask, modkey, button, function, argument */
+ { 0, 0, MOUSE_BUTTON_2, paste, {TargetCurrent | ClipboardPrimary | ClipboardGTK, client.state.rememberedURI} },
+ { GDK_CONTROL_MASK, 0, MOUSE_BUTTON_2, paste, {TargetNew | ClipboardPrimary | ClipboardGTK} },
+ { GDK_CONTROL_MASK, 0, MOUSE_BUTTON_1, open_remembered, {TargetNew} },
+};
+
+/* settings (arguments of :set command) */
+static Setting browsersettings[] = {
+ /* public name, internal variable webkit setting integer value? boolean value? colour value? reload page? */
+ { "useragent", useragent, "user-agent", FALSE, FALSE, FALSE, FALSE },
+ { "scripts", NULL, "enable-scripts", FALSE, TRUE, FALSE, FALSE },
+ { "plugins", NULL, "enable-plugins", FALSE, TRUE, FALSE, FALSE },
+ { "pagecache", NULL, "enable-page-cache", FALSE, TRUE, FALSE, FALSE },
+ { "java", NULL, "enable-java-applet", FALSE, TRUE, FALSE, FALSE },
+ { "images", NULL, "auto-load-images", FALSE, TRUE, FALSE, FALSE },
+ { "shrinkimages", NULL, "auto-shrink-images", FALSE, TRUE, FALSE, FALSE },
+ { "cursivefont", NULL, "cursive-font-family", FALSE, FALSE, FALSE, FALSE },
+ { "defaultencoding", NULL, "default-encoding", FALSE, FALSE, FALSE, FALSE },
+ { "defaultfont", NULL, "default-font-family", FALSE, FALSE, FALSE, FALSE },
+ { "fontsize", NULL, "default-font-size", TRUE, FALSE, FALSE, FALSE },
+ { "monofontsize", NULL, "default-monospace-font-size", TRUE, FALSE, FALSE, FALSE },
+ { "caret", NULL, "enable-caret-browsing", FALSE, TRUE, FALSE, FALSE },
+ { "fantasyfont", NULL, "fantasy-font-family", FALSE, FALSE, FALSE, FALSE },
+ { "minimumfontsize", NULL, "minimum-font-size", TRUE, FALSE, FALSE, FALSE },
+ { "monofont", NULL, "monospace-font-family", FALSE, FALSE, FALSE, FALSE },
+ { "backgrounds", NULL, "print-backgrounds", FALSE, TRUE, FALSE, FALSE },
+ { "sansfont", NULL, "sans-serif-font-family", FALSE, FALSE, FALSE, FALSE },
+ { "seriffont", NULL, "serif-font-family", FALSE, FALSE, FALSE, FALSE },
+ { "stylesheet", NULL, "user-stylesheet-uri", FALSE, FALSE, FALSE, FALSE },
+ { "resizetextareas", NULL, "resizable-text-areas", FALSE, TRUE, FALSE, FALSE },
+ { "webinspector", NULL, "enable-developer-extras", FALSE, TRUE, FALSE, FALSE },
+ { "localstorage", NULL, "enable-html5-local-storage", FALSE, TRUE, FALSE, FALSE },
+ { "html5db", NULL, "enable-html5-database", FALSE, TRUE, FALSE, FALSE },
+ { "popups", NULL, "javascript-can-open-windows-automatically",FALSE,TRUE, FALSE, FALSE },
+
+ { "homepage", startpage, "", FALSE, FALSE, FALSE, FALSE },
+ { "statusbgcolor", statusbgcolor, "", FALSE, FALSE, TRUE, TRUE },
+ { "statuscolor", statuscolor, "", FALSE, FALSE, TRUE, TRUE },
+ { "sslbgcolor", sslbgcolor, "", FALSE, FALSE, TRUE, TRUE },
+ { "sslcolor", sslcolor, "", FALSE, FALSE, TRUE, TRUE },
+ { "acceptlanguage", acceptlanguage, "", FALSE, FALSE, FALSE, FALSE },
+ { "defaultsearch", defaultsearch, "", FALSE, FALSE, FALSE, FALSE },
+ { "cookies", NULL, "", FALSE, FALSE, FALSE, FALSE },
+ { "downloadspath", downloads_path, "", FALSE, FALSE, FALSE, FALSE },
+ { "statusfont", statusfont, "", FALSE, FALSE, FALSE, FALSE },
+ { "urlboxfontnormal",urlboxfont[0], "", FALSE, FALSE, FALSE, FALSE },
+ { "urlboxfontwarning",urlboxfont[1], "", FALSE, FALSE, FALSE, FALSE },
+ { "urlboxfonterror", urlboxfont[2], "", FALSE, FALSE, FALSE, FALSE },
+ { "completionfontnormal", completionfont[0], "", FALSE, FALSE, FALSE, FALSE },
+ { "completionfonterror", completionfont[1], "", FALSE, FALSE, FALSE, FALSE },
+ { "qmark", NULL, "", FALSE, FALSE, FALSE, FALSE },
+ { "proxy", NULL, "", FALSE, TRUE, FALSE, FALSE },
+ { "windowsize", NULL, "", FALSE, FALSE, FALSE, FALSE },
+ { "scrollbars", NULL, "", FALSE, TRUE, FALSE, FALSE },
+ { "statusbar", NULL, "", FALSE, TRUE, FALSE, FALSE },
+ { "inputbox", NULL, "", FALSE, TRUE, FALSE, FALSE },
+ { "completioncase", NULL, "", FALSE, TRUE, FALSE, FALSE },
+ { "escapeinput", NULL, "", FALSE, TRUE, FALSE, FALSE },
+ { "private", NULL, "", FALSE, TRUE, FALSE, FALSE },
+ { "strictssl", NULL, "", FALSE, TRUE, FALSE, FALSE },
+ { "cabundle", ca_bundle, "", FALSE, FALSE, FALSE, FALSE },
+ { "tempdir", temp_dir, "", FALSE, FALSE, FALSE, FALSE },
+ { "history", NULL, "", TRUE, FALSE, FALSE, FALSE },
+ { "hi", NULL, "", TRUE, FALSE, FALSE, FALSE },
+};
diff --git a/keymap.h b/keymap.h
new file mode 100644
index 000000000000..3c7dc059c243
--- /dev/null
+++ b/keymap.h
@@ -0,0 +1,145 @@
+/*
+ (c) 2009 by Leon Winter
+ (c) 2009-2011 by Hannes Schueller
+ (c) 2009-2010 by Matto Fransen
+ (c) 2010-2011 by Hans-Peter Deifel
+ (c) 2010-2011 by Thomas Adam
+ (c) 2011 by Albert Kim
+ see LICENSE file
+*/
+#ifndef _KEYMAP
+
+#define _KEYMAP
+
+/* key bindings for normal mode
+ Note: GDK_VoidSymbol is a wildcard so it matches on every modkey
+*/
+Key keys[] = {
+ /* modmask, modkey, key, function, argument */
+ { 0, GDK_q, GDK_1, quickmark, { .s = "1" } },
+ { 0, GDK_q, GDK_2, quickmark, { .s = "2" } },
+ { 0, GDK_q, GDK_3, quickmark, { .s = "3" } },
+ { 0, GDK_q, GDK_4, quickmark, { .s = "4" } },
+ { 0, GDK_q, GDK_5, quickmark, { .s = "5" } },
+ { 0, GDK_q, GDK_6, quickmark, { .s = "6" } },
+ { 0, GDK_q, GDK_7, quickmark, { .s = "7" } },
+ { 0, GDK_q, GDK_8, quickmark, { .s = "8" } },
+ { 0, GDK_q, GDK_9, quickmark, { .s = "9" } },
+ { 0, GDK_Q, GDK_1, quickmark, { .s = "1", .i = 1 } },
+ { 0, GDK_Q, GDK_2, quickmark, { .s = "2", .i = 1 } },
+ { 0, GDK_Q, GDK_3, quickmark, { .s = "3", .i = 1 } },
+ { 0, GDK_Q, GDK_4, quickmark, { .s = "4", .i = 1 } },
+ { 0, GDK_Q, GDK_5, quickmark, { .s = "5", .i = 1 } },
+ { 0, GDK_Q, GDK_6, quickmark, { .s = "6", .i = 1 } },
+ { 0, GDK_Q, GDK_7, quickmark, { .s = "7", .i = 1 } },
+ { 0, GDK_Q, GDK_8, quickmark, { .s = "8", .i = 1 } },
+ { 0, GDK_Q, GDK_9, quickmark, { .s = "9", .i = 1 } },
+ { 0, 0, GDK_0, scroll, {ScrollJumpTo | DirectionLeft} },
+ { 0, 0, GDK_dollar, scroll, {ScrollJumpTo | DirectionRight} },
+ { 0, GDK_g, GDK_g, scroll, {ScrollJumpTo | DirectionTop} },
+ { 0, 0, GDK_G, scroll, {ScrollJumpTo | DirectionBottom} },
+ { 0, 0, GDK_h, scroll, {ScrollMove | DirectionLeft | UnitLine} },
+ { 0, 0, GDK_j, scroll, {ScrollMove | DirectionBottom | UnitLine} },
+ { 0, 0, GDK_k, scroll, {ScrollMove | DirectionTop | UnitLine} },
+ { 0, 0, GDK_l, scroll, {ScrollMove | DirectionRight | UnitLine} },
+ { 0, 0, GDK_space, scroll, {ScrollMove | DirectionBottom | UnitPage} },
+ { GDK_SHIFT_MASK, 0, GDK_space, scroll, {ScrollMove | DirectionTop | UnitPage} },
+ { GDK_CONTROL_MASK, 0, GDK_b, scroll, {ScrollMove | DirectionTop | UnitPage} },
+ { GDK_CONTROL_MASK, 0, GDK_f, scroll, {ScrollMove | DirectionBottom | UnitPage} },
+ { GDK_CONTROL_MASK, 0, GDK_d, scroll, {ScrollMove | DirectionBottom | UnitBuffer} },
+ { GDK_CONTROL_MASK, 0, GDK_u, scroll, {ScrollMove | DirectionTop | UnitBuffer} },
+ { GDK_CONTROL_MASK, 0, GDK_e, scroll, {ScrollMove | DirectionBottom | UnitLine} },
+ { GDK_CONTROL_MASK, 0, GDK_y, scroll, {ScrollMove | DirectionTop | UnitLine} },
+
+ { 0, GDK_g, GDK_t, fake_key_event, { .s = "l", .i = ShiftMask + ControlMask } },
+ { 0, GDK_g, GDK_T, fake_key_event, { .s = "h", .i = ShiftMask + ControlMask } },
+ { 0, GDK_g, GDK_1, fake_key_event, { .s = "1", .i = ControlMask } },
+ { 0, GDK_g, GDK_2, fake_key_event, { .s = "2", .i = ControlMask } },
+ { 0, GDK_g, GDK_3, fake_key_event, { .s = "3", .i = ControlMask } },
+ { 0, GDK_g, GDK_4, fake_key_event, { .s = "4", .i = ControlMask } },
+ { 0, GDK_g, GDK_5, fake_key_event, { .s = "5", .i = ControlMask } },
+ { 0, GDK_g, GDK_6, fake_key_event, { .s = "6", .i = ControlMask } },
+ { 0, GDK_g, GDK_7, fake_key_event, { .s = "7", .i = ControlMask } },
+ { 0, GDK_g, GDK_8, fake_key_event, { .s = "8", .i = ControlMask } },
+ { 0, GDK_g, GDK_9, fake_key_event, { .s = "9", .i = ControlMask } },
+ { 0, GDK_g, GDK_0, fake_key_event, { .s = "0", .i = ControlMask } },
+
+ { GDK_CONTROL_MASK, 0, GDK_i, navigate, {NavigationBack} },
+ { GDK_CONTROL_MASK, 0, GDK_o, navigate, {NavigationForward} },
+ { 0, 0, GDK_H, navigate, {NavigationBack} },
+ { 0, 0, GDK_L, navigate, {NavigationForward} },
+ { 0, 0, GDK_r, navigate, {NavigationReload} },
+ { 0, 0, GDK_R, navigate, {NavigationForceReload} },
+ { GDK_CONTROL_MASK, 0, GDK_c, navigate, {NavigationCancel} },
+
+ { 0, 0, GDK_plus, zoom, {ZoomIn | ZoomText} },
+ { 0, 0, GDK_minus, zoom, {ZoomOut | ZoomText} },
+ { 0, 0, GDK_KP_Add, zoom, {ZoomIn | ZoomText} },
+ { 0, 0, GDK_KP_Subtract,zoom, {ZoomOut | ZoomText} },
+ { 0, GDK_z, GDK_i, zoom, {ZoomIn | ZoomText} },
+ { 0, GDK_z, GDK_o, zoom, {ZoomOut | ZoomText} },
+ { 0, GDK_z, GDK_z, zoom, {ZoomReset | ZoomText} },
+ { 0, GDK_z, GDK_I, zoom, {ZoomIn | ZoomFullContent} },
+ { 0, GDK_z, GDK_O, zoom, {ZoomOut | ZoomFullContent} },
+ { 0, GDK_z, GDK_Z, zoom, {ZoomReset | ZoomFullContent} },
+
+ { 0, 0, GDK_y, yank, {SourceURL | ClipboardPrimary | ClipboardGTK} },
+ { 0, 0, GDK_Y, yank, {SourceSelection| ClipboardPrimary | ClipboardGTK} },
+
+ { 0, GDK_g, GDK_u, descend, {NthSubdir} },
+ { 0, GDK_g, GDK_U, descend, {Rootdir} },
+
+ { 0, GDK_g, GDK_h, open_arg, {TargetCurrent, startpage} },
+ { 0, GDK_g, GDK_H, open_arg, {TargetNew, startpage} },
+
+ { 0, 0, GDK_p, paste, {TargetCurrent | ClipboardPrimary | ClipboardGTK} },
+ { 0, 0, GDK_P, paste, {TargetNew | ClipboardPrimary | ClipboardGTK} },
+
+ { GDK_CONTROL_MASK, 0, GDK_a, number, {Increment} },
+ { GDK_CONTROL_MASK, 0, GDK_x, number, {Decrement} },
+
+ { 0, 0, GDK_n, search, {DirectionNext | CaseInsensitive | Wrapping} },
+ { 0, 0, GDK_N, search, {DirectionPrev | CaseInsensitive | Wrapping} },
+
+ { 0, 0, GDK_colon, input, {.s = ":" } },
+ { 0, 0, GDK_o, input, {.s = ":open "} },
+ { 0, 0, GDK_O, input, {.s = ":open ", .i = InsertCurrentURL} },
+ { 0, 0, GDK_t, input, {.s = ":tabopen "} },
+ { 0, 0, GDK_T, input, {.s = ":tabopen ", .i = InsertCurrentURL} },
+ { 0, 0, GDK_slash, input, {.s = "/"} },
+ { 0, 0, GDK_KP_Divide, input, {.s = "/"} },
+ { 0, 0, GDK_question, input, {.s = "?"} },
+
+ { 0, 0, GDK_period, input, {.s = "."} },
+ { 0, 0, GDK_comma, input, {.s = ","} },
+ { 0, GDK_semicolon, GDK_i, input, {.s = ";i"} },
+ { 0, GDK_semicolon, GDK_l, input, {.s = ";l"} },
+ { 0, GDK_semicolon, GDK_s, input, {.s = ";s"} },
+ { 0, GDK_semicolon, GDK_y, input, {.s = ";y"} },
+ { 0, GDK_semicolon, GDK_o, input, {.s = ";o"} },
+ { 0, GDK_semicolon, GDK_t, input, {.s = ";t"} },
+ { 0, GDK_semicolon, GDK_w, input, {.s = ";w"} },
+ { 0, GDK_semicolon, GDK_I, input, {.s = ";I"} },
+ { 0, GDK_semicolon, GDK_O, input, {.s = ";O"} },
+ { 0, GDK_semicolon, GDK_T, input, {.s = ";T"} },
+ { 0, GDK_semicolon, GDK_W, input, {.s = ";W"} },
+
+ /* this needs to be a binding using CTRL for obvious reasons */
+ { GDK_CONTROL_MASK, 0, GDK_t, open_editor,{} },
+
+ { 0, GDK_VoidSymbol, GDK_Escape, set, {ModeNormal} },
+ { GDK_CONTROL_MASK, GDK_VoidSymbol, GDK_bracketleft,set, {ModeNormal} },
+ { GDK_CONTROL_MASK, 0, GDK_z, set, {ModePassThrough} },
+ { GDK_CONTROL_MASK, 0, GDK_v, set, {ModeSendKey} },
+ { 0, 0, GDK_f, input, {.s = "."} },
+ { 0, 0, GDK_F, input, {.s = ","} },
+
+ { 0, GDK_g, GDK_i, focus_input,{} },
+ { 0, 0, GDK_u, revive, {} },
+
+ { 0, 0, GDK_d, quit, {0} },
+ /* leave this last line as last */
+ { 0, 0, 0, 0, {0} },
+};
+
+#endif