Made key mappings mode-dependent
This commit is contained in:
		
							parent
							
								
									ac747c3f91
								
							
						
					
					
						commit
						f554cdf60e
					
				
							
								
								
									
										216
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										216
									
								
								main.c
									
									
									
									
									
								
							| @ -284,6 +284,117 @@ void on_keypress(XKeyEvent *kev) { | ||||
| 	XLookupString(kev, &key, 1, &ksym, NULL); | ||||
| 	changed = 0; | ||||
| 
 | ||||
| 	if (mode == MODE_NORMAL) { | ||||
| 		switch (ksym) { | ||||
| 			/* navigate image list */ | ||||
| 			case XK_n: | ||||
| 			case XK_space: | ||||
| 				if (fileidx + 1 < filecnt) { | ||||
| 					++fileidx; | ||||
| 					changed = load_image(); | ||||
| 				} | ||||
| 				break; | ||||
| 			case XK_p: | ||||
| 			case XK_BackSpace: | ||||
| 				if (fileidx > 0) { | ||||
| 					--fileidx; | ||||
| 					changed = load_image(); | ||||
| 				} | ||||
| 				break; | ||||
| 			case XK_bracketleft: | ||||
| 				if (fileidx != 0) { | ||||
| 					fileidx = MAX(0, fileidx - 10); | ||||
| 					changed = load_image(); | ||||
| 				} | ||||
| 				break; | ||||
| 			case XK_bracketright: | ||||
| 				if (fileidx != filecnt - 1) { | ||||
| 					fileidx = MIN(fileidx + 10, filecnt - 1); | ||||
| 					changed = load_image(); | ||||
| 				} | ||||
| 				break; | ||||
| 			case XK_g: | ||||
| 				if (fileidx != 0) { | ||||
| 					fileidx = 0; | ||||
| 					changed = load_image(); | ||||
| 				} | ||||
| 				break; | ||||
| 			case XK_G: | ||||
| 				if (fileidx != filecnt - 1) { | ||||
| 					fileidx = filecnt - 1; | ||||
| 					changed = load_image(); | ||||
| 				} | ||||
| 				break; | ||||
| 
 | ||||
| 			/* zooming */ | ||||
| 			case XK_plus: | ||||
| 			case XK_equal: | ||||
| 				changed = img_zoom_in(&img); | ||||
| 				break; | ||||
| 			case XK_minus: | ||||
| 				changed = img_zoom_out(&img); | ||||
| 				break; | ||||
| 			case XK_0: | ||||
| 				changed = img_zoom(&img, 1.0); | ||||
| 				break; | ||||
| 			case XK_w: | ||||
| 				if ((changed = img_fit_win(&img, &win))) | ||||
| 					img_center(&img, &win); | ||||
| 				break; | ||||
| 
 | ||||
| 			/* panning */ | ||||
| 			case XK_h: | ||||
| 			case XK_Left: | ||||
| 				changed = img_pan(&img, &win, PAN_LEFT); | ||||
| 				break; | ||||
| 			case XK_j: | ||||
| 			case XK_Down: | ||||
| 				changed = img_pan(&img, &win, PAN_DOWN); | ||||
| 				break; | ||||
| 			case XK_k: | ||||
| 			case XK_Up: | ||||
| 				changed = img_pan(&img, &win, PAN_UP); | ||||
| 				break; | ||||
| 			case XK_l: | ||||
| 			case XK_Right: | ||||
| 				changed = img_pan(&img, &win, PAN_RIGHT); | ||||
| 				break; | ||||
| 
 | ||||
| 			/* rotation */ | ||||
| 			case XK_less: | ||||
| 				img_rotate_left(&img, &win); | ||||
| 				changed = 1; | ||||
| 				break; | ||||
| 			case XK_greater: | ||||
| 				img_rotate_right(&img, &win); | ||||
| 				changed = 1; | ||||
| 				break; | ||||
| 
 | ||||
| 			/* control window */ | ||||
| 			case XK_W: | ||||
| 				x = win.x + img.x; | ||||
| 				y = win.y + img.y; | ||||
| 				w = img.w * img.zoom; | ||||
| 				h = img.h * img.zoom; | ||||
| 				if ((changed = win_moveresize(&win, x, y, w, h))) { | ||||
| 					img.x = x - win.x; | ||||
| 					img.y = y - win.y; | ||||
| 				} | ||||
| 				break; | ||||
| 
 | ||||
| 			/* miscellaneous */ | ||||
| 			case XK_a: | ||||
| 				img_toggle_antialias(&img); | ||||
| 				changed = 1; | ||||
| 				break; | ||||
| 			case XK_r: | ||||
| 				changed = load_image(); | ||||
| 				break; | ||||
| 		} | ||||
| 	} else { | ||||
| 	} | ||||
| 
 | ||||
| 	/* common key mappings */ | ||||
| 	switch (ksym) { | ||||
| 		case XK_Escape: | ||||
| 			cleanup(); | ||||
| @ -291,115 +402,10 @@ void on_keypress(XKeyEvent *kev) { | ||||
| 		case XK_q: | ||||
| 			cleanup(); | ||||
| 			exit(0); | ||||
| 
 | ||||
| 		/* navigate image list */ | ||||
| 		case XK_n: | ||||
| 		case XK_space: | ||||
| 			if (fileidx + 1 < filecnt) { | ||||
| 				++fileidx; | ||||
| 				changed = load_image(); | ||||
| 			} | ||||
| 			break; | ||||
| 		case XK_p: | ||||
| 		case XK_BackSpace: | ||||
| 			if (fileidx > 0) { | ||||
| 				--fileidx; | ||||
| 				changed = load_image(); | ||||
| 			} | ||||
| 			break; | ||||
| 		case XK_bracketleft: | ||||
| 			if (fileidx != 0) { | ||||
| 				fileidx = MAX(0, fileidx - 10); | ||||
| 				changed = load_image(); | ||||
| 			} | ||||
| 			break; | ||||
| 		case XK_bracketright: | ||||
| 			if (fileidx != filecnt - 1) { | ||||
| 				fileidx = MIN(fileidx + 10, filecnt - 1); | ||||
| 				changed = load_image(); | ||||
| 			} | ||||
| 			break; | ||||
| 		case XK_g: | ||||
| 			if (fileidx != 0) { | ||||
| 				fileidx = 0; | ||||
| 				changed = load_image(); | ||||
| 			} | ||||
| 			break; | ||||
| 		case XK_G: | ||||
| 			if (fileidx != filecnt - 1) { | ||||
| 				fileidx = filecnt - 1; | ||||
| 				changed = load_image(); | ||||
| 			} | ||||
| 			break; | ||||
| 
 | ||||
| 		/* zooming */ | ||||
| 		case XK_plus: | ||||
| 		case XK_equal: | ||||
| 			changed = img_zoom_in(&img); | ||||
| 			break; | ||||
| 		case XK_minus: | ||||
| 			changed = img_zoom_out(&img); | ||||
| 			break; | ||||
| 		case XK_0: | ||||
| 			changed = img_zoom(&img, 1.0); | ||||
| 			break; | ||||
| 		case XK_w: | ||||
| 			if ((changed = img_fit_win(&img, &win))) | ||||
| 				img_center(&img, &win); | ||||
| 			break; | ||||
| 
 | ||||
| 		/* panning */ | ||||
| 		case XK_h: | ||||
| 		case XK_Left: | ||||
| 			changed = img_pan(&img, &win, PAN_LEFT); | ||||
| 			break; | ||||
| 		case XK_j: | ||||
| 		case XK_Down: | ||||
| 			changed = img_pan(&img, &win, PAN_DOWN); | ||||
| 			break; | ||||
| 		case XK_k: | ||||
| 		case XK_Up: | ||||
| 			changed = img_pan(&img, &win, PAN_UP); | ||||
| 			break; | ||||
| 		case XK_l: | ||||
| 		case XK_Right: | ||||
| 			changed = img_pan(&img, &win, PAN_RIGHT); | ||||
| 			break; | ||||
| 
 | ||||
| 		/* rotation */ | ||||
| 		case XK_less: | ||||
| 			img_rotate_left(&img, &win); | ||||
| 			changed = 1; | ||||
| 			break; | ||||
| 		case XK_greater: | ||||
| 			img_rotate_right(&img, &win); | ||||
| 			changed = 1; | ||||
| 			break; | ||||
| 
 | ||||
| 		/* control window */ | ||||
| 		case XK_f: | ||||
| 			win_toggle_fullscreen(&win); | ||||
| 			/* render on next configurenotify */ | ||||
| 			break; | ||||
| 		case XK_W: | ||||
| 			x = win.x + img.x; | ||||
| 			y = win.y + img.y; | ||||
| 			w = img.w * img.zoom; | ||||
| 			h = img.h * img.zoom; | ||||
| 			if ((changed = win_moveresize(&win, x, y, w, h))) { | ||||
| 				img.x = x - win.x; | ||||
| 				img.y = y - win.y; | ||||
| 			} | ||||
| 			break; | ||||
| 
 | ||||
| 		/* miscellaneous */ | ||||
| 		case XK_a: | ||||
| 			img_toggle_antialias(&img); | ||||
| 			changed = 1; | ||||
| 			break; | ||||
| 		case XK_r: | ||||
| 			changed = load_image(); | ||||
| 			break; | ||||
| 	} | ||||
| 
 | ||||
| 	if (changed) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert