From 77cac1bdff5bd392be44625b17f4395654eb35dd Mon Sep 17 00:00:00 2001 From: Hannes Schueller Date: Sun, 22 Nov 2015 13:10:59 +0100 Subject: [PATCH] quickmarks extension to letters as well Patch by Matthew Carter --- keymap.h | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- main.c | 6 ++-- utilities.c | 25 +++++++------- 3 files changed, 123 insertions(+), 17 deletions(-) diff --git a/keymap.h b/keymap.h index 3c7dc05..395a92d 100644 --- a/keymap.h +++ b/keymap.h @@ -17,7 +17,7 @@ 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_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" } }, @@ -25,6 +25,59 @@ Key keys[] = { { 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_0, quickmark, { .s = "0" } }, + { 0, GDK_q, GDK_a, quickmark, { .s = "a" } }, + { 0, GDK_q, GDK_b, quickmark, { .s = "b" } }, + { 0, GDK_q, GDK_c, quickmark, { .s = "c" } }, + { 0, GDK_q, GDK_d, quickmark, { .s = "d" } }, + { 0, GDK_q, GDK_e, quickmark, { .s = "e" } }, + { 0, GDK_q, GDK_f, quickmark, { .s = "f" } }, + { 0, GDK_q, GDK_g, quickmark, { .s = "g" } }, + { 0, GDK_q, GDK_h, quickmark, { .s = "h" } }, + { 0, GDK_q, GDK_i, quickmark, { .s = "i" } }, + { 0, GDK_q, GDK_j, quickmark, { .s = "j" } }, + { 0, GDK_q, GDK_k, quickmark, { .s = "k" } }, + { 0, GDK_q, GDK_l, quickmark, { .s = "l" } }, + { 0, GDK_q, GDK_m, quickmark, { .s = "m" } }, + { 0, GDK_q, GDK_n, quickmark, { .s = "n" } }, + { 0, GDK_q, GDK_o, quickmark, { .s = "o" } }, + { 0, GDK_q, GDK_p, quickmark, { .s = "p" } }, + { 0, GDK_q, GDK_q, quickmark, { .s = "q" } }, + { 0, GDK_q, GDK_r, quickmark, { .s = "r" } }, + { 0, GDK_q, GDK_s, quickmark, { .s = "s" } }, + { 0, GDK_q, GDK_t, quickmark, { .s = "t" } }, + { 0, GDK_q, GDK_u, quickmark, { .s = "u" } }, + { 0, GDK_q, GDK_v, quickmark, { .s = "v" } }, + { 0, GDK_q, GDK_w, quickmark, { .s = "w" } }, + { 0, GDK_q, GDK_x, quickmark, { .s = "x" } }, + { 0, GDK_q, GDK_y, quickmark, { .s = "y" } }, + { 0, GDK_q, GDK_z, quickmark, { .s = "z" } }, + { 0, GDK_q, GDK_A, quickmark, { .s = "A" } }, + { 0, GDK_q, GDK_B, quickmark, { .s = "B" } }, + { 0, GDK_q, GDK_C, quickmark, { .s = "C" } }, + { 0, GDK_q, GDK_D, quickmark, { .s = "D" } }, + { 0, GDK_q, GDK_E, quickmark, { .s = "E" } }, + { 0, GDK_q, GDK_F, quickmark, { .s = "F" } }, + { 0, GDK_q, GDK_G, quickmark, { .s = "G" } }, + { 0, GDK_q, GDK_H, quickmark, { .s = "H" } }, + { 0, GDK_q, GDK_I, quickmark, { .s = "I" } }, + { 0, GDK_q, GDK_J, quickmark, { .s = "J" } }, + { 0, GDK_q, GDK_K, quickmark, { .s = "K" } }, + { 0, GDK_q, GDK_L, quickmark, { .s = "L" } }, + { 0, GDK_q, GDK_M, quickmark, { .s = "M" } }, + { 0, GDK_q, GDK_N, quickmark, { .s = "N" } }, + { 0, GDK_q, GDK_O, quickmark, { .s = "O" } }, + { 0, GDK_q, GDK_P, quickmark, { .s = "P" } }, + { 0, GDK_q, GDK_Q, quickmark, { .s = "Q" } }, + { 0, GDK_q, GDK_R, quickmark, { .s = "R" } }, + { 0, GDK_q, GDK_S, quickmark, { .s = "S" } }, + { 0, GDK_q, GDK_T, quickmark, { .s = "T" } }, + { 0, GDK_q, GDK_U, quickmark, { .s = "U" } }, + { 0, GDK_q, GDK_V, quickmark, { .s = "V" } }, + { 0, GDK_q, GDK_W, quickmark, { .s = "W" } }, + { 0, GDK_q, GDK_X, quickmark, { .s = "X" } }, + { 0, GDK_q, GDK_Y, quickmark, { .s = "Y" } }, + { 0, GDK_q, GDK_Z, quickmark, { .s = "Z" } }, { 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 } }, @@ -34,6 +87,60 @@ Key keys[] = { { 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, GDK_Q, GDK_0, quickmark, { .s = "0", .i = 1 } }, + { 0, GDK_Q, GDK_a, quickmark, { .s = "a", .i = 1 } }, + { 0, GDK_Q, GDK_b, quickmark, { .s = "b", .i = 1 } }, + { 0, GDK_Q, GDK_c, quickmark, { .s = "c", .i = 1 } }, + { 0, GDK_Q, GDK_d, quickmark, { .s = "d", .i = 1 } }, + { 0, GDK_Q, GDK_e, quickmark, { .s = "e", .i = 1 } }, + { 0, GDK_Q, GDK_f, quickmark, { .s = "f", .i = 1 } }, + { 0, GDK_Q, GDK_g, quickmark, { .s = "g", .i = 1 } }, + { 0, GDK_Q, GDK_h, quickmark, { .s = "h", .i = 1 } }, + { 0, GDK_Q, GDK_i, quickmark, { .s = "i", .i = 1 } }, + { 0, GDK_Q, GDK_j, quickmark, { .s = "j", .i = 1 } }, + { 0, GDK_Q, GDK_k, quickmark, { .s = "k", .i = 1 } }, + { 0, GDK_Q, GDK_l, quickmark, { .s = "l", .i = 1 } }, + { 0, GDK_Q, GDK_m, quickmark, { .s = "m", .i = 1 } }, + { 0, GDK_Q, GDK_n, quickmark, { .s = "n", .i = 1 } }, + { 0, GDK_Q, GDK_o, quickmark, { .s = "o", .i = 1 } }, + { 0, GDK_Q, GDK_p, quickmark, { .s = "p", .i = 1 } }, + { 0, GDK_Q, GDK_q, quickmark, { .s = "q", .i = 1 } }, + { 0, GDK_Q, GDK_r, quickmark, { .s = "r", .i = 1 } }, + { 0, GDK_Q, GDK_s, quickmark, { .s = "s", .i = 1 } }, + { 0, GDK_Q, GDK_t, quickmark, { .s = "t", .i = 1 } }, + { 0, GDK_Q, GDK_u, quickmark, { .s = "u", .i = 1 } }, + { 0, GDK_Q, GDK_v, quickmark, { .s = "v", .i = 1 } }, + { 0, GDK_Q, GDK_w, quickmark, { .s = "w", .i = 1 } }, + { 0, GDK_Q, GDK_x, quickmark, { .s = "x", .i = 1 } }, + { 0, GDK_Q, GDK_y, quickmark, { .s = "y", .i = 1 } }, + { 0, GDK_Q, GDK_z, quickmark, { .s = "z", .i = 1 } }, + { 0, GDK_Q, GDK_A, quickmark, { .s = "A", .i = 1 } }, + { 0, GDK_Q, GDK_B, quickmark, { .s = "B", .i = 1 } }, + { 0, GDK_Q, GDK_C, quickmark, { .s = "C", .i = 1 } }, + { 0, GDK_Q, GDK_D, quickmark, { .s = "D", .i = 1 } }, + { 0, GDK_Q, GDK_E, quickmark, { .s = "E", .i = 1 } }, + { 0, GDK_Q, GDK_F, quickmark, { .s = "F", .i = 1 } }, + { 0, GDK_Q, GDK_G, quickmark, { .s = "G", .i = 1 } }, + { 0, GDK_Q, GDK_H, quickmark, { .s = "H", .i = 1 } }, + { 0, GDK_Q, GDK_I, quickmark, { .s = "I", .i = 1 } }, + { 0, GDK_Q, GDK_J, quickmark, { .s = "J", .i = 1 } }, + { 0, GDK_Q, GDK_K, quickmark, { .s = "K", .i = 1 } }, + { 0, GDK_Q, GDK_L, quickmark, { .s = "L", .i = 1 } }, + { 0, GDK_Q, GDK_M, quickmark, { .s = "M", .i = 1 } }, + { 0, GDK_Q, GDK_N, quickmark, { .s = "N", .i = 1 } }, + { 0, GDK_Q, GDK_O, quickmark, { .s = "O", .i = 1 } }, + { 0, GDK_Q, GDK_P, quickmark, { .s = "P", .i = 1 } }, + { 0, GDK_Q, GDK_Q, quickmark, { .s = "Q", .i = 1 } }, + { 0, GDK_Q, GDK_R, quickmark, { .s = "R", .i = 1 } }, + { 0, GDK_Q, GDK_S, quickmark, { .s = "S", .i = 1 } }, + { 0, GDK_Q, GDK_T, quickmark, { .s = "T", .i = 1 } }, + { 0, GDK_Q, GDK_U, quickmark, { .s = "U", .i = 1 } }, + { 0, GDK_Q, GDK_V, quickmark, { .s = "V", .i = 1 } }, + { 0, GDK_Q, GDK_W, quickmark, { .s = "W", .i = 1 } }, + { 0, GDK_Q, GDK_X, quickmark, { .s = "X", .i = 1 } }, + { 0, GDK_Q, GDK_Y, quickmark, { .s = "Y", .i = 1 } }, + { 0, GDK_Q, GDK_Z, quickmark, { .s = "Z", .i = 1 } }, + { 0, 0, GDK_0, scroll, {ScrollJumpTo | DirectionLeft} }, { 0, 0, GDK_dollar, scroll, {ScrollJumpTo | DirectionRight} }, { 0, GDK_g, GDK_g, scroll, {ScrollJumpTo | DirectionTop} }, diff --git a/main.c b/main.c index d90c4c2..bd3bcea 100644 --- a/main.c +++ b/main.c @@ -1541,7 +1541,7 @@ jsapi_evaluate_script(const gchar *script, gchar **value, gchar **message) { gboolean quickmark(const Arg *a) { int i, b; - b = atoi(a->s); + b = (int) a->s[0]; char *fn = g_strdup_printf(QUICKMARK_FILE); FILE *fp; fp = fopen(fn, "r"); @@ -1549,7 +1549,7 @@ quickmark(const Arg *a) { fn = NULL; char buf[100]; - if (fp != NULL && b < 10) { + if (fp != NULL && b < 128) { for( i=0; i < b; ++i ) { if (feof(fp)) { break; @@ -1562,7 +1562,7 @@ quickmark(const Arg *a) { Arg x = { .s = buf, .i = a->i ? TargetNew : TargetCurrent }; return open_arg(&x); } else { - echo_message(Error, "Quickmark %d not defined", b); + echo_message(Error, "Quickmark %c not defined", (char) b); return false; } } else { return false; } diff --git a/utilities.c b/utilities.c index 462a0f0..16506ba 100644 --- a/utilities.c +++ b/utilities.c @@ -74,34 +74,33 @@ process_save_qmark(const char *bm, WebKitWebView *webview) FILE *fp; const char *filename; const char *uri = webkit_web_view_get_uri(webview); - char qmarks[10][101]; + char qmarks[128][101]; char buf[100]; int i, mark, l=0; - mark = -1; - mark = atoi(bm); - if ( mark < 1 || mark > 9 ) { - echo_message(Error, "Invalid quickmark, only 1-9"); + mark = (int) bm[0]; + if ( mark < 1 || mark > 127 ) { + echo_message(Error, "Invalid quickmark (%c), only ASCII character range.", (char) mark); return TRUE; - } + } if ( uri == NULL ) return FALSE; - for( i=0; i < 9; ++i ) strcpy( qmarks[i], ""); + for( i=0; i < 128; ++i ) strcpy( qmarks[i], ""); filename = g_strdup_printf(QUICKMARK_FILE); /* get current quickmarks */ - + fp = fopen(filename, "r"); if (fp != NULL){ - for( i=0; i < 10; ++i ) { + for( i=0; i < 128; ++i ) { if (feof(fp)) { break; } fgets(buf, 100, fp); l = 0; while (buf[l] && l < 100 && buf[l] != '\n') { - qmarks[i][l]=buf[l]; + qmarks[i][l]=buf[l]; l++; - } + } qmarks[i][l]='\0'; } fclose(fp); @@ -112,10 +111,10 @@ process_save_qmark(const char *bm, WebKitWebView *webview) fp = fopen(filename, "w"); g_free((gpointer *)filename); if (fp == NULL) return FALSE; - for( i=0; i < 10; ++i ) + for( i=0; i < 128; ++i ) fprintf(fp, "%s\n", qmarks[i]); fclose(fp); - echo_message(Error, "Saved as quickmark %d: %s", mark, uri); + echo_message(Error, "Saved as quickmark %c: %s", (char) mark, uri); return TRUE; } -- 2.11.4.GIT