tEnable the insert mode. Thanks to [email protected]! - surf - customized … | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit c12b6499fe68b4bc3114ed241c937dd38f94de87 | |
parent d911219554e1b51f02ac29aaf200f15f083c9dee | |
Author: Christoph Lohmann <[email protected]> | |
Date: Thu, 15 Nov 2012 15:26:48 +0100 | |
Enable the insert mode. Thanks to [email protected]! | |
Diffstat: | |
M config.def.h | 1 + | |
M surf.1 | 41 +++++++++++++++++++++++++++++… | |
M surf.c | 74 +++++++++++++++++++++++++++--… | |
3 files changed, 106 insertions(+), 10 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -43,6 +43,7 @@ static Key keys[] = { | |
{ MODKEY, GDK_k, scroll_v, { .i = -1 } }, | |
{ MODKEY, GDK_b, scroll_v, { .i = -10000 } }, | |
{ MODKEY, GDK_space, scroll_v, { .i = +10000 } }, | |
+ { 0, GDK_i, insert, { 0 } }, | |
{ MODKEY, GDK_i, scroll_h, { .i = +1 } }, | |
{ MODKEY, GDK_u, scroll_h, { .i = -1 } }, | |
{ 0, GDK_Escape, stop, { 0 } }, | |
diff --git a/surf.1 b/surf.1 | |
t@@ -67,6 +67,18 @@ Scrolls page upwards. | |
.B Ctrl\-j | |
Scrolls page downwards. | |
.TP | |
+.B Ctrl\-b | |
+Scroll up one whole page view. | |
+.TP | |
+.B Ctrl\-Space | |
+Scroll down one whole page view. | |
+.TP | |
+.B Ctrl\-i | |
+Scroll horizontally to the right. | |
+.TP | |
+.B Ctrl\-u | |
+Scroll horizontally to the left. | |
+.TP | |
.B Ctrl\-Shift\-k | |
Zooms page in. | |
.TP | |
t@@ -76,7 +88,20 @@ Zooms page out | |
.B Ctrl\-Shift\-i | |
Resets Zoom | |
.TP | |
-.B Ctrl\-f | |
+.B i | |
+Enter insert mode. There all keybindings have effect with and without | |
+pressing the modkey. | |
+.TP | |
+.B ESC | |
+Leave the insert mode. | |
+.TP | |
+.B Ctrl\-h | |
+Navigate back one step in history. | |
+.TP | |
+.B Ctrl\-l | |
+Navigate forward one step in history. | |
+.TP | |
+.B Ctrl\-f and Ctrl\-\\ | |
Opens the search-bar. | |
.TP | |
.B Ctrl\-n | |
t@@ -104,7 +129,19 @@ Reloads the website without using cache. | |
Copies current URI to primary selection. | |
.TP | |
.B Ctrl\-o | |
-show the sourcecode of the current page. | |
+Show the sourcecode of the current page. | |
+.TP | |
+.B Ctrl\-v | |
+Toggle the enabling of plugins on that surf instance. | |
+.TP | |
+.B Ctrl\-Shift\-i | |
+Toggle auto-loading of images. | |
+.TP | |
+.B Ctrl\-c | |
+Toggle caret browsing. | |
+.TP | |
+.B Ctrl\-Shift\-s | |
+Toggle script execution. | |
.SH ENVIRONMENT | |
.TP | |
.B SURF_USERAGENT | |
diff --git a/surf.c b/surf.c | |
t@@ -79,6 +79,8 @@ static GdkNativeWindow embed = 0; | |
static gboolean showxid = FALSE; | |
static char winid[64]; | |
static gboolean loadimage = 1, plugin = 1, script = 1, using_proxy = 0; | |
+static char togglestat[6]; | |
+static gboolean insertmode = FALSE; | |
static char *buildpath(const char *path); | |
static gboolean buttonrelease(WebKitWebView *web, GdkEventButton *e, GList *gl… | |
t@@ -101,6 +103,7 @@ static void find(Client *c, const Arg *arg); | |
static const char *getatom(Client *c, int a); | |
static char *geturi(Client *c); | |
static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c); | |
+static void insert(Client *c, const Arg *arg); | |
static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c); | |
static void linkhover(WebKitWebView *v, const char* t, const char* l, Client *… | |
static void loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c… | |
t@@ -127,6 +130,7 @@ static void eval(Client *c, const Arg *arg); | |
static void stop(Client *c, const Arg *arg); | |
static void titlechange(WebKitWebView *v, WebKitWebFrame* frame, const char* t… | |
static void toggle(Client *c, const Arg *arg); | |
+static void gettogglestat(Client *c); | |
static void update(Client *c); | |
static void updatewinid(Client *c); | |
static void usage(void); | |
t@@ -433,20 +437,50 @@ initdownload(WebKitWebView *view, WebKitDownload *o, Cli… | |
return FALSE; | |
} | |
+void | |
+insert(Client *c, const Arg *arg) { | |
+ insertmode = TRUE; | |
+ update(clients); | |
+} | |
+ | |
gboolean | |
keypress(GtkWidget* w, GdkEventKey *ev, Client *c) { | |
- guint i; | |
+ guint i, state; | |
gboolean processed = FALSE; | |
+ /* turn off insert mode */ | |
+ if(insertmode && (ev->keyval == GDK_Escape)) { | |
+ insertmode = FALSE; | |
+ update(c); | |
+ return TRUE; | |
+ } | |
+ | |
+ if(insertmode && (((ev->state & MODKEY) != MODKEY) || !MODKEY)) { | |
+ return FALSE; | |
+ } | |
+ | |
+ if(ev->keyval == GDK_Escape) { | |
+ webkit_web_view_set_highlight_text_matches(c->view, FALSE); | |
+ return TRUE; | |
+ } | |
+ | |
updatewinid(c); | |
for(i = 0; i < LENGTH(keys); i++) { | |
+ if(!insertmode && (MODKEY & keys[i].mod)) { | |
+ state = ev->state | MODKEY; | |
+ } else { | |
+ state = ev->state; | |
+ } | |
+ | |
if(gdk_keyval_to_lower(ev->keyval) == keys[i].keyval | |
- && (ev->state & keys[i].mod) == keys[i].mod | |
&& keys[i].func) { | |
- keys[i].func(c, &(keys[i].arg)); | |
- processed = TRUE; | |
+ if(state == keys[i].mod) { | |
+ keys[i].func(c, &(keys[i].arg)); | |
+ processed = TRUE; | |
+ } | |
} | |
} | |
+ | |
return processed; | |
} | |
t@@ -891,7 +925,7 @@ titlechange(WebKitWebView *v, WebKitWebFrame *f, const cha… | |
} | |
void | |
-toggle(Client *c, const Arg *arg) { | |
+toggle(Client *c, const Arg *arg) { | |
WebKitWebSettings *settings; | |
char *name = (char *)arg->v; | |
gboolean value; | |
t@@ -905,18 +939,42 @@ toggle(Client *c, const Arg *arg) { | |
} | |
void | |
+gettogglestat(Client *c){ | |
+ gboolean value; | |
+ WebKitWebSettings *settings = webkit_web_view_get_settings(c->view); | |
+ | |
+ togglestat[4] = '\0'; | |
+ g_object_get(G_OBJECT(settings), "auto-load-images", &value, NULL); | |
+ togglestat[0] = value?'I':'i'; | |
+ g_object_get(G_OBJECT(settings), "enable-scripts", &value, NULL); | |
+ togglestat[1] = value?'S':'s'; | |
+ g_object_get(G_OBJECT(settings), "enable-plugins", &value, NULL); | |
+ togglestat[2] = value?'V':'v'; | |
+ g_object_get(G_OBJECT(settings), "enable-caret-browsing", | |
+ &value, NULL); | |
+ togglestat[3] = value?'C':'c'; | |
+ | |
+ togglestat[4] = insertmode? '+' : '-'; | |
+ togglestat[5] = '\0'; | |
+} | |
+ | |
+ | |
+void | |
update(Client *c) { | |
char *t; | |
+ gettogglestat(c); | |
+ | |
if(c->linkhover) { | |
- t = g_strdup(c->linkhover); | |
+ t = g_strdup_printf("%s| %s", togglestat, c->linkhover); | |
} else if(c->progress != 100) { | |
drawindicator(c); | |
gtk_widget_show(c->indicator); | |
- t = g_strdup_printf("[%i%%] %s", c->progress, c->title); | |
+ t = g_strdup_printf("[%i%%] %s| %s", c->progress, togglestat, | |
+ c->title); | |
} else { | |
gtk_widget_hide_all(c->indicator); | |
- t = g_strdup(c->title); | |
+ t = g_strdup_printf("%s| %s", togglestat, c->title); | |
} | |
gtk_window_set_title(GTK_WINDOW(c->win), t); |