From 7722e6d67a8e6e6a1cb73115ee3abe4380e29e2a Mon Sep 17 00:00:00 2001 From: nirav Date: Fri, 7 Sep 2018 21:56:19 +0530 Subject: Added more key bindings, fixed file loading error --- input.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 5 deletions(-) (limited to 'input.c') diff --git a/input.c b/input.c index 1d460d9..1d21ef2 100644 --- a/input.c +++ b/input.c @@ -5,6 +5,7 @@ #include #define TIMEOUT 20 +#define SCROLLAMMOUNT 30 int grabbed = 0; gdouble start_x, start_y; @@ -37,9 +38,12 @@ void last() load_image(name); } -void handle_key_press(GdkEventKey key) +void handle_key_press(GdkEvent *event) { - switch (key.keyval) { + GdkModifierType state; + gdk_event_get_state(event, &state); + + switch (event->key.keyval) { case GDK_KEY_q: quit(); case GDK_KEY_w: @@ -57,13 +61,69 @@ void handle_key_press(GdkEventKey key) zoom(0); break; case GDK_KEY_n: - case GDK_KEY_j: - case GDK_KEY_Right: next(); break; case GDK_KEY_p: - case GDK_KEY_k: + prev(); + break; + case GDK_KEY_Up: + if (curr_scale_mod == fit || state & GDK_SHIFT_MASK) + prev(); + else + scroll_window(0, -SCROLLAMMOUNT); + break; + case GDK_KEY_Down: + if (curr_scale_mod == fit || state & GDK_SHIFT_MASK) + next(); + else + scroll_window(0, SCROLLAMMOUNT); + break; + case GDK_KEY_Right: + if (curr_scale_mod == fit || state & GDK_SHIFT_MASK) + next(); + else + scroll_window(SCROLLAMMOUNT, 0); + break; case GDK_KEY_Left: + if (curr_scale_mod == fit || state & GDK_SHIFT_MASK) + prev(); + else + scroll_window(-SCROLLAMMOUNT, 0); + break; + case GDK_KEY_j: + if (curr_scale_mod == fit) + next(); + else + scroll_window(0, SCROLLAMMOUNT); + break; + case GDK_KEY_J: + next(); + break; + case GDK_KEY_k: + if (curr_scale_mod == fit) + prev(); + else + scroll_window(0, -SCROLLAMMOUNT); + break; + case GDK_KEY_K: + prev(); + break; + case GDK_KEY_l: + if (curr_scale_mod == fit) + next(); + else + scroll_window(SCROLLAMMOUNT, 0); + break; + case GDK_KEY_L: + next(); + break; + case GDK_KEY_h: + if (curr_scale_mod == fit) + prev(); + else + scroll_window(-SCROLLAMMOUNT, 0); + break; + case GDK_KEY_H: prev(); break; case GDK_KEY_g: -- cgit v1.2.3