From 94c0b6e4b62107ac59121a6a04e893923837408b Mon Sep 17 00:00:00 2001 From: Yu-Jie Lin Date: Sun, 31 Jul 2011 21:34:35 +0800 Subject: add scroll by a page actions A page is the window width or height. Signed-off-by: Yu-Jie Lin --- src/keyevents.c | 28 ++++++++++++++++++++++++++++ src/options.h | 4 ++++ 2 files changed, 32 insertions(+) diff --git a/src/keyevents.c b/src/keyevents.c index ddfe782..7c5e313 100644 --- a/src/keyevents.c +++ b/src/keyevents.c @@ -97,6 +97,10 @@ void init_keyevents(void) { feh_set_kb(&keys.scroll_right,0,XK_KP_Right , 4, XK_Right , 0, 0); feh_set_kb(&keys.scroll_down,0, XK_KP_Down , 4, XK_Down , 0, 0); feh_set_kb(&keys.scroll_up , 0, XK_KP_Up , 4, XK_Up , 0, 0); + feh_set_kb(&keys.scroll_left_page , 8, XK_Left , 0, 0 , 0, 0); + feh_set_kb(&keys.scroll_right_page, 8, XK_Right, 0, 0 , 0, 0); + feh_set_kb(&keys.scroll_down_page , 8, XK_Down , 0, 0 , 0, 0); + feh_set_kb(&keys.scroll_up_page , 8, XK_Up , 0, 0 , 0, 0); feh_set_kb(&keys.prev_img , 0, XK_Left , 0, XK_p , 0, XK_BackSpace); feh_set_kb(&keys.next_img , 0, XK_Right , 0, XK_n , 0, XK_space); feh_set_kb(&keys.jump_back , 0, XK_Page_Up , 0, XK_KP_Page_Up, 0, 0); @@ -191,6 +195,14 @@ void init_keyevents(void) { cur_kb = &keys.scroll_up; else if (!strcmp(action, "scroll_down")) cur_kb = &keys.scroll_down; + else if (!strcmp(action, "scroll_right_page")) + cur_kb = &keys.scroll_right_page; + else if (!strcmp(action, "scroll_left_page")) + cur_kb = &keys.scroll_left_page; + else if (!strcmp(action, "scroll_up_page")) + cur_kb = &keys.scroll_up_page; + else if (!strcmp(action, "scroll_down_page")) + cur_kb = &keys.scroll_down_page; else if (!strcmp(action, "prev_img")) cur_kb = &keys.prev_img; else if (!strcmp(action, "next_img")) @@ -449,6 +461,22 @@ void feh_event_handle_keypress(XEvent * ev) winwid->im_y += 20; winwidget_render_image(winwid, 0, 1); } + else if (feh_is_kp(&keys.scroll_right_page, keysym, state)) { + winwid->im_x -= winwid->w; + winwidget_render_image(winwid, 0, 1); + } + else if (feh_is_kp(&keys.scroll_left_page, keysym, state)) { + winwid->im_x += winwid->w; + winwidget_render_image(winwid, 0, 1); + } + else if (feh_is_kp(&keys.scroll_down_page, keysym, state)) { + winwid->im_y -= winwid->h; + winwidget_render_image(winwid, 0, 1); + } + else if (feh_is_kp(&keys.scroll_up_page, keysym, state)) { + winwid->im_y += winwid->h; + winwidget_render_image(winwid, 0, 1); + } else if (feh_is_kp(&keys.jump_back, keysym, state)) { if (opt.slideshow) slideshow_change_image(winwid, SLIDE_JUMP_BACK); diff --git a/src/options.h b/src/options.h index f0015c9..3c62441 100644 --- a/src/options.h +++ b/src/options.h @@ -152,6 +152,10 @@ struct __fehkb { struct __fehkey next_img; struct __fehkey scroll_up; struct __fehkey scroll_down; + struct __fehkey scroll_right_page; + struct __fehkey scroll_left_page; + struct __fehkey scroll_up_page; + struct __fehkey scroll_down_page; struct __fehkey jump_back; struct __fehkey quit; struct __fehkey jump_fwd; -- cgit v1.2.3 From 1388cdeaa585468440a5110fe80b7139da366a4d Mon Sep 17 00:00:00 2001 From: Yu-Jie Lin Date: Sun, 31 Jul 2011 23:02:22 +0800 Subject: allow multiple modifier Signed-off-by: Yu-Jie Lin --- src/keyevents.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/keyevents.c b/src/keyevents.c index 7c5e313..12e9f73 100644 --- a/src/keyevents.c +++ b/src/keyevents.c @@ -50,22 +50,22 @@ static void feh_set_parse_kb_partial(fehkey *key, int index, char *ks) { return; } - if (ks[1] == '-') { - switch (ks[0]) { + while (cur[1] == '-') { + switch (cur[0]) { case 'C': - mod = ControlMask; + mod |= ControlMask; break; case '1': - mod = Mod1Mask; + mod |= Mod1Mask; break; case '4': - mod = Mod4Mask; + mod |= Mod4Mask; break; default: - weprintf("keys: invalid modifier %c in %s", ks[0], ks); + weprintf("keys: invalid modifier %c in %s", cur[0], ks); break; } - cur = ks + 2; + cur += 2; } key->keysyms[index] = XStringToKeysym(cur); -- cgit v1.2.3