Commit 75e1e837 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Key actions can now also be bound to buttons. not vice versa, though

parent 3b825327
Loading
Loading
Loading
Loading
+134 −1
Original line number Diff line number Diff line
@@ -101,7 +101,6 @@ void init_buttonbindings(void)
	FILE *conf = NULL;
	int read = 0;

	feh_set_bb(&keys.reload, 0, 0);
	feh_set_bb(&keys.pan,    0, 1);
	feh_set_bb(&keys.zoom,   0, 2);
	feh_set_bb(&keys.menu,   0, 3);
@@ -137,6 +136,11 @@ void init_buttonbindings(void)
		if ((read == EOF) || (read == 0) || (line[0] == '#'))
			continue;

		/*
		 * Note: This isn't really good code. But it works, and since it only
		 * runs once for each button config line the runtime penalty compared to
		 * e.g. a hash table is negligible in this case.
		 */
		if (!strcmp(action, "reload"))
			cur_bb = &keys.reload;
		else if (!strcmp(action, "pan"))
@@ -157,6 +161,134 @@ void init_buttonbindings(void)
			cur_bb = &keys.zoom_in;
		else if (!strcmp(action, "zoom_out"))
			cur_bb = &keys.zoom_out;
		else if (!strcmp(action, "menu_close"))
			cur_bb = &keys.menu_close;
		else if (!strcmp(action, "menu_parent"))
			cur_bb = &keys.menu_parent;
		else if (!strcmp(action, "menu_down"))
			cur_bb = &keys.menu_down;
		else if (!strcmp(action, "menu_up"))
			cur_bb = &keys.menu_up;
		else if (!strcmp(action, "menu_child"))
			cur_bb = &keys.menu_child;
		else if (!strcmp(action, "menu_select"))
			cur_bb = &keys.menu_select;
		else if (!strcmp(action, "scroll_right"))
			cur_bb = &keys.scroll_right;
		else if (!strcmp(action, "scroll_left"))
			cur_bb = &keys.scroll_left;
		else if (!strcmp(action, "scroll_up"))
			cur_bb = &keys.scroll_up;
		else if (!strcmp(action, "scroll_down"))
			cur_bb = &keys.scroll_down;
		else if (!strcmp(action, "scroll_right_page"))
			cur_bb = &keys.scroll_right_page;
		else if (!strcmp(action, "scroll_left_page"))
			cur_bb = &keys.scroll_left_page;
		else if (!strcmp(action, "scroll_up_page"))
			cur_bb = &keys.scroll_up_page;
		else if (!strcmp(action, "scroll_down_page"))
			cur_bb = &keys.scroll_down_page;
		else if (!strcmp(action, "prev_img"))
			cur_bb = &keys.prev_img;
		else if (!strcmp(action, "next_img"))
			cur_bb = &keys.next_img;
		else if (!strcmp(action, "jump_back"))
			cur_bb = &keys.jump_back;
		else if (!strcmp(action, "jump_fwd"))
			cur_bb = &keys.jump_fwd;
		else if (!strcmp(action, "prev_dir"))
			cur_bb = &keys.prev_dir;
		else if (!strcmp(action, "next_dir"))
			cur_bb = &keys.next_dir;
		else if (!strcmp(action, "jump_random"))
			cur_bb = &keys.jump_random;
		else if (!strcmp(action, "quit"))
			cur_bb = &keys.quit;
		else if (!strcmp(action, "close"))
			cur_bb = &keys.close;
		else if (!strcmp(action, "remove"))
			cur_bb = &keys.remove;
		else if (!strcmp(action, "delete"))
			cur_bb = &keys.delete;
		else if (!strcmp(action, "jump_first"))
			cur_bb = &keys.jump_first;
		else if (!strcmp(action, "jump_last"))
			cur_bb = &keys.jump_last;
		else if (!strcmp(action, "action_0"))
			cur_bb = &keys.action_0;
		else if (!strcmp(action, "action_1"))
			cur_bb = &keys.action_1;
		else if (!strcmp(action, "action_2"))
			cur_bb = &keys.action_2;
		else if (!strcmp(action, "action_3"))
			cur_bb = &keys.action_3;
		else if (!strcmp(action, "action_4"))
			cur_bb = &keys.action_4;
		else if (!strcmp(action, "action_5"))
			cur_bb = &keys.action_5;
		else if (!strcmp(action, "action_6"))
			cur_bb = &keys.action_6;
		else if (!strcmp(action, "action_7"))
			cur_bb = &keys.action_7;
		else if (!strcmp(action, "action_8"))
			cur_bb = &keys.action_8;
		else if (!strcmp(action, "action_9"))
			cur_bb = &keys.action_9;
		else if (!strcmp(action, "zoom_in"))
			cur_bb = &keys.zoom_in;
		else if (!strcmp(action, "zoom_out"))
			cur_bb = &keys.zoom_out;
		else if (!strcmp(action, "zoom_default"))
			cur_bb = &keys.zoom_default;
		else if (!strcmp(action, "zoom_fit"))
			cur_bb = &keys.zoom_fit;
		else if (!strcmp(action, "size_to_image"))
			cur_bb = &keys.size_to_image;
		else if (!strcmp(action, "render"))
			cur_bb = &keys.render;
		else if (!strcmp(action, "toggle_actions"))
			cur_bb = &keys.toggle_actions;
		else if (!strcmp(action, "toggle_aliasing"))
			cur_bb = &keys.toggle_aliasing;
		else if (!strcmp(action, "toggle_filenames"))
			cur_bb = &keys.toggle_filenames;
#ifdef HAVE_LIBEXIF
		else if (!strcmp(action, "toggle_exif"))
			cur_bb = &keys.toggle_exif;
#endif
		else if (!strcmp(action, "toggle_info"))
			cur_bb = &keys.toggle_info;
		else if (!strcmp(action, "toggle_pointer"))
			cur_bb = &keys.toggle_pointer;
		else if (!strcmp(action, "toggle_caption"))
			cur_bb = &keys.toggle_caption;
		else if (!strcmp(action, "toggle_pause"))
			cur_bb = &keys.toggle_pause;
		else if (!strcmp(action, "toggle_menu"))
			cur_bb = &keys.toggle_menu;
		else if (!strcmp(action, "toggle_fullscreen"))
			cur_bb = &keys.toggle_fullscreen;
		else if (!strcmp(action, "reload_image"))
			cur_bb = &keys.reload_image;
		else if (!strcmp(action, "save_image"))
			cur_bb = &keys.save_image;
		else if (!strcmp(action, "save_filelist"))
			cur_bb = &keys.save_filelist;
		else if (!strcmp(action, "orient_1"))
			cur_bb = &keys.orient_1;
		else if (!strcmp(action, "orient_3"))
			cur_bb = &keys.orient_3;
		else if (!strcmp(action, "flip"))
			cur_bb = &keys.flip;
		else if (!strcmp(action, "mirror"))
			cur_bb = &keys.mirror;
		else if (!strcmp(action, "reload_minus"))
			cur_bb = &keys.reload_minus;
		else if (!strcmp(action, "reload_plus"))
			cur_bb = &keys.reload_plus;
		else if (!strcmp(action, "toggle_keep_vp"))
			cur_bb = &keys.toggle_keep_vp;
		else
			weprintf("buttons: Invalid action: %s", action);

@@ -323,6 +455,7 @@ static void feh_event_handle_ButtonPress(XEvent * ev)

	} else {
		D(("Received other ButtonPress event\n"));
		feh_event_handle_generic(winwid, state, NoSymbol, button);
	}
	return;
}
+1 −0
Original line number Diff line number Diff line
@@ -141,6 +141,7 @@ char *slideshow_create_name(feh_file * file, winwidget winwid);
void init_keyevents(void);
void init_buttonbindings(void);
void feh_event_handle_keypress(XEvent * ev);
void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysym, unsigned int button);
void feh_action_run(feh_file * file, char *action);
char *format_size(int size);
char *feh_printf(char *str, feh_file * file, winwidget winwid);
+82 −72
Original line number Diff line number Diff line
@@ -329,9 +329,10 @@ void init_keyevents(void) {
	fclose(conf);
}

static short feh_is_kp(fehkey *key, unsigned int sym, unsigned int state) {
static short feh_is_kp(fehkey *key, unsigned int state, unsigned int sym, unsigned int button) {
	int i;

	if (sym != NoSymbol) {
		for (i = 0; i < 3; i++) {
			if (
					(key->keysyms[i] == sym) &&
@@ -342,6 +343,11 @@ static short feh_is_kp(fehkey *key, unsigned int sym, unsigned int state) {
		}
		return 0;
	}
	if ((key->state == state) && (key->button == button)) {
		return 1;
	}
	return 0;
}

void feh_event_invoke_action(winwidget winwid, unsigned char action)
{
@@ -384,7 +390,6 @@ void feh_event_handle_keypress(XEvent * ev)
	KeySym keysym;
	XKeyEvent *kev;
	winwidget winwid = NULL;
	int curr_screen = 0;
	feh_menu_item *selected_item;
	feh_menu *selected_menu;

@@ -405,17 +410,17 @@ void feh_event_handle_keypress(XEvent * ev)
	/* menus are showing, so this is a menu control keypress */
	if (ev->xbutton.window == menu_cover) {
		selected_item = feh_menu_find_selected_r(menu_root, &selected_menu);
		if (feh_is_kp(&keys.menu_close, keysym, state))
		if (feh_is_kp(&keys.menu_close, state, keysym, 0))
			feh_menu_hide(menu_root, True);
		else if (feh_is_kp(&keys.menu_parent, keysym, state))
		else if (feh_is_kp(&keys.menu_parent, state, keysym, 0))
			feh_menu_select_parent(selected_menu);
		else if (feh_is_kp(&keys.menu_down, keysym, state))
		else if (feh_is_kp(&keys.menu_down, state, keysym, 0))
			feh_menu_select_next(selected_menu, selected_item);
		else if (feh_is_kp(&keys.menu_up, keysym, state))
		else if (feh_is_kp(&keys.menu_up, state, keysym, 0))
			feh_menu_select_prev(selected_menu, selected_item);
		else if (feh_is_kp(&keys.menu_child, keysym, state))
		else if (feh_is_kp(&keys.menu_child, state, keysym, 0))
			feh_menu_select_submenu(selected_menu);
		else if (feh_is_kp(&keys.menu_select, keysym, state))
		else if (feh_is_kp(&keys.menu_select, state, keysym, 0))
			feh_menu_item_activate(selected_menu, selected_item);
		return;
	}
@@ -474,131 +479,136 @@ void feh_event_handle_keypress(XEvent * ev)
		}
		return;
	}
	feh_event_handle_generic(winwid, state, keysym, 0);
}

void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysym, unsigned int button) {
	int curr_screen = 0;

	if (feh_is_kp(&keys.next_img, keysym, state)) {
	if (feh_is_kp(&keys.next_img, state, keysym, button)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_NEXT, 1);
		else if (winwid->type == WIN_TYPE_THUMBNAIL)
			feh_thumbnail_select_next(winwid, 1);
	}
	else if (feh_is_kp(&keys.prev_img, keysym, state)) {
	else if (feh_is_kp(&keys.prev_img, state, keysym, button)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_PREV, 1);
		else if (winwid->type == WIN_TYPE_THUMBNAIL)
			feh_thumbnail_select_prev(winwid, 1);
	}
	else if (feh_is_kp(&keys.scroll_right, keysym, state)) {
	else if (feh_is_kp(&keys.scroll_right, state, keysym, button)) {
		winwid->im_x -= opt.scroll_step;;
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 1);
	}
	else if (feh_is_kp(&keys.scroll_left, keysym, state)) {
	else if (feh_is_kp(&keys.scroll_left, state, keysym, button)) {
		winwid->im_x += opt.scroll_step;
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 1);
	}
	else if (feh_is_kp(&keys.scroll_down, keysym, state)) {
	else if (feh_is_kp(&keys.scroll_down, state, keysym, button)) {
		winwid->im_y -= opt.scroll_step;
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 1);
	}
	else if (feh_is_kp(&keys.scroll_up, keysym, state)) {
	else if (feh_is_kp(&keys.scroll_up, state, keysym, button)) {
		winwid->im_y += opt.scroll_step;
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 1);
	}
	else if (feh_is_kp(&keys.scroll_right_page, keysym, state)) {
	else if (feh_is_kp(&keys.scroll_right_page, state, keysym, button)) {
		winwid->im_x -= winwid->w;
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.scroll_left_page, keysym, state)) {
	else if (feh_is_kp(&keys.scroll_left_page, state, keysym, button)) {
		winwid->im_x += winwid->w;
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.scroll_down_page, keysym, state)) {
	else if (feh_is_kp(&keys.scroll_down_page, state, keysym, button)) {
		winwid->im_y -= winwid->h;
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.scroll_up_page, keysym, state)) {
	else if (feh_is_kp(&keys.scroll_up_page, state, keysym, button)) {
		winwid->im_y += winwid->h;
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.jump_back, keysym, state)) {
	else if (feh_is_kp(&keys.jump_back, state, keysym, button)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_JUMP_BACK, 1);
		else if (winwid->type == WIN_TYPE_THUMBNAIL)
			feh_thumbnail_select_prev(winwid, 10);
	}
	else if (feh_is_kp(&keys.jump_fwd, keysym, state)) {
	else if (feh_is_kp(&keys.jump_fwd, state, keysym, button)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_JUMP_FWD, 1);
		else if (winwid->type == WIN_TYPE_THUMBNAIL)
			feh_thumbnail_select_next(winwid, 10);
	}
	else if (feh_is_kp(&keys.next_dir, keysym, state)) {
	else if (feh_is_kp(&keys.next_dir, state, keysym, button)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_JUMP_NEXT_DIR, 1);
	}
	else if (feh_is_kp(&keys.prev_dir, keysym, state)) {
	else if (feh_is_kp(&keys.prev_dir, state, keysym, button)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_JUMP_PREV_DIR, 1);
	}
	else if (feh_is_kp(&keys.quit, keysym, state)) {
	else if (feh_is_kp(&keys.quit, state, keysym, button)) {
		winwidget_destroy_all();
	}
	else if (feh_is_kp(&keys.delete, keysym, state)) {
	else if (feh_is_kp(&keys.delete, state, keysym, button)) {
		if (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER)
			feh_thumbnail_mark_removed(FEH_FILE(winwid->file->data), 1);
		feh_filelist_image_remove(winwid, 1);
	}
	else if (feh_is_kp(&keys.remove, keysym, state)) {
	else if (feh_is_kp(&keys.remove, state, keysym, button)) {
		if (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER)
			feh_thumbnail_mark_removed(FEH_FILE(winwid->file->data), 0);
		feh_filelist_image_remove(winwid, 0);
	}
	else if (feh_is_kp(&keys.jump_first, keysym, state)) {
	else if (feh_is_kp(&keys.jump_first, state, keysym, button)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_FIRST, 1);
	}
	else if (feh_is_kp(&keys.jump_last, keysym, state)) {
	else if (feh_is_kp(&keys.jump_last, state, keysym, button)) {
		if (opt.slideshow)
			slideshow_change_image(winwid, SLIDE_LAST, 1);
	}
	else if (feh_is_kp(&keys.action_0, keysym, state)) {
	else if (feh_is_kp(&keys.action_0, state, keysym, button)) {
		feh_event_invoke_action(winwid, 0);
	}
	else if (feh_is_kp(&keys.action_1, keysym, state)) {
	else if (feh_is_kp(&keys.action_1, state, keysym, button)) {
		feh_event_invoke_action(winwid, 1);
	}
	else if (feh_is_kp(&keys.action_2, keysym, state)) {
	else if (feh_is_kp(&keys.action_2, state, keysym, button)) {
		feh_event_invoke_action(winwid, 2);
	}
	else if (feh_is_kp(&keys.action_3, keysym, state)) {
	else if (feh_is_kp(&keys.action_3, state, keysym, button)) {
		feh_event_invoke_action(winwid, 3);
	}
	else if (feh_is_kp(&keys.action_4, keysym, state)) {
	else if (feh_is_kp(&keys.action_4, state, keysym, button)) {
		feh_event_invoke_action(winwid, 4);
	}
	else if (feh_is_kp(&keys.action_5, keysym, state)) {
	else if (feh_is_kp(&keys.action_5, state, keysym, button)) {
		feh_event_invoke_action(winwid, 5);
	}
	else if (feh_is_kp(&keys.action_6, keysym, state)) {
	else if (feh_is_kp(&keys.action_6, state, keysym, button)) {
		feh_event_invoke_action(winwid, 6);
	}
	else if (feh_is_kp(&keys.action_7, keysym, state)) {
	else if (feh_is_kp(&keys.action_7, state, keysym, button)) {
		feh_event_invoke_action(winwid, 7);
	}
	else if (feh_is_kp(&keys.action_8, keysym, state)) {
	else if (feh_is_kp(&keys.action_8, state, keysym, button)) {
		feh_event_invoke_action(winwid, 8);
	}
	else if (feh_is_kp(&keys.action_9, keysym, state)) {
	else if (feh_is_kp(&keys.action_9, state, keysym, button)) {
		feh_event_invoke_action(winwid, 9);
	}
	else if (feh_is_kp(&keys.zoom_in, keysym, state)) {
	else if (feh_is_kp(&keys.zoom_in, state, keysym, button)) {
		winwid->old_zoom = winwid->zoom;
		winwid->zoom = winwid->zoom * 1.25;

@@ -612,7 +622,7 @@ void feh_event_handle_keypress(XEvent * ev)
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.zoom_out, keysym, state)) {
	else if (feh_is_kp(&keys.zoom_out, state, keysym, button)) {
		winwid->old_zoom = winwid->zoom;
		winwid->zoom = winwid->zoom * 0.80;

@@ -626,56 +636,56 @@ void feh_event_handle_keypress(XEvent * ev)
		winwidget_sanitise_offsets(winwid);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.zoom_default, keysym, state)) {
	else if (feh_is_kp(&keys.zoom_default, state, keysym, button)) {
		winwid->zoom = 1.0;
		winwidget_center_image(winwid);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.zoom_fit, keysym, state)) {
	else if (feh_is_kp(&keys.zoom_fit, state, keysym, button)) {
		feh_calc_needed_zoom(&winwid->zoom, winwid->im_w, winwid->im_h, winwid->w, winwid->h);
		winwidget_center_image(winwid);
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.render, keysym, state)) {
	else if (feh_is_kp(&keys.render, state, keysym, button)) {
		if (winwid->type == WIN_TYPE_THUMBNAIL)
			feh_thumbnail_show_selected();
		else
			winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.toggle_actions, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_actions, state, keysym, button)) {
		opt.draw_actions = !opt.draw_actions;
		winwidget_rerender_all(0);
	}
	else if (feh_is_kp(&keys.toggle_aliasing, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_aliasing, state, keysym, button)) {
		opt.force_aliasing = !opt.force_aliasing;
		winwid->force_aliasing = !winwid->force_aliasing;
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.toggle_filenames, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_filenames, state, keysym, button)) {
		opt.draw_filename = !opt.draw_filename;
		winwidget_rerender_all(0);
	}
#ifdef HAVE_LIBEXIF
	else if (feh_is_kp(&keys.toggle_exif, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_exif, state, keysym, button)) {
		opt.draw_exif = !opt.draw_exif;
		winwidget_rerender_all(0);
	}
#endif		
	else if (feh_is_kp(&keys.toggle_info, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_info, state, keysym, button)) {
		opt.draw_info = !opt.draw_info;
		winwidget_rerender_all(0);
	}
	else if (feh_is_kp(&keys.toggle_pointer, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_pointer, state, keysym, button)) {
		winwidget_set_pointer(winwid, opt.hide_pointer);
		opt.hide_pointer = !opt.hide_pointer;
	}
	else if (feh_is_kp(&keys.jump_random, keysym, state)) {
	else if (feh_is_kp(&keys.jump_random, state, keysym, button)) {
		if (winwid->type == WIN_TYPE_THUMBNAIL)
			feh_thumbnail_select_next(winwid, rand() % (filelist_len - 1));
		else
			slideshow_change_image(winwid, SLIDE_RAND, 1);
	}
	else if (feh_is_kp(&keys.toggle_caption, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_caption, state, keysym, button)) {
		if (opt.caption_path) {
			/*
			 * editing captions in slideshow mode does not make any sense
@@ -687,44 +697,44 @@ void feh_event_handle_keypress(XEvent * ev)
		}
		winwidget_render_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.reload_image, keysym, state)) {
	else if (feh_is_kp(&keys.reload_image, state, keysym, button)) {
		feh_reload_image(winwid, 0, 0);
	}
	else if (feh_is_kp(&keys.toggle_pause, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_pause, state, keysym, button)) {
		slideshow_pause_toggle(winwid);
	}
	else if (feh_is_kp(&keys.save_image, keysym, state)) {
	else if (feh_is_kp(&keys.save_image, state, keysym, button)) {
		slideshow_save_image(winwid);
	}
	else if (feh_is_kp(&keys.save_filelist, keysym, state)) {
	else if (feh_is_kp(&keys.save_filelist, state, keysym, button)) {
		if ((winwid->type == WIN_TYPE_THUMBNAIL)
				|| (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER))
			weprintf("Filelist saving is not supported in thumbnail mode");
		else
			feh_save_filelist();
	}
	else if (feh_is_kp(&keys.size_to_image, keysym, state)) {
	else if (feh_is_kp(&keys.size_to_image, state, keysym, button)) {
		winwidget_size_to_image(winwid);
	}
	else if (feh_is_kp(&keys.toggle_menu, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_menu, state, keysym, button)) {
		winwidget_show_menu(winwid);
	}
	else if (feh_is_kp(&keys.close, keysym, state)) {
	else if (feh_is_kp(&keys.close, state, keysym, button)) {
		winwidget_destroy(winwid);
	}
	else if (feh_is_kp(&keys.orient_1, keysym, state)) {
	else if (feh_is_kp(&keys.orient_1, state, keysym, button)) {
		feh_edit_inplace(winwid, 1);
	}
	else if (feh_is_kp(&keys.orient_3, keysym, state)) {
	else if (feh_is_kp(&keys.orient_3, state, keysym, button)) {
		feh_edit_inplace(winwid, 3);
	}
	else if (feh_is_kp(&keys.flip, keysym, state)) {
	else if (feh_is_kp(&keys.flip, state, keysym, button)) {
		feh_edit_inplace(winwid, INPLACE_EDIT_FLIP);
	}
	else if (feh_is_kp(&keys.mirror, keysym, state)) {
	else if (feh_is_kp(&keys.mirror, state, keysym, button)) {
		feh_edit_inplace(winwid, INPLACE_EDIT_MIRROR);
	}
	else if (feh_is_kp(&keys.toggle_fullscreen, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_fullscreen, state, keysym, button)) {
#ifdef HAVE_LIBXINERAMA
		if (opt.xinerama && xinerama_screens) {
			int i, rect[4];
@@ -760,19 +770,19 @@ void feh_event_handle_keypress(XEvent * ev)
		}
#endif				/* HAVE_LIBXINERAMA */
	}
	else if (feh_is_kp(&keys.reload_plus, keysym, state)){ 
	else if (feh_is_kp(&keys.reload_plus, state, keysym, button)){ 
		if (opt.reload < SLIDESHOW_RELOAD_MAX)
			opt.reload++;
		else if (opt.verbose)
			weprintf("Cannot set RELOAD higher than %f seconds.", opt.reload);
	}
	else if (feh_is_kp(&keys.reload_minus, keysym, state)) {
	else if (feh_is_kp(&keys.reload_minus, state, keysym, button)) {
		if (opt.reload > 1)
			opt.reload--;
		else if (opt.verbose)
			weprintf("Cannot set RELOAD lower than 1 second.");
	}
	else if (feh_is_kp(&keys.toggle_keep_vp, keysym, state)) {
	else if (feh_is_kp(&keys.toggle_keep_vp, state, keysym, button)) {
		opt.keep_zoom_vp = !opt.keep_zoom_vp;
	}
	return;